参考https://blog.csdn.net/hliq5399/article/details/78193113这篇博客,自己用docker安装了3个容器来模拟了下hadoop分布式的安装
Hadoop我用2.8.5的安装, 解压放在/hadoop/modules/hadoop-2.8.5,hdfs目录
JDK1.8
服务器模块功能规划如下:
名称 | IP | 运行的模块 |
---|---|---|
bigdata-01.com | 172.17.0.2 | NamNode,DataNode,NodeManager,HistoryServer |
bigdata-02.com | 172.17.0.3 | DataNode,ResourceManager,NodeManager |
bigdata-03.com | 172.17.0.4 | SecondaryNameNode,DataNode,NodeManager |
对应在3台服务器建好Hadoop用户,并相互SSH免密登录。
下面配置3台服务器保持一致
配置Hostname
/etc/hosts
添加服务器名字路由
172.17.0.2 bigdata-01.com
172.17.0.3 bigdata-02.com
172.17.0.4 bigdata-03.com
配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-01.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/data/tmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>
配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata-03.com:50090</value>
</property>
</configuration>
bigdata-03 运行secondary name node,将文件备份设置为2
配置slaves
/etc/hadoop/slaves文件修改:
bigdata-01.com
bigdata-02.com
bigdata-03.com
配置yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-02.com</value>
</property>
<!-- 是否启用日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 在HDFS上最多保存多长时间 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<!-- mapreduce.framework.name设置mapreduce任务运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 设置mapreduce的历史服务器安装在BigData01机器上 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>bigdata-01.com:10020</value>
</property>
<!-- web -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigdata-01.com:19888</value>
</property>
</configuration>
接下来在NameNode机器上(bigdata01.com)执行格式化:
成功后会生成下图所示
配置,环境到此完结。接下来按规划启动模块。
启动hdfs
在bigdata-01机器上运行 sbin/start-dfs.sh
namenode 、secondarynamenode、datanode就分别在3个环境中启动了
启动yarn
在bigdata-01机器上运行sbin/start-yarn.sh
nodemanager就在3个环境中启动
在bigdata-02机器上运行sbin/yarn-daemon.sh start resourcemanager
resourcesmanager在bigdata-02上运行
日志服务器
在bigdata-01 上运行 sbin/mr-jobhistory-daemon.sh start historyserver
到此各个模块就在不同容器中运行了。下面做测试,创建一个input目录,并上传一个wc.input文件
在bigdata-01.com上运行
bin/hdfs dfs -mkdir /input
bin/hdfs dfs -put /hadoop/data/wc.input /input/wc.input
hdfs web
成功后,可打开bigdata-01的web管理页面http://192.168.3.14:50070/ (宿主机器端口映射到bigdata-01的端口)查看:
文件有2个备份。
yarn web![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/78ec9e19f648ce4a68e3c837787a4f02.png)
jobhistory web
环境基本上搭建完毕,接下来关注如何使用,运维方面暂不深究了。通过搭建环境对各个模块是做什么用的有个大致的了解。
运行example,统计wc.input单词个数
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /input /out
电脑运行效率太差,导致中途有报错,看了下,大概是网络连接超时和reduce执行的内存不够重来,毕竟3个容器运行在一个10年前的笔记本,cpu、mem都不够,不过总算是执行完毕,运行结果截图截图纪念一下: