MapReduce集群设置与开发环境配置
MapReduce集群
概述
MapReduce运行在Hadoop集群上。但MapReduce是通过另外一批进程来运行的。HDFS的进程名是NameNode、SecondaryNameNode和DataNode;而MapReduce的进程名(可以通过JPS命令查看)是:
ResourceManager:数据计算资源的总体管理者,地位相当于NameNode。
NodeManager:执行计算的节点,地位相当于DataNode。
注意:ResourceManager和NameNode可以不在同一个机器上。
MapReduce通过Yarn运行的,所以在执行MapReduce之前需要通过start-yarn.sh命令启动yarn。
设置yarn环境
如果安装JDK时正确设置了JAVA_HOME环境变量,则这一步可忽略。
在yarn-env.sh中,找到# exportJAVA_HOME=…
将这一行开头的#注释符去掉
然后设置为正确的JAVA安装位置
本配置及以下配置都先在NameNode上配好,然后分发到各个节点上。
MapReduce配置
复制mapred-site.xml.template生成mapred-site.xml
修改mapred-site.xml,添加以下3个配置项
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>tmaster:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>tmaster:19888</value>
</property>
第1个配置指定让yarn管理mapreduce任务
第2、3个指定任务历史记录端口
yarn配置
打开yarn-site.xml,添加
<property>
<name>yarn.resourcemanager.hostname</name>
<value>tmaster</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
第1个指定ResourceManager在哪个机器上
第2个指定shuffle服务
将etc/hadoop目录复制到各个节点
略
启动
执行start-yarn.sh命令。
执行成功后,通过JPS检查ResourceManager、NodeManager是否启动。
如果启动成功,通过tmaster:8088可以打开MapReduce“应用”站点:
MapReduce开发环境
概述
在正式环境下,MapReduce应用是发布到集群中执行的(需要打成Jar包,提交到集群中);但开发时,通过在本地执行可以更方便地观察程序的打印输出,甚至对程序进行调试。
更新Hadoop-Common
MapReduce本地执行时,需要使用接近的Hadoop-Common版本,所以需要下载hadoop-common-2.7.x,并且更新Windows系统的HADOOP_HOME环境变量与2.7.4集群相配合。大体过程是:
解压hadoop-common-2.7.1-bin-master压缩包
更新Windows系统的HADOOP_HOME环境变量
将文件夹中的hadoop.dll复制到C:\Windows\System32
设置HadoopEclipse插件
因为要频繁地操作HDFS文件,所以最好使用Eclipse进行开发,而且使用Eclipse插件还可以更方便地解决Hadoop依赖jar包的问题,以及提供了Hadoop的项目透视图。
按照之前的文档设置好插件,注意:
检查Eclipse的Windows à Proferencesà Hadoop Map/Reduce的Hadoop installationdirectory是否设置为hadoop-2.7.4
3安装包的解压位置(注意不是Hadoop-Common)。
创建MapReduce项目
使用插件提供的功能创建项目
推荐用这种方法创建项目。
在Eclipse中File à New à Project…选择Map/Reduce Project。
创建好之后,MapReduce所需Jar已经自动导入(可以看到导入了很多Jar包):
手动创建项目
适用于没有插件的情况(如使用Intellj IDEA),比较麻烦,可以尝试一下。
创建普通Java项目。
添加Jar包:在项目上点右键Build Path à Config Build Path..或Properties 选择Java Build Path。选择Add Library à UserLibrary
把hadoop-common、hadoop-hdfs、hadoop-mapreduce、hadoop-yarn都以同样的方式添加成User Library。最终的效果是:
启动历史服务器记录:
mr-jobhistory-daemon.shstart historyserver