第三部分 IDEA创建并运行项目

可以创建一个maven,几行代码就解决了导入依赖,但是我的电脑不知道哪里出现了问题,IDEA重装,jdk重装,maven重装,都无法解决问题,找了3天,还是没有解决问题。最后只能采用手动导入包方法。看到最后项目的成功连接运行,真的留下幸福的“泪水”。

公网和私网问题

如果是外部访问就需要公网,所以在第二部分,windows的域名映射就是填公网

这边需要改一个服务器上的节点映射,随便给自己的服务器服务器改一个名字,默认是复杂的一长串字符

修改主机名

sudo vim /etc/hostname

我这边修改成 hbase

节点映射

sudo vim /etc/hosts

在文件中加入一行,因为这边是内部访问所以填写私网

私网 主机名(比如我这边的hbase)

重启服务器生效

参考链接

在windows添加地址映射

修改hosts

位置:C:WindowsSystem32driversetchosts

公网 主机名(比如我这边的hbase)

添加系统变量

点击我的电脑->属性->高级系统设置->环境变量->添加一个系统变量HADOOP_USER_HOME

image-20200627122508832

重启电脑生效

运行项目

新建项目

在idea新建一个java项目,之后一路默认就OK了。

导包

File->Project Structure ->Libraries->+->java

导入技巧

选中第一个jar,之后拉滚动条到最后一个jar,按住shift点击最后一个jar包,即可全部选中

导入的包

注意:

​ 因为是在windows上手动导入,所以需要在windows上也有对应hadoop和hbase

​ 只是导入罗列目录下的jar包,不包括目录下的目录

image-20200704104845218

  • 导入hdfs需要的包

(1)“/usr/local/hadoop/share/hadoop/common”目录下的所有JAR包。
(2)“/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包;
(3)“/usr/local/hadoop/share/hadoop/hdfs”目录下的所有JAR包。
(4)“/usr/local/hadoop/share/hadoop/hdfs/lib”目录下的所有JAR包。

  • 导入hbase需要的包

(1)进入到“/usr/local/hbase/lib”目录,选中该目录下的所有jar文件。

(2)进入到“/usr/local/hbase/lib/client-facing-thirdparty”目录下的所有jar包

  • 导入mapreduce需要的包

(1)进入“/usr/local/hadoop/share/hadoop/mapreduce”目录下的所有JAR包

(1)进入”/usr/local/hadoop/share/hadoop/mapreduce/lib“目录下的所有JAR包

之后点击apply,再点击ok

载入配置文件

传输配置文件

利用xftp从服务器中传输3个配置文件到本地

  1. /usr/local/hadoop/etc/hadoop/core-site.xml
  2. /usr/local/hadoop/etc/hadoop/hdfs-site.xml
  3. /usr/local/hbase/conf/hbase-site.xml

确保你在第二部分中将配置文件core-sitehbase-site修改好了

导入配置文件

新建一个resources包,将三个配置文件复制进去

image-20200704111645295

右键点击resources,修改成Test Resources Root

image-20200704111822245

接下来,就可以运行项目了

如果你遇到报错HADOOP_HOME and hadoop.home.dir are unset

报错参考链接

简单的步骤

  1. 在hadoop/bin文件中添加对应的winutils.exe和hadoop.dll

  2. 添加HADOOP_HOME和修改Path

  3. 重启电脑

如果你遇到报错路径 not exists

可能是你的user/root不存在或者端口没有开放
开放阿里云所有端口

测试代码——hdfs新建文件夹

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class testMkdir {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration(true);
        FileSystem fs = FileSystem.get(conf);
        //user/root 上新建一个djtest1文件夹,保证/user/root已经存在了
        Path dir = new Path("/user/root/djtest1");
        if(fs.exists(dir)){
            System.out.println("文件已经存在");
            fs.delete(dir,true);
        }
        //通过web网页看是否存在或者是shell命令
        fs.mkdirs(dir);
        fs.close();
    }
}

测试结果

image-20200704113335472

image-20200704113308561

Hbase知识理解和JAVAAPI学习

行键,列族,字段

image-20200627093132298

视频链接

主要看JavaAPI和过滤器

原文地址:https://www.cnblogs.com/10134dz/p/13234358.html