Hadoop-3.0.0体验
前言
距离Hadoop 3.0.0 GA版的发布已经过去好多天了,前两天太忙,今天终于有点时间,配置了下Hadoop 3.0.0单机版。这篇文章就来介绍一下Hadoop 3.0.0相比Hadoop 2.7.x的一些比较明显的变化,以及部署过程中需要注意的一些地方。另外,本文含有大量图片,流量党慎入!
从2.x到3.x一个大版本的跨度,修改的地方还是很多的,比如jdk要求从7升级到了8、一些shell脚本重写、支持部署2个以上的NameNode节点、服务端口更改等等,具体的功能改进我就不一一说了,官网上都有:Hadoop3.0介绍
下面是Hadoop从2.7.x -> 3.0.0部分服务端口的调整情况,具体可以去HDFS-9427和HADOOP-12811查看:
Namenode ports: 50470 –> 9871, 50070 –> 9870, 8020 –> 9820
Secondary NN ports: 50091 –> 9869, 50090 –> 9868
Datanode ports: 50020 –> 9867, 50010 –> 9866, 50475 –> 9865, 50075 –> 9864
部署包bin目录文件:
sbin目录文件:
配置文件目录与2.7.3对比(左边2.7.3,右边3.0.0):
Hadoop3.0单机版不靠谱配置
注意标题,不靠谱配置!!!
部署过程也不细说了,跟之前差不多,配置文件名称除了节点配置文件由slaves改为了workers,其他都没变。这里就直接放基本配置信息了:
- hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_131
- core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop3/</value>
</property>
</configuration> - hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration> - mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration> - yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration> - workers–这个配置文件在Hadoop 2.7.x版本的名字是slaves
master1
- 系统环境变量配置
export HADOOP_PREFIX=/usr/hadoop/hadoop-3.0.0
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
启动
配置完了,那就启动吧,启动命令跟之前一样:start-dfs.sh
哎,有警告,原来是HADOOP_PREFIX不让用了,那就按照提示改成HADOOP_HOME:
重新配置环境变量如下:
export HADOOP_HOME=/usr/hadoop/hadoop-3.0.0 |
刷新环境变量后再次启动Hadoop:
报错!!!根据错误信息,发现必须要为这些命令指定一个用户。
看了一下Hadoop的配置文件,发现hadoop-env.sh文件中最后面有一段话:
# To prevent accidents, shell commands be (superficially) locked |
即需要在hadoop-env.sh文件中新增3行配置:
export HDFS_NAMENODE_USER=root |
如图所示:
再次执行start-dfs.sh,启动成功:
然后启动Yarn: start-yarn.sh
报错,所以还需要指定YARN_RESOURCEMANAGER_USER和YARN_NODEMANAGER_USER这两个用户,继续在hadoop-env.sh文件中新增2行配置:
export YARN_RESOURCEMANAGER_USER=root |
如图所示:
再次启动,成功:
所以hadoop-env.sh文件最终需要配置的是:
export JAVA_HOME=/usr/java/jdk1.8.0_131 |
WEB页面
由于端口变化,所以NameNode WEB UI 地址为:http://namenode_ip_or_hostname:9870
Overview页面:
Datanodes页面:
Explorer页面(这个页面变化还是挺大的):
可以直接对文件或者文件夹进行删除操作。
地址栏右边3个图标作用分别是:
- 创建文件夹

- 上传文件

- 剪切文件
勾选你要进行剪切的文件,点击Cut,网页会提示你操作文件或文件夹的个数,然后找到目标位置,点击Paste即可:
网页上还可以进行权限、用户、用户组、文件副本数量的设置,不过默认的网页用户是dr.who,没有权限进行用户与用户组的设置:
- 设置权限

- 修改用户


- 修改用户组

- 修改副本数

由于我这就一个节点,就没有测试这一项。
点击文件,还可以直接对文件内容进行预览,可以分别查看前32K和后32K:
然后就是Datanode WEB UI 地址了:http://datanode_ip_or_hostname:9864
这部分没啥好说的。
Wordcount
找个文件进行Wordcount测试:# yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount /staroon/input/ /staroon/output/
日志会有提示:
2017-12-22 11:15:40,838 INFO conf.Configuration: resource-types.xml not found
2017-12-22 11:15:40,839 INFO resource.ResourceUtils: Unable to find ‘resource-types.xml’.
不过不影响Job的执行。关于resource-types.xml详细信息,可以去官网查看:
https://hadoop.apache.org/docs/r3.0.0/hadoop-yarn/hadoop-yarn-site/ResourceModel.html
计算结果可以直接在网页上看,可以说是非常方便了:

总结
以上就是对Hadoop3.0.0进行的很小一部分表面上的体验,但还是给了我焕然一新的感觉,安全性、易用性方面都有了很大的提升,尤其是Namenode网页端,上传、移动、删除、预览文件,修改权限等都可以直接在网页上进行,简直太人性化。