学习基于阿里云 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.sh
和zkServer.sh stop
关闭 Hadoop 和 ZooKeeper 集群。
配置 Yarn
在之前的基础上只需简单几步就可以完成 Yarn 的配置(毕竟它是 Hadoop 2.x 自带的组件)。
配置 mapred-site.xml
配置文件夹下有一个模板文件,我们需要将其重命名,然后再配置中加入:
1 | <property> |
配置 yarn-site.xml
同样将模板文件重命名,然后再配置中加入:
1 | <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.sh
和start-all.sh
关闭和启动 HDFS。最后使用zkServer.sh stop
关闭 ZooKeeper。
Hadoop 会提示 stop-all.sh 和 start-all.sh 是已经过时的方法。你也可以参考之前的文章,按照与启动顺序相反的顺序来关闭集群的各个组件