2.7 扩展集群节点
1.扩展说明
至此,构建了以下最简Spark大数据处理环境。
●最简的HDFS:1个NameNode和1个DataNode;
●最简的Yarn:1个ResourceManager和1个NodeManager;
●最简的Spark:1个Master和1个Worker。它们都位于虚拟机scala_dev上。
在实际生产环境中,以上集群会有多个节点,因此,有必要掌握集群节点扩展的方法。
2.扩展的顺序和思路
要扩展上述系统,首先要增加物理节点,因为新增的DataNode、NodeManager、Worker要在新增节点上运行。本书使用虚拟机代替物理节点,因此,扩展的第一步就是新增虚拟机。
具体的扩展步骤如下。
1)创建一个新的虚拟机vm01、最简安装、配置网络能够和scala_dev互相Ping通;
2)复制scala_dev中JDK、Scala基础环境到vm01,复制scaladev中/etc/profile等配置文件到vm01,构建和scala_dev一样的基础环境;
3)复制scala_dev的Hadoop到vm01,配置,在vm01上配置DataNode,加入HDFS,并验证;
4)在vm01上配置NodeManager,加入Yarn并验证;
5)复制scala_dev的Spark到vm01,在vm01上配置Spark,增加新的Spark Worker并验证。
本节“扩展集群节点”属于实践内容,因为后续章节会用到本节成果,所以本实践必须完成。请参考本书配套资料《Spark 大数据编程实践教程》中的“实践 4:扩展集群节点”完成本节任务。
3.扩展阅读:基于Docker扩展集群
使用VMware来构建Hadoop/Spark集群简单方便,但存在以下问题。
●每个虚拟机都要一个独立的镜像文件,10 个节点就要 10 个 vmdk 文件,占用磁盘空间和集群规模成正比;
●VMware由于实现机制的原因,自身开销也不小;
●每个虚拟机都需要维护。
以上问题,导致使用 VMware 无法构建大规模的 Hadoop/Spark 集群。例如,在一台机器上构建一个10节点的Hadoop/Spark集群,对于VMware这种方式来说是非常麻烦的,而且即便构建起来,运行速度也会很慢,平时维护工作也很麻烦。
基于此,我们结合自身在实际生产环境中的使用经验,使用当前最热门最新的 Docker容器技术,再加上 Hadoop 构建和 Linux Shell 编程技术,实现了“一键部署:基于 Docker的Hadoop集群”,开发了配套的高清视频课程(获取该课程资源请参考1.6.5中的表1-2)。
本课程以基于Docker的Hadoop集群的构建为例,讲解一键部署的基于Docker的集群构建技术。基于本课程所学习到的技术,可以非常轻松地构建基于 Docker 的 Spark 集群等。
和VMware方式相比,基于本课程的技术构建出的Hadoop/Spark集群具有以下特点。
(1)占用硬盘空间小
不管集群有多大,只需要1个镜像。即便是1000个节点的Hadoop/Spark集群,也只需要1个镜像,VMware则需要1000个镜像。
(2)开销小
Docker共用Host操作系统,自身开销非常小,一台普通笔记本,可以轻松运行10节点以上的 Hadoop/Spark 集群,从而完成更高要求的实验。如果使用 VMware,则硬件虚拟和Guest操作系统都有很大的开销,一台普通笔记本运行 10 节点的 Hadoop/Spark 集群则会非常困难。
(3)运维方便
只要一个命令,就可以部署和启动任意节点的 Hadoop/Spark 集群,所有的配置只需要在 1 个镜像上修改,并在所有节点上生效,不管集群规模多大,运维的工作量都是基本固定的。VMware则需要针对Hadoop/Spark集群中的每个节点进行维护,集群规模越大,维护工作量越大。
重要:本课程是 Docker+Hadoop+Linux shell 编程等多项热门和实用技术的综合应用,来源于实际需求,学了立马就能用得上。