【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实战>实战多一些 二.在安装完全分布 ...
随机推荐
- ASP.NET MVC3中Controller与View之间的数据传递
在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一. Controller向Vie ...
- 【BZOJ3940】【BZOJ3942】[Usaco2015 Feb]Censoring AC自动机/KMP/hash+栈
[BZOJ3942][Usaco2015 Feb]Censoring Description Farmer John has purchased a subscription to Good Hoov ...
- 微信小程序火车票查询 直取12306数据
最终效果图: 样式丑哭了,我毕竟不是前端,宗旨就是练练手,体验微信小程序的开发,以最直接的方式获取12306数据查询火车票. 目录结构: search1是出发站列表,search2是目的站列表,命名没 ...
- flash跨域访问,crossdomain.xml,error #2048
最近遇到了flash的万年老梗,跨域访问的问题.之前一直没有处理过这类问题,是因为做项目的时候别人已经处理好了.真到自己遇到的时候,还是很费脑筋的. 1遇到的问题 客户端发布到网页的时候,socket ...
- js兼容总结之获取非行间样式
非行间样式案例 #div1 { width: 200px; height: 200px; background: red; } IE获取非行间样式 var oDiv = document.getEle ...
- Winform控件WebBrowser与JS脚本交互
1)在c#中调用js函数 如果要传值,则可以定义object[]数组. 具体方法如下例子: 首先在js中定义被c#调用的方法: function Messageaa(message) { ...
- php-(/usr/local/php)安装编译选项
./configure \ --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --enable-fpm \ ...
- apache 使用htaccess自定义路由机制
先开启伪静态.详情查看这篇文章:http://www.cnblogs.com/CyLee/p/5544119.html 然后在项目根目录中新建一个.htaccess文件,加入以下代码 正则中()的变量 ...
- 利用js来实现文字的滚动(也就是我们常常见到的新闻版块中的公示公告)
首先先看一下大致效果图(因为是动态的,在页面无法显示出来) 具体的实现代码如下: 1.首先是css代码: <style type="text/css"> body,ul ...
- JavaScript编码规范
1 代码风格 1.1 结构语句 [强制] 不得省略语句结束的分号. [强制] 在 if / else / for / do / while 语句中,即使只有一行,也不得省略块 {...}. 示例: / ...