- 本文使用的Hadoop版本是2.7.4;
- 操作系统是:Linux下的Ubuntu16.04以及其定制版Linux mint 18.1
一、背景
因为工作和以后课题方向的原因,开始涉及大数据的方向,在大数据的领域,Hadoop无论如何是绕不过去的话题,于是进入这个方向也是着手从Hadoop开始,但是从Hadoop开始,并不代表我们一定要采用它的解决方案,因为现在Hadoop自身各个组件的解耦做得已经才能够当好了,所以说我们可以把某一个组件单独拿出来使用,或者和别的框架相结合,比如单单使用HDFS,但是因为采用的计算模型可能和我们实际的业务并不相同,所以说HDFS之上,我们可以采用Spark,Storm等计算框架。
这篇文章只是一篇“入坑文”,在我看来,因为对于这样一个庞大的生态系统,早点遇到一些问题还是好的,因为如果在生产环境中遇到,那真是一件想死的事情。
对于下边的体验和实践,我都在两种环境下进行了测试,其结果并不完全相同。其中最开始我是在阿里云的服务器上搭建的,开始买的是学生优惠的服务器,但是整体服务器的性能并不是很强(由于窘迫的经济),但是对于折腾一下还是足够的,但是一在运行Hadoop的时候就出现问题了,后面会详说;同时我还在自己的笔记本上运行了一下,对于整个过程来说,相对于阿里云上的测试还是比较顺利的。
下面是我的服务器的配置对比,可以给大家做参考。
| 指标/配置 | 阿里云服务器 | 本地服务器 |
|---|---|---|
| CPU | 单处理器*单核 Intel Xeon E5-2682 v4 | 4处理器*双核 Intel Core i5-3210M |
| 内存 | 2G | 8G |
| 操作系统 | Ubuntu 16.04.2 LTS | Linux Mint 18.1 Serena |
| 磁盘 | 40G | 512G |
| 网络 | 1M带宽 | 6M带宽 |
对于Hadoop运行环境的选择,个人更偏向Linux,虽然目前Hadoop是使用Java开发的,天然支持跨平台,而且也开始支持windows,但是由于是部署在服务器上的,而Linux是服务器领域无愧的王者,所以最好还是在Linux平台上。
本文主要是在单机和伪分布式模式下运行,参考的是Hadoop的官方文档。对于一些简单的配置和运行在文档中已经写的很清楚了,在上述两台服务器上运行的都没有问题,但是对于YARN on a Single Node部分(我们假设运行之前的HDFS的程序和配置是没有问题的),在两台服务器的运行就开始有差别了,这是因为作为Hadoop 2.x最明显的改变就是讲JobTracker分开了,成为两部分:
- 资源管理器;
- 任务调度器;
所以在这部分涉及了资源管理的内容,导致在两台服务器上的运行效果不同。下面是测试的结果、问题和解决办法。
二、测试过程
2.1 相关参数的配置
这一步的目的在于提供Hadoop运行MapReduce任务、资源管理和节点管理等的配置信息,默认情况下,Hadoop给我们提供了关于这些程序运行的所有参数配置,这里涉及到的是:
- etc/Hadoop/mapred-site.xml:用于配置MapReduce应用的配置信息,这是只有你在选择了MapReduce计算模型后才会来配置该文件,如果你选择的是Spark的话,则需要考虑另外的配置文件,默认的配置在mapred-default.xml;
- etc/Hadoop/yarn-site.xml:这个配置文件里提供的是Yarn相关的配置参数,默认的配置参数在yarn-default.xml;
在官方的文档中,上述两个文件的配置如下:
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
从上述的配置中也可以看出来,Hadoop已经将计算框架从Hadoop本身剥离出来了,连配置文件都是独立的。
2.2 启动yarn
配置完毕之后就要启动yarn脚本了,这个脚本中包括ResourceManager和NodeManager两个守护进程,是独立运行的。开启之后你可以通过jps查看运行情况,这个命令可以查看运行的JVM实例,如果正常的话,结果如下:
10356 NameNode
10661 SecondaryNameNode
26840 ResourceManager
26953 NodeManager
10492 DataNode
9340 Jps
对于上述结果:
- 前提是你的HDFS已经运行起来了;
- 这里虽然所有程序都已经显示了,但是根据我运行时的经验,jps这个命令有时候不太灵,有些程序原本运行失败,但是它仍然显示出来了,在手册上也显示这个命令处于实验阶段,所以稳定性还有待提高;此时我们应该去查看对应的日志看看时候有异常出现,但是对于这一点,对于Hadoop有不满的一点,所有的异常都是写到文件中的,在控制台没有丝毫的提示信息,导致出现异常不能及时发现,对应的日志在logs目录下;
在我运行的时候,出现的问题如下:
NodeManager 启动失败,查看日志发现异常如下:
org.apache.Hadoop.yarn.exceptions.YarnRuntimeException: org.apache.Hadoop.yarn.exceptions.YarnRuntimeException: Recieved SHUTDOWN signal from Resourcemanager ,Registration of NodeManager failed, Message from ResourceManager: NodeManager from localhost doesn't satisfy minimum allocations, Sending SHUTDOWN signal to the NodeManager.
从日志中来看,明显是服务器的资源不能满足程序运行的需要,此时只能去查找默认NodeManager的资源配置,所谓的资源,这里涉及到的由内存和CPU,默认情况下,这两种资源的配置如下:
yarn.nodemanager.resource.memory-mb:用于配置可以分给运行的containers的物理内存的数量,默认是8192MB,也就是8G;yarn.nodemanager.resource.cpu-vcores:用于contain

5388

被折叠的 条评论
为什么被折叠?



