第三部分 IDEA创建并运行项目
可以创建一个maven,几行代码就解决了导入依赖,但是我的电脑不知道哪里出现了问题,IDEA重装,jdk重装,maven重装,都无法解决问题,找了3天,还是没有解决问题。最后只能采用手动导入包方法。看到最后项目的成功连接运行,真的留下幸福的“泪水”。
公网和私网问题
如果是外部访问
就需要公网,所以在第二部分,windows的域名映射就是填公网
这边需要改一个服务器上的节点映射,随便给自己的服务器服务器改一个名字,默认是复杂的一长串字符
修改主机名
sudo vim /etc/hostname
我这边修改成 hbase
节点映射
sudo vim /etc/hosts
在文件中加入一行,因为这边是内部访问
所以填写私网
私网 主机名(比如我这边的hbase)
重启服务器生效
在windows添加地址映射
修改hosts
位置:C:\Windows\System32\drivers\etc\hosts
公网 主机名(比如我这边的hbase)
添加系统变量
点击我的电脑->属性->高级系统设置->环境变量->添加一个系统变量HADOOP_USER_HOME
重启电脑生效
运行项目
新建项目
在idea新建一个java项目,之后一路默认就OK了。
导包
File
->Project Structure
->Libraries
->+->java
导入技巧
选中第一个jar,之后拉滚动条到最后一个jar,按住shift点击最后一个jar包,即可全部选中
导入的包
注意:
因为是在windows上手动导入,所以需要在windows上也有对应hadoop和hbase
只是导入罗列目录下的jar包,不包括目录下的目录
- 导入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个配置文件到本地
- /usr/local/hadoop/etc/hadoop/core-site.xml
- /usr/local/hadoop/etc/hadoop/hdfs-site.xml
- /usr/local/hbase/conf/hbase-site.xml
确保你在第二部分中将配置文件core-site
和hbase-site
修改好了
导入配置文件
新建一个resources包,将三个配置文件复制进去
右键点击resources
,修改成Test Resources Root
接下来,就可以运行项目了
如果你遇到报错HADOOP_HOME and hadoop.home.dir are unset
简单的步骤
-
在hadoop/bin文件中添加对应的winutils.exe和hadoop.dll
-
添加HADOOP_HOME和修改Path
-
重启电脑
如果你遇到报错路径 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();
}
}
测试结果
Hbase知识理解和JAVAAPI学习
行键,列族,字段
主要看JavaAPI和过滤器