【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实战>实战多一些 二.在安装完全分布 ...
随机推荐
- iOS笔记———数据存储
应用沙盒:应用文件系统的根目录,每个应用都有独自的沙盒相互:在xcode中可以用NSHomeDirectory()函数,打印当前应用的沙盒根路径. 应用程序包:包含了所有资源文件和执行文件; * Do ...
- Linux 常识
一.Linux 各目录及每个目录的详细介绍: Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图: /bin 二进制可执行命令 /dev 设备特殊文件 ...
- windows 10 开始菜单和cortana无法工作的问题
过了个周末,到了实验室一开机发现报了个关键错误:开始菜单和cortana无法工作. 经过一番google ,发现问题,原来是360禁用了一个服务导致,这个服务是UserManager. 我直接去开启发 ...
- Hive文件存储格式
hive文件存储格式 1.textfile textfile为默认格式 存储方式:行存储 磁盘开销大 数据解析开销大 压缩的text文件 hive无法进行合并和拆分 2.sequencef ...
- Android -- PopupWindow(其中嵌套ListView 可以被点击)
1. 效果图
- BZOJ4488: [Jsoi2015]最大公约数
Description 给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列{Al,Al+1...Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L,R ...
- sql with as union all
WITH RPL (FId,Fname,Forder) AS ( SELECT ment.deptno,ment.deptname,ment.orderno FROM JTERP..fg_depart ...
- qunit 前端脚本测试用例
首先引用qunit 测试框架文件 <link rel="stylesheet" href="qunit-1.22.0.css"> <scrip ...
- Java中9种IO的读取方式
数据的读写,按照数据类型可以分为两种:字符流和字节流(二者区别?).所以数据读取方式按照数据类型也可以分为两类:字节流的读取和字符流的读取. 一.字节流读取操作: | | |-----1.FileI ...
- iOS开发之AFNetworking 3.0.4使用
昨天使用Cocoapods导入AFN做POST的时候,导入的最新版的3.0.4,突然发现找不到AFHTTPRequestOperationManager了...上github上一看,发现没有这个了.刚 ...