![大数据技术入门(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/475/34752475/b_34752475.jpg)
3.1 集群实例分析
本章先从一个实例开始。如图3-1所示,我们在AWS上构建了多个Hadoop YARN集群。其中最大的一个有160多个节点。
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P70_4070.jpg?sign=1739282628-9wB9t4GD9jfzUruF2xpL1EkTx8Qlx9JO-0-9eec3f4b2561acf51f28f34290369177)
图3-1 Hadoop集群配置
在上面的Hadoop集群中,usa0m5d是给premium账号(即VIP账号)用的,而usa9m5d是给非premium账号(即普通账号)用的。我们使用chef(正迁移至CodeDeploy)在aws ec2上部署Hadoop集群,对于Master和Slave都分别有一个yml配置文件,用于配置集群所需的EC2(虚拟服务器)的类型和个数等。chef-repo/intent/service/hadoop-slave.yml设置Slave节点的配置参数,例如aws ec2实例类型(m5d),最大节点数(300)等。部分配置如下:
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P71_10460.jpg?sign=1739282628-zGdM0dutrFmgyez9NH6vbGOxpgWhkZWJ-0-871827f123d1b44d4825f1e755701044)
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P72_4080.jpg?sign=1739282628-NbMLVQ2baiYXwkRDbQJ4ifG2JMxTtBT7-0-14d823305ca2d4477960e147a697873d)
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P73_10461.jpg?sign=1739282628-HfIzkk1axBCV6NoyePzVjRs4Knja2I0r-0-a2d21fa4b593644b62465207854c7ab1)
chef-repo/intent/service/hadoop-master.yml记录Master节点配置参数,例如实例类型为r5d,节点数为1:
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P73_10463.jpg?sign=1739282628-NeU0K84c8SsQWoibkXaC3LCBeuLdIvAn-0-13437e5bb9049f5761c98804b078e3e6)
创建和部署Hadoop集群是通过如下的脚本完成。执行后,就获得如图3-1所示的一个集群设置。
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P74_10466.jpg?sign=1739282628-FiSzgddgSQnKNwdFHyXTFdkhhJyNYThZ-0-4051eaeda7772e0d10bcc370e02585e0)
在如图3-1所示的AWS上,单击其中的Master,就可以看到如图3-2所示的配置参数。这些配置参数来自上述的配置文件。
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P74_4101.jpg?sign=1739282628-OZwJYndWtHUkyJe7PVcxrn7pqp4E4sWg-0-f31dc152413afdf3b2efe306baf154fa)
图3-2 AWS上Master的配置信息
上面只是创建了集群的硬件资源。获取AWS给予分配的IP地址(见图3-2),在下面的chef-repo/data_bags/hadoops/production.yaml中配置,然后就可让自动的chef脚本部署和配置Hadoop集群,最后客户账号就能访问新的集群。
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P74_10468.jpg?sign=1739282628-2QxMFJW1S89Gq5BJemBqjsAOhLvhSN8v-0-8f3c737b79a284fdb1a90a5a0b6d7bc5)
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P75_4106.jpg?sign=1739282628-eUA4qBgnphE4fV8xDDzOs0u1hdopjaXo-0-35a0a9f562aed39784f34a2ca73d8f4b)
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P76_10469.jpg?sign=1739282628-6rzVF9eJLxrZz8p6ZgsSJ88rGjAazM47-0-107960637a3b28a79c64c648e6c6ed07)
我们有一个下面的脚本来上载这个配置文件(等于是commit这个配置):
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P76_10471.jpg?sign=1739282628-ymrBRNIVHImf6KO7tRZxsTWC1l1cBkON-0-3fec67efcde783b095680739ac9fc716)
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P77_4117.jpg?sign=1739282628-AprNNZ515m3U6n5xzcgM6YW09j5QCFGS-0-c348ea7526d758356bde3c437fa96744)
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P78_10472.jpg?sign=1739282628-6Ji9oKMP6x7I36VJ9GwicQyZ7NEuvqOh-0-ce98daca5475867edcfecd2f6fa52a5e)
之后我们的chef脚本在各个节点上自动执行,它创建用户和组,安装Hadoop软件,修改Hadoop的配置文件(hdfs-site.xml、yarn-site.xml、core-site.xml等),创建instance上的目录(/mnt...),初始化HDFS(只在第一次时执行),启动服务(resourcemanager、namenode...),安装一些我们自己的脚本(health_check、snapshot),安装history crawler并配置cronjob让它每多少分钟执行一次等等。这个chef脚本默认是30分钟执行一下,我们有时直接通过下面的脚本命令来让它立即执行:
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P78_10474.jpg?sign=1739282628-Ik56qKF2bW3JDDO92wad0Sa17v1cz9bW-0-1b205a1a656491728a55f30dd99bb4d0)
注意
pssh是一个Python编写的可以在多台服务器上执行命令的工具。我们也可以通过ssh到每台机器上单独执行。
部署完毕后,在浏览器中输入“http://172.18.186.13:8088/cluster”来查看集群上的应用状态(见图3-3)。如果有应用在这个集群上执行,这个集群部署就基本没问题了。用鼠标在左边菜单上单击“Nodes”,就可以看到所有节点的信息。单击“Scheduler”来查看集群资源调度配置(见图3-4),可以看出这些配置信息同上面的配置文件一致。在浏览器中输入“http://172.18.186.13:50070”来访问Hadoop控制台,如图3-5和图3-6所示。
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P78_4133.jpg?sign=1739282628-gekTMqrHersGvHBNtPL0mlR2BBwVtH0r-0-b0333fa3f54e9bdfa189538629900fba)
图3-3 Resource Manager上的所有应用状态
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P79_4155.jpg?sign=1739282628-uoaeE5TwPUjNisTDph7VaM5Gk4bgsT2X-0-8419647cf73960bbf6a45bf2d9f3000f)
图3-4 集群上的节点信息
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P79_4156.jpg?sign=1739282628-Hv2U43DvT8pkaA3pB2PF7KAPezumAUF3-0-3cb1e65baf32f0a10b11533b2ab8483e)
图3-5 集群调度(队列)配置
![](https://epubservercos.yuewen.com/EA5FDB/18562449008361506/epubprivate/OEBPS/Images/Figure-P80_4176.jpg?sign=1739282628-WNecIEbzhsiyb7NhWsM0ImXWe6RgIFgr-0-6808b88a4edd70dccb919dcf889464bd)
图3-6 Hadoop控制台