Hadoop-3.0.0体验

Author Avatar
山小杰 12月 22, 2017
  • 在其它设备中阅读本文章

前言

距离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-9427HADOOP-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目录文件:
bin
sbin目录文件:
sbin
配置文件目录与2.7.3对比(左边2.7.3,右边3.0.0):
conf

Hadoop3.0单机版不靠谱配置

注意标题,不靠谱配置!!!

部署过程也不细说了,跟之前差不多,配置文件名称除了节点配置文件slaves改为了workers,其他都没变。这里就直接放基本配置信息了:

  1. hadoop-env.sh
    export JAVA_HOME=/usr/java/jdk1.8.0_131
    
  2. 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>
    
  3. hdfs-site.xml
    <configuration>
    <property>
     <name>dfs.replication</name>
     <value>1</value>
    </property>
    <property>
     <name>dfs.permissions</name>
     <value>false</value>
    </property>
    </configuration>
    
  4. mapred-site.xml
    <configuration>
    <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
    </property>
    </configuration>
    
  5. 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>
    
  6. workers–这个配置文件在Hadoop 2.7.x版本的名字是slaves
    master1
    
  7. 系统环境变量配置
    export HADOOP_PREFIX=/usr/hadoop/hadoop-3.0.0
    export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
    

启动

配置完了,那就启动吧,启动命令跟之前一样:start-dfs.sh
profile
哎,有警告,原来是HADOOP_PREFIX不让用了,那就按照提示改成HADOOP_HOME
重新配置环境变量如下:

export HADOOP_HOME=/usr/hadoop/hadoop-3.0.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

刷新环境变量后再次启动Hadoop:
dfs-user
报错!!!根据错误信息,发现必须要为这些命令指定一个用户。

看了一下Hadoop的配置文件,发现hadoop-env.sh文件中最后面有一段话:

# To prevent accidents, shell commands be (superficially) locked
# to only allow certain users to execute certain subcommands.
# It uses the format of (command)_(subcommand)_USER.

即需要在hadoop-env.sh文件中新增3行配置:

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

如图所示:
set-dfs-user

再次执行start-dfs.sh,启动成功:
start-dfs

然后启动Yarn: start-yarn.sh
yarn-user
报错,所以还需要指定YARN_RESOURCEMANAGER_USERYARN_NODEMANAGER_USER这两个用户,继续在hadoop-env.sh文件中新增2行配置:

export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

如图所示:
set-yarn-user
再次启动,成功:
start-yarn

所以hadoop-env.sh文件最终需要配置的是:

export JAVA_HOME=/usr/java/jdk1.8.0_131

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

WEB页面

由于端口变化,所以NameNode WEB UI 地址为:http://namenode_ip_or_hostname:9870

Overview页面:
overview

Datanodes页面:
datanodes

Explorer页面(这个页面变化还是挺大的):
explorer
可以直接对文件或者文件夹进行删除操作。
地址栏右边3个图标作用分别是:

  • 创建文件夹
    create-dir
  • 上传文件
    upload-file
  • 剪切文件
    勾选你要进行剪切的文件,点击Cut,网页会提示你操作文件或文件夹的个数,然后找到目标位置,点击Paste即可:
    move-file

网页上还可以进行权限、用户、用户组、文件副本数量的设置,不过默认的网页用户是dr.who,没有权限进行用户与用户组的设置:

  • 设置权限
    set-permission
  • 修改用户
    set-file-user1
    set-file-user2
  • 修改用户组
    set-group
  • 修改副本数
    set-rep
    由于我这就一个节点,就没有测试这一项。

点击文件,还可以直接对文件内容进行预览,可以分别查看前32K和后32K:
文件预览

然后就是Datanode WEB UI 地址了:http://datanode_ip_or_hostname:9864
datanode-web
这部分没啥好说的。

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

计算结果可以直接在网页上看,可以说是非常方便了:
job1
job2

总结

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