![大数据采集与处理](https://wfqqreader-1252317822.image.myqcloud.com/cover/286/44819286/b_44819286.jpg)
2.3.4 完全分布式安装
完全分布式用多个节点构成集群环境来运行Hadoop,对Linux 机器集群进行规划,使Hadoop 各模块分别部署在不同的多台机器上,环境配置信息如表2-1所示。
表2-1 环境配置信息
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_62.jpg?sign=1738881464-aqWsklwBEVHqGMpwp9JFKIIltIP1rirp-0-057a55810b9d8303e5341a3d7f1acfd6)
1.环境准备
这里采用先在第一台机器上解压、配置 Hadoop,然后再分发到其他两台机器上的方式来安装集群。
(1)解压Hadoop 目录,代码如图2-62所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_63.jpg?sign=1738881464-MRkENH3mXM80SQZJDE86hVbWjMKkbDKC-0-d19c7e5328116929df896000332ac119)
图2-62 解压Hadoop目录
(2)配置Hadoop JDK 路径,修改Hadoop-env.sh、mapred-env.sh、yarn-env.sh 文件中的 JDK 路径,代码如图2-63所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_64.jpg?sign=1738881464-84ahpDgbDsCGeXCuEiCbz8AgOJiVhdbu-0-c957a5f96e08067ae437ecfeb15daa97)
图2-63 配置Hadoop JDK路径
(3)配置core-site.xml,代码如图2-64所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_65.jpg?sign=1738881464-ZFznFzOhIwm8zEaVZZnLtH7YRZFtmhhY-0-53769041170081926015630a5a766a03)
图2-64 配置core-site.xml
(4)设置fs.defaultFS的参数值为NameNode的地址。
Hadoop.tmp.dir为Hadoop临时目录的地址,默认情况下,NameNode 和 DataNode 的数据文件都会存在这个目录的对应子目录下。应该保证此目录是存在的,如果不存在,则先创建。
(5)配置hdfs-site.xml,代码如图2-65所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_66.jpg?sign=1738881464-bAZAiPSJ7Hhp41QUvFheOwYDku4Qzqbm-0-d628ddcbb69ec894aa660f4508615073)
图2-65 配置hdfs-site.xml
dfs.namenode.secondary.http-address 指定 secondaryNameNode 的 http 访问地址和端口号。因为在规划中,我们将 BigData03 规划为secondaryNameNode 服务器,所以这里设置为bigdata-senior03:50090。
(6)配置slaves,代码如图2-66所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_67.jpg?sign=1738881464-Mf8nbG8WxeZ5jdEf0ISeq1xhlGupAZAM-0-0d95e6d708a7caec9f5efc28034648ca)
图2-66 配置slaves
slaves 文件指定 HDFS 上有哪些 DataNode。
(7)配置yarn-site.xml,代码如图2-67所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_68.jpg?sign=1738881464-VPzDdl07JT16mFAwdxTPJRKWJ3xzoAlz-0-239d174a63ceddef2540b11cfd678606)
图2-67 配置yarn-site.xml
根据规划,yarn.resourcemanager.hostname指定ResourceManager 服务器指向BigData-senior02。
yarn.log-aggregation-enable设置是否启用日志聚集功能。
yarn.log-aggregation.retain-seconds设置聚集的日志在 HDFS 上最多保存多长时间。
(8)配置mapred-site.xml,代码如图2-68所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_69.jpg?sign=1738881464-TvTgrWDwxZuNw3QCbLEgbZjNXXghdmxK-0-95150fa42e9992b9584d75777c3c8762)
图2-68 配置mapred-site.xml
mapreduce.framework.name 设置MapReduce任务运行在YARN上。
mapreduce.jobhistory.address设置MapReduce的历史服务器安装在BigData01机器上。
mapreduce.jobhistory.webapp.address 设置历史服务器的Web页面地址和端口号。
2.设置SSH无密码登录
Hadoop集群中各机器之间会相互通过 SSH 访问,因为每次访问都输入密码是不现实的,所以要设置各个机器间的SSH 是无密码登录的。
(1)在BigData01上生成公钥,代码如图2-69所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_70.jpg?sign=1738881464-w7R1XvNiYRYKJgHWSXgj9xVaB1yM70u7-0-54ed8a122c0c7cd8f3358f97b0ba9bf8)
图2-69 生成公钥
一路回车,都设置为默认值,然后在当前用户的Home目录下的.ssh目录中会生成公钥文件(id_rsa.pub)和私钥文件(id_rsa)。
(2)分发公钥,代码如图2-70所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_71.jpg?sign=1738881464-85L0tL0RaSz0aapmFrynf9s8jWTphWNy-0-fa7e9bf31546d4548da70c011f3520c5)
图2-70 分发公钥
(3)设置BigData02、BigData03 到其他机器的无密钥登录。
同样,在 BigData02、BigData03 上生成公钥和私钥后,将公钥分发到三台机器上。
3.分发Hadoop文件
(1)在其他两台机器上创建存放Hadoop的目录,代码如图2-71所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_72.jpg?sign=1738881464-y4LK5oljIAgl3nDPWSFggxinNaqGVXBS-0-656ef02821a4f4885709e7d5c5394300)
图2-71 创建存放Hadoop的目录
(2)通过SCP分发。
SCP分发代码及结果如图2-72所示。Hadoop根目录下的share/doc目录下存储的是Hadoop相关文件,这个doc目录占用的硬盘空间相当大,一般在1.5GB以上,建议在分发之前将这个目录删除,以节省硬盘空间并提高分发的速度。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_73.jpg?sign=1738881464-QSGYaWaZsUvCewVgAFLu1fx0ME1Uw0T6-0-2c1ada77846893351649fa8f4f772c95)
图2-72 SCP分发代码及结果
4.格式化NameNode
在 NameNode 机器上执行格式化,代码如图2-73所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_74.jpg?sign=1738881464-Qj7BMsGUOPAxuJsIPVUGZxRM2XEK0r79-0-4820e5153c3de9126fa9249d54d78e8c)
图2-73 格式化NameNode
注意:
如果需要重新格式化NameNode,则先将原有NameNode和DataNode 下的文件全部删除,不然会报错。在core-site.xml文件中,dfs.namenode.name.dir、dfs.datanode.data.dir属性字段可分别设置为NameNode和DataNode的目录路径值。
core-site.xml配置信息如图2-74所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_75.jpg?sign=1738881464-3SQLUPECb0EGCSQFFOXtFqL31Z9Fcvqe-0-558971d5b46b51fa34a8ba30605b1a53)
图2-74 core-site.xml配置信息
每次格式化都默认创建一个集群ID,并写入NameNode和DataNode的VERSION文件(VERSION文件所在目录为dfs/name/current和dfs/data/current)中,重新格式化时,会默认生成一个新的集群ID,如果不删除原有目录,则会导致NameNode中的VERSION文件中是新的集群ID,而DataNode中是旧的集群ID,不一致时会报错。
另一种方法是格式化时指定集群ID参数,指定为旧的集群ID。
5.启动集群
(1)启动HDFS,代码及结果如图2-75所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_76.jpg?sign=1738881464-GxoEsV1IKloDxES8HypskGNarBzXWoQ9-0-a99360c7f7edaeb1283338fbbc12db21)
图2-75 启动HDFS
(2)启动YARN,代码如图2-76所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_77.jpg?sign=1738881464-4WeEkZPN0PuADqNBpRk3wflBvmrMz2uG-0-6dd4e599ea8c4d60c27a3a24a6c2d6c7)
图2-76 启动YARN
(3)在BigData02 上启动ResourceManager,代码及结果如图2-77所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_78.jpg?sign=1738881464-6pePcQugBcQYaLvwl7Zc1nucGCrI8ORd-0-5be1d9d105e035075e50aa049a6e8825)
图2-77 启动ResourceManager
(4)启动日志服务器。
因为我们规划的是在 BigData01 服务器上运行 MapReduce 日志服务,所以要在 BigData01 上启动,代码及结果如图2-78所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_79.jpg?sign=1738881464-jfXzx4nmZHALxMvCdmbUNxnihOiVjb69-0-29413e2a757ab3c8f5037d50e464c4e8)
图2-78 启动日志服务器
(5)查看HDFS Web 页面。
http://bigdata-senior01:50070/
(6)查看YARN Web 页面。
http://bigdata-senior02:8088/cluster
6.测试 Job
我们在这里采用Hadoop自带的WordCount 例子,在集群模式下测试运行MapReduce程序。
(1)准备MapReduce 输入文件 wc.input,代码如图2-79所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_80.jpg?sign=1738881464-k2wXzjB6nHlh8Oh5B2IXbgRZdL9RCR1W-0-35d1c3139f43533f9e303990599cc1be)
图2-79 准备MapReduce输入文件wc.input
(2)在 HDFS 中创建输入目录 input,代码如图2-80所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_81.jpg?sign=1738881464-PRxE4n5DTdbZWZT6El0HhQVR7zAJZElT-0-19f566b245920ede83ae7a090171ddb6)
图2-80 创建输入目录input
(3)将wc.input上传到 HDFS,代码如图2-81所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_82.jpg?sign=1738881464-7OewVsO0Q8mQyp8wK65hkbDHuinDiD7r-0-23523d193c0a430cb61b763ec8468ea5)
图2-81 将wc.input上传到HDFS
(4)运行Hadoop自带的MapReduce Demo程序,代码及结果如图2-82所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_83.jpg?sign=1738881464-wqFwKbi9c6451bEKKABjj7DZR6qc8dPI-0-6eefeb534d5458dc647ca8031403dcb4)
图2-82 运行Hadoop自带的MapReduce Demo程序
(5)查看输出文件,代码及结果如图2-83所示。
![](https://epubservercos.yuewen.com/7D2AAF/23950017709669506/epubprivate/OEBPS/Images/txt002_84.jpg?sign=1738881464-RuFiWL7CwatlXxOHY3OXSLLNxjIt1tsq-0-c34ee1f3ebdcd70b5f0a0eab8741ddb8)
图2-83 查看输出文件