大道至简,知易行难
广阔天地,大有作为

Hadoop完全分布式集群搭建(3.2.1)-MapReduce+Yarn

在《Hadoop集群搭建(3.1.2)-HDFS》一文中,我们完成了HDFS的搭建,接下来继续搭建基础的MapReduce环境。

一、环境搭建

HDFS主要由NameNode和DataNode组成,而Yarn主要由ResourceManager和NodeManager组成。官网上的标准介绍是:

HDFS daemons are NameNode, SecondaryNameNode, and DataNode. YARN daemons are ResourceManager, NodeManager, and WebAppProxy. If MapReduce is to be used, then the MapReduce Job History Server will also be running. For large installations, these are generally running on separate hosts.

通常,Yarn的NodeManager会跟HDFS的DataNode部署在一起(至少是在一个机架上),因此DataNode和NodeManager放在一起也经常被叫做slave/worker。为了防止一般NameNode的单点故障,SecondaryNameNode一般会与NameNode放到不同的机器上,我们此处是放在同一个master上的。
首先在master的etc/hadoop/mapred-site.xml中指定使用Yarn为Execution framework:

slave上的为:

请注意,在master的mapred-site.xml中需要配置JobHistory Server,否则会报错。

master和salve上的etc/hadoop/yarn-site.xml相同:

在配置了etc/workers后,然后使用sbin中的start-yarn.sh启动yarn集群:

可以看到启动的ResourceManager。而在slave上执行jps同样可以看到:

启动的NodeManager。

Yarn ResourceManage的Web端口默认为8088(图中使用跳板机隧道至18088端口):

Yarn ResourceManager默认Web Console端口为8088

Yarn ResourceManager默认Web Console端口为8088

能够看到两个NodeManager,NodeManager的默认Web Console端口为8043,访问其可以看到NodeManager的详细信息。

我们可以看到,NodeManager的默认Mem为8GB、默认VCores数量为8个。我们可以根据实际物理内存大小及物理CPU的情况,通过在NodeManager的yarn-site.xml中配置yarn.nodemanager.resource.memory-mb和yarn.nodemanager.resource.cpu-vcores进行调整。例如,将NodeManager允许使用的物理内存数量限制为1024MB:

此时,我们可以通过Web UI观察到上述变化:

修改NodeManager的资源限制

修改NodeManager的资源限制

Yarn NodeManger默认端口为8042

Yarn NodeManger默认端口为8042

二、测试

我们使用最简单的wordcount示例进行测试,该示例位于/root/hadoop-3.2.1/share/hadoop/mapreduce下,名为hadoop-mapreduce-examples-3.2.1.jar。我们先随便找个文件传到hdfs中:

然后使用如下的命令运行测试用例:

其中/ouput需要实是hdfs中不存在的目录,程序运行的结果会输出到该目录,若目录存在会报错。

由于我们NodeManager配置的内存仅为1024MB,而默认MapReduce作业所需的最小内存是1536,因此,会报出“Invalid resource request! Cannot allocate containers as requested resource is greater than maximum allowed allocation.”的错误:

此这是由于我们之前将NodeManager的内存限制为了1024MB,调整为1536MB:

再次运行,报错“ Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster”,完整错误如下:

可以从RM的Web UI中也可以看到失败:

Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

根据提示,在所有master和slave的mapred-site.xml中添加如下内容:

然后重启yarn集群,重新运行刚才的MapReduce程序,成功运行:

我们可以使用如下的命令来查看结果:

至此,基本的Hadoop完全分布式集群搭建完毕。

参考资料:
1、https://hadoop.apache.org/docs/r3.2.1/hadoop-project-dist/hadoop-common/ClusterSetup.html,其中明确了各个参数的含义;
2、https://kontext.tech/column/hadoop/267/configure-yarn-and-mapreduce-resources-in-hadoop-cluster

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » Hadoop完全分布式集群搭建(3.2.1)-MapReduce+Yarn

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址