hadoop系列之伪分布式环境搭建及测试验证

Hadoop2.x 伪分布式环境搭建及测试验证

作者:Dennis 日期:2018-08-09

 

前置条件:

Linux 虚拟机一台,版本为 CentOS 7.4,假设 IP 地址为 192.168.159.181,并修改如下:

  1. 修改/etc/hostname 的内容为 hadoop01 说明:修改了主机名之后需要重启才能生效。
  2. 修改/etc/hosts 的内容为

    备注:配置这里主要是想通过域名或者IP地址找到相应的机器

127.0.0.1 localhost

192.168.159.181 hadoop01

  1. 已安装好 Oracle JDK,且 JAVA_HOME 值为/usr/java/jdk1.8.0_171-amd64/jre。安装过程可参考博客: https://blog.csdn.net/gobitan/article/details/80993354 CentOS7_64 位操作系统模板搭建

 

第一步:Hadoop 安装包下载

可以在官网 https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz

上传安装包到/root 目录

 

第二步:解压 hadoop 包

[root@centos7 ~]# cd /opt

[root@centos7 opt]# tar zxf /root/hadoop-2.7.3.tar.gz

[root@centos7 opt]# cd hadoop-2.7.3/

 

第三步:配置Hadoop

  1. 配置 hadoop-env.sh

编辑 etc/hadoop/hadoop-env.sh,修改 JAVA_HOME 的值如下: # The java implementation to use.

export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64/jre

备注:这样做是避免,Hadoop配置文件中读不到$JAVA_HOME而报错。

 

  1. 配置core-site.xml

  备注:hadoop公共模块基本配置文件

编辑 etc/hadoop/core-site.xml,修改如下:

fs.defaultFS

hdfs://localhost:9000

 

hadoop.tmp.dir

 

/opt/hadoop-2.7.3/hadoop-tmp

说明:hadoop.tmp.dir 默认值为"/tmp/hadoop-${user.name}"。Linux 操作系统重启后,这个目录会被清空,这可能导致数据丢失,因此需要修改。

 

  1. 配置 hdfs-site.xml

  备注:HDFS系统的配置文件

编辑 etc/hadoop/hdfs-site.xml,修改如下:

dfs.replication

1

 

  1. 配置 SSH 无密登录本机

在执行启动脚本的时候,系统会提示要输入密码验证,它其实是一个远程登录启动脚本的机制。

通过SSH远程到你配置的节点上去启动进程。即便你的节点是在本地,它也是一样的方式。

因此当节点N多的时候,要N次以上输入密码验证。为了解决这个问题,可以配置SSH免登录,

 

[root@centos7 hadoop-2.7.3]# ssh-keygen -t rsa

[root@centos7 hadoop-2.7.3]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

执行如下命令验证 SSH 配置

[root@centos7 hadoop-2.7.3]# ssh localhost

 

这个过程不需要输入密码了,但之前是需要的。

 

第四步:格式化HDFS 文件系统

[root@centos7 hadoop-2.7.3]# bin/hdfs namenode -format  如果执行成功,会在日志末尾看到格式化成功的提示,如下:

INFO common.Storage: Storage directory /opt/hadoop-2.7.3/hadoop-tmp/dfs/name has been successfully formatted.

 

第五步:启动HDFS 的NameNode 节点和 DataNode 节点

[root@centos7 hadoop-2.7.3]# sbin/start-dfs.sh

Starting namenodes on [centos7]

centos7: starting namenode, logging to /opt/hadoop-2.7.3/logs/hadoop-root-namenode- centos7.out

localhost: starting datanode, logging to /opt/hadoop-2.7.3/logs/hadoop-root-datanode- centos7.out

Starting secondary namenodes [0.0.0.0]

0.0.0.0: starting secondarynamenode, logging to /opt/hadoop-2.7.3/logs/hadoop-root- secondarynamenode-centos7.out

 

查看启动的进程

[root@centos7 hadoop-2.7.3]# jps

11301 SecondaryNameNode

11175 DataNode

11419 Jps

11087 NameNode [root@centos7 hadoop-2.7.3]#

上面的启动命令启动了 HDFS 的管理节点 NameNode 和数据节点 DataNode,以及

NameNode 的辅助节点,即 SecondaryNameNode。

 

第六步:查看HDFS 的NameNode 的Web 界面

http://192.168.159.181:50070

 

第七步:创建HDFS 目录,以便执行 MapReduce 任务

[root@centos7 hadoop-2.7.3]# bin/hdfs dfs -mkdir -p /user/root 注意:这里的 root,如果你是其他用户就换成相应的用户名。

 

第八步:拷贝输入文件到分布式文件系统

[root@hadoop01 hadoop-2.7.3]# bin/hdfs dfs -put etc/hadoop input

这里举例拷贝et/hadoop 目录下的文件到HDFS 中。

 

查看拷贝结果 

[root@hadoop01 hadoop-2.7.3] # bin/hdfs dfs -ls input

 

这个命令也可以:bin/hadoop fs -ls input     

 

第九步:运行Hadopo 自带的WordCount 例子

[root@centos7 hadoop-2.7.3]# bin/hadoop jar share/hadoop/mapreduce/hadoop- mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'

说明:

  1. 这种模式是在本地运行 MapReduce 任务,如果需要在 YARN 上运行,请看本文后面的

YARN 配置;

  1. 这个例子是计算某个目录下所有文件中包含某个字符串的次数,这里是匹配'dfs[a-z.]+' 的次数;
  2. 中间有报如下错误, 可忽略。"18/05/14 00:03:54 WARN io.ReadaheadPool: Failed readahead on ifile EBADF: Bad file descriptor"

 

第十步:将结果从分布式文件系统拷贝到本地

[root@centos7 hadoop-2.7.3]# bin/hdfs dfs -get output output [root@centos7 hadoop-2.7.3]# cat output/*

6 dfs.audit.logger

4 dfs.class

3 dfs.server.namenode.

2 dfs.period

2 dfs.audit.log.maxfilesize

 

2 dfs.audit.log.maxbackupindex

1 dfsmetrics.log

1 dfsadmin

1 dfs.servers

1 dfs.replication

1 dfs.file

 

或者直接查看

[root@centos7 hadoop-2.7.3]# bin/hdfs dfs -cat output/*

这里可以看到每个包含dfs 的关键词在 etc/hadoop 的所有文件中出现的次数的统计。

 

第十一步:验证结果

用 linux 命令来统计一下"dfs.class"的次数,结果为 4 次,与 mapreduce 统计的一致。[root@hadoop01 hadoop-2.7.3]# grep -r 'dfs.class' etc/hadoop/

etc/hadoop/hadoop- metrics.properties:dfs.class=org.apache.hadoop.metrics.spi.NullContext etc/hadoop/hadoop- metrics.properties:#dfs.class=org.apache.hadoop.metrics.file.FileContext etc/hadoop/hadoop-metrics.properties:# dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext etc/hadoop/hadoop-metrics.properties:# dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext31 [root@hadoop01 hadoop-2.7.3]#

 

另外,还可以通过YARN 来提交 job 任务。步骤如下:

第十二步:配置mapred-site.xml

[root@centos7 hadoop-2.7.3]# 

mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

编辑 etc/hadoop/mapred-site.xml,修改如下:

备注:指定运行mapreduce的环境是yarn

mapreduce.framework.name

yarn

 

第十三步:配置yarn-site.xml

编辑 etc/hadoop/yarn-site.xml,修改如下:

 

yarn.nodemanager.aux-services

mapreduce_shuffle

 

第十四步:启动 YARN 的两个节点ResourceManager 和NodeManager 注意:执行下面的命令之前,先确保已执行"sbin/start-dfs.sh"。[root@centos7 hadoop-2.7.3]# sbin/start-yarn.sh

starting yarn daemons

starting resourcemanager, logging to /opt/hadoop-2.7.3/logs/yarn-root-resourcemanager- centos7.out

localhost: starting nodemanager, logging to /opt/hadoop-2.7.3/logs/yarn-root- nodemanager-centos7.out

 

第十五步:启动 historyserver

Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的,我们可以通过下面的命令来启动Hadoop历史服务器

[root@centos7 hadoop-2.7.3]# sbin/mr-jobhistory-daemon.sh start historyserver

starting historyserver, logging to /opt/hadoop-2.7.3/logs/mapred-root-historyserver- centos7.out

 

确认进程已启动

[root@centos7 hadoop-2.7.3]# jps 1670 ResourceManager

 

1272 NameNode

1769 NodeManager

1370 DataNode

2234 Jps

1501 SecondaryNameNode

1838 JobHistoryServer [root@centos7 hadoop-2.7.3]#

 

 

 

第十六步:查看ResourceManager 的 Web 界面http://192.168.159.181:8088

 

第十七步:查看 Job History Server 的web 页面http://192.168.159.181:19888/

 

第十八步:运行 MapReduce job 任务

跟前面的命令一样,但是我们将结果输出目录改为output-yarn,如下:

[root@centos7 hadoop-2.7.3]# bin/hadoop jar share/hadoop/mapreduce/hadoop- mapreduce-examples-2.7.3.jar grep input output-yarn 'dfs[a-z.]+'

 

查看结果

[root@centos7 hadoop-2.7.3]# bin/hdfs dfs -cat output-yarn/* 可以看到结果与之前执行的一致,这里就不列出。

 

 

第十九步:停止 YARN

[root@centos7 hadoop-2.7.3]# sbin/stop-yarn.sh

 

第十一步:闭主程序

最后,如果使用完毕,可以关闭 Hadoop。[root@centos7 hadoop-2.7.3]# sbin/stop-dfs.sh

[root@hadoop01 ~]# sbin/mr-jobhistory-daemon.sh stop historyserver

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(hadoop)