0%

基于阿里云 ECS 搭建大数据集群(四)

学习基于阿里云 ECS 云服务器搭建大数据集群的笔记。笔记将搭建步骤和遇到的问题一一记录,用于自己查阅复习,也为小伙伴们提供一定参考帮助。

本篇是笔记的第四部分。上篇笔记完成了基于 ZooKeeper 的高可用集群搭建。本篇将继续实现基于 Yarn 的调度框架配置。

基于 Yarn 的调度框架配置


集群架构

集群使用 4 台云服务器搭建,各节点角色如下:

NN-1 NN-2 DN ZK ZKFC JNN RM NM
Node00 * * *
Node01 * * * * * *
Node02 * * * * *
Node03 * * * *

处于均衡负载的目的,我们将 ResourceManager 设置在 node02 和 node03。另外,NodeManager 必须和 DataNode 设置在相同的节点才能获取计算所需要的数据。


准备工作

在搭建开始前,我们首先要使用命令stop-dfs.shzkServer.sh stop关闭 Hadoop 和 ZooKeeper 集群。


配置 Yarn

在之前的基础上只需简单几步就可以完成 Yarn 的配置(毕竟它是 Hadoop 2.x 自带的组件)。

配置 mapred-site.xml

配置文件夹下有一个模板文件,我们需要将其重命名,然后再配置中加入:

1
2
3
4
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

配置 yarn-site.xml

同样将模板文件重命名,然后再配置中加入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node02</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node03</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>

分发配置文件

使用 scp 命令将配置文件分发到各个节点。

启动集群

首先使用命令zkServer.sh start启动 ZooKeeper,然后使用命令start-dfs.sh启动 HDFS,最后使用命令start-yarn.sh启动 Yarn。注意,ResouceManager 并不会自动启动,我们要去 node02 和 node03 使用命令yarn-daemon.sh start resourcemanager手动启动。

通过 8088 端口我们可以在浏览器看到 ResourceManager 的运行情况。

测试集群

我们随便新建一个测试文件,添加一些文本。我这里使用了 Pink Floyd 歌曲《time》的歌词,文件名为 time-lyrics。使用命令hdfs dfs -put time-lyrics /user/root/将歌词上传到 HDFS 中。

这时我们来到 node00:50070,应该可以在可视化界面中找到这个文件

接着我们来到 Hadoop 安装目录下的/share/hadoop/mapreduce文件夹。这个文件夹下有一些已经打包好的 jar 包可供测试。使用命令hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /user/root/time-lyrics /user/root/wordcount来执行 wordcount 程序,统计歌词里面各个单词出现的次数。注意最后两个参数。前者是数据的地址。后者是计算结果输出的位置。后者的路径可以不存在,但是如果存在的话,必须保证文件夹是空的。

如果计算成功的话,wordcount 文件夹下将会多出两个文件。其中_SUCCESS是任务成功的信号文件,而part-r-00000包含了具体的计算结果。使用命令hdfs dfs -cat /user/root/wordcount/part-r-00000来查看结果。

part 代表 partition,而 r 代表 reduce。默认只有一个分区,所有后面的数字是 0。有时候输出文件夹下还会有 .crc 文件。这是 Hadoop 为文件校验而生成的文件


如何关闭集群

我们必须使用命令yarn-daemon.sh stop resourcemanager手动关闭 ResourceManager。接着可以使用stop-all.shstart-all.sh关闭和启动 HDFS。最后使用zkServer.sh stop关闭 ZooKeeper。

Hadoop 会提示 stop-all.sh 和 start-all.sh 是已经过时的方法。你也可以参考之前的文章,按照与启动顺序相反的顺序来关闭集群的各个组件