【hadoop2.2(yarn)】基于yarn成功执行分布式map-reduce,记录问题解决过程。
hadoop2.x改进了hadoop1.x的架构, 具体yarn如何工作以及改进了什么可以在网上学, 这里仅记录我个人搭建的问题和理解,希望能帮助遇到困难的朋友。
在开始前,必须了解yarn版本的mapreduce框架基础组件包括1个resourcemanager和每个slave上各1个nodemanager,其他进程均由mapreduce任务动态创建。
1,怎么简单高效的部署分布式集群?
答:先在1台机器上准备好hadoop和java环境,将java和hadoop的jar包环境变量写到.bashrc里去,填写hadoop配置文件。最后,配置这台服务器到其他所有slave节点的信任关系,将整个hadoop目录scp到slave节点上即可完成部署。
2,hadoop配置有哪些是至关重要的?
a) core-site.xml:指定hdfs的客户端访问地址,指定hadoop的临时文件目录:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/liangdong/hadoop/hadoop/tmp/hadoop-${user.name}</value>
<description>A base for other temporarydirectories.</description>
</property> <property>
<name>fs.default.name</name>
<value>hdfs://10.42.41.51:8010</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.
</description>
</property>
</configuration>
b) hdfs-site.xml:指定hdfs副本个数,按照我的理解,上述fs.default.name是namenode的RPC通讯地址,而这里配置的是namenode和secondarynodenode的管理员HTTP地址,并且secondarynamenode会启动到对应的Host节点上,直到namenode挂了,那么secondarynamenode就会bound到fs.default.name里的端口(8010)提供服务。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.
Theactual number of replications can be specified when the file is created.
Thedefault is used if replication is not specified in create time.
</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>m1-reader-q1preonline07.m1.baidu.com:50070</value>
<description>Secondary get fsimage and edits via dfs.http.address</description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>m1-reader-q1preonline08.m1.baidu.com:50070</value>
<description>NameNode get the newest fsimage via dfs.secondary.http.address</description>
</property>
</configuration>
c) mapred-site.xml:关于mapreduce框架的配置,指定框架为yarn,指定map和reduce默认的个数:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description></description>
</property> <property>
<name>mapred.map.tasks</name>
<value>10</value>
<description>
As a rule of thumb, use 10x the number of slaves(i.e., number of tasktrackers).
</description>
</property> <property>
<name>mapred.reduce.tasks</name>
<value>2</value>
<description>
As a rule of thumb, use 2x the number of slaveprocessors (i.e., number of tasktrackers).
</description>
</property>
</configuration>
d)yarn-site.xml:指定resourcemanager的监听客户端提交地址,监听applicationMaster来申请资源的地址,监听nodemanager来上报状态的地址,还有2个给管理员访问的HTTP地址,还有一个至关重要的配置是必须写的,这个配置是2.2版本一个bug导致不会加载默认参数,所以这里要给它写上,就是aux-services。
<configuration> <!-- Site specific YARN configuration properties --> <property>
<name>yarn.resourcemanager.address</name>
<value>m1-reader-q1preonline07.m1.baidu.com:8032</value>
<description></description>
</property> <property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>m1-reader-q1preonline07.m1.baidu.com:8030</value>
<description></description>
</property> <property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>m1-reader-q1preonline07.m1.baidu.com:8031</value>
<description></description>
</property> <property>
<name>yarn.resourcemanager.admin.address</name>
<value>m1-reader-q1preonline07.m1.baidu.com:8033</value>
<description></description>
</property> <property>
<name>yarn.resourcemanager.webapp.address</name>
<value>m1-reader-q1preonline07.m1.baidu.com:8088</value>
<description></description>
</property> <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> </configuration>
最后,把所有datanode的机器ip/host填到slaves文件里(自己创建一个):
m1-reader-q1preonline07.m1.baidu.com
m1-reader-q1preonline08.m1.baidu.com
m1-reader-q1preonline09.m1.baidu.com
m1-reader-q1preonline10.m1.baidu.com
slaves文件是给启动集群脚本看的,它会ssh到每台slave机器上启动datanode和nodemanager。而上述其他配置文件,一方面用于指导hadoop集群的进程启动,一方面也被hadoop客户端读取从而获取集群的一些监听地址,这样才能连接上去访问集群或者提交mapreduce任务,这是很容易理解的。
3,怎么启动集群和停止集群?
答:sbin/start-all.sh sbin/stop-all.sh
4,怎么动态加个slave节点?
答:把hadoop环境拷贝一份过去,配好控制机到slave的信任,然后再控制机上修改一下slaves文件把机器IP加进去,然后再sbin/start-all.sh一次,脚本检测到这个slave上进程没启动就给拉起来了,一旦拉起来slave上的进程会根据各种配置文件主动连到namenode和resourecemanager上,就进去集群了。
5,在yarn上怎么跑mapreduce?
答:和hadoop v1一样,就hadoop streaming去提交就可以了,这里hadoop客户端会从配置文件里读yarn resourcemangager提交任务地址并向其提交任务,和v1版本向jobtracker提交不同。
6,怎么看mapreduce任务状态?
答:上面配置里有yarn-site.xml的配置,里面不是有2个管理员地址吗,就去那里看就可以了,如果一切配置得当,你应该可以看到所有集群节点以及当前在上面跑了多少个map等等信息。
7,当mapreduce跑起来之后是什么样子?
答:你理应能够在所有slaves节点上看到大量java进程,使用jps命令可以看到applicationMaster进程还有若干jar包或者你的map/reduce程序在跑,最好通过resoucemanager的http页面观察一下是不是所有slave都进入了cluster,并且是不是都有container启动。
8,有任何问题可以留言,我个人发现的新问题也会继续追加,谢谢。
【hadoop2.2(yarn)】基于yarn成功执行分布式map-reduce,记录问题解决过程。的更多相关文章
- Hadoop2.0构成之YARN
YARN产生背景 Hadoop1.x中的MapReduce构成图如下: 在Hadoop1.x中MapReduce是Master/Slave结构,在集群中的表现形式为:1个JobTracker带多个Ta ...
- Spark运行模式_基于YARN的Resource Manager的Custer模式(集群)
使用如下命令执行应用程序: 和"基于YARN的Resource Manager的Client模式(集群)"运行模式,区别如下: 在Resource Manager端提交应用程序,会 ...
- spark基于yarn的两种提交模式
一.spark的三种提交模式 1.第一种,Spark内核架构,即standalone模式,基于Spark自己的Master-Worker集群. 2.第二种,基于YARN的yarn-cluster模式. ...
- 12、基于yarn的提交模式
一.三种提交模式 1.Spark内核架构,其实就是第一种模式,standalone模式,基于Spark自己的Master-Worker集群. 2.第二种,是基于YARN的yarn-cluster模式. ...
- Spark剖析-宽依赖与窄依赖、基于yarn的两种提交模式、sparkcontext原理剖析
Spark剖析-宽依赖与窄依赖.基于yarn的两种提交模式.sparkcontext原理剖析 一.宽依赖与窄依赖 二.基于yarn的两种提交模式深度剖析 2.1 Standalne-client 2. ...
- centos6.6安装hadoop-2.5.0(三、完全分布式安装)
操作系统:centos6.6(三台服务器) 环境:selinux disabled:iptables off:java 1.8.0_131 安装包:hadoop-2.5.0.tar.gz hadoop ...
- Hadoop-2.4.0安装和wordcount执行验证
Hadoop-2.4.0安装和wordcount执行验证 下面描写叙述了64位centos6.5机器下,安装32位hadoop-2.4.0,并通过执行 系统自带的WordCount样例来验证服务正确性 ...
- HBase -- 基于HDFS的开源分布式NoSQL数据库
HBase(Hadoop Database)是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,我们可以利用HBase技术在廉价的PC上搭建起大规模结构化存储集群.同Google的Bigtable ...
- Hadoop2.7.5+Hbase1.4.0完全分布式
Hadoop2.7.5+Hbase1.4.0完全分布式一.在介绍完全分布式之前先给初学者推荐两本书:<Hbase权威指南>偏理论<Hbase实战>实战多一些 二.在安装完全分布 ...
随机推荐
- 从零开始山寨Caffe·拾:IO系统(三)
数据变形 IO(二)中,我们已经将原始数据缓冲至Datum,Datum又存入了生产者缓冲区,不过,这离消费,还早得很呢. 在消费(使用)之前,最重要的一步,就是数据变形. ImageNet Image ...
- 面试题:给定数组a,找到最大的j-i, 使a[j]>a[i]
第一种方法: 用两重循环对每对点都试一下,然后取最大值即可,时间复杂度为O(n2) #include <iostream> #include <algorithm> using ...
- 如何对tableview进行自定义多选
前言: 很多入门不久的程序员或许都会遇到系统自带的tableview多选时cell选择时不能选择自己想要的点击时的颜色或者图片,这让初级开发者们很烦恼.今天,我试着花了几个小时的时间用了自己的想法,去 ...
- dictionary 应用(绑定dgv)
dictionary的用法://初始化添加所有车位进这队列 Utility.Effectlist.Add(); //每触发一次,用这个增加数量 Utility.Effectlist["Car ...
- spring quartz 配置实现定时任务 详解
一. 编写定时任务JAVA类 比如: public class QuartzJob { public QuartzJob(){ System.out.println(" ...
- *HDU 2451 数学
Simple Addition Expression Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- js正则获取url所带参数值
在js字符串对象原型中添加这个获取链接参数值方法,getAddrVal(): String.prototype.getAddrVal = String.prototype.getAddrVal||fu ...
- 线程处理模型 由于 SynchronizationContext 引起的死锁问题解决
由于GUI 应用程序 不能使用线程池的线程更新UI,只能使用 GUI 线程更新,所以在 await 前后需要保证是同一个 GUI 线程 ASP.NET 程序 的线程处理客户端请求的时候,需要假定客户端 ...
- Dexpress 中 grid的使用
grid 中加入checkbox Run desiger Columns ColumnEdit中选择checkbox 此时我们要在后台手动指定一个数据列如下代码: dtRebatesReport.Co ...
- Django发送邮件
1. 配置相关参数 如果用的是 阿里云的企业邮箱,则类似于下面: 在 settings.py 的最后面加上这些 EMAIL_BACKEND='django.core.mail.backends.smt ...