淘宝主搜索离线集群完成hadoop2.0升级介绍

查看数: 18800 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-3-19 21:12

正文摘要:

大部分公司使用hadoop1.x,有的hadoop 0.x,淘宝已经升级hadoop2.x,他们的一些经验可以借鉴: 1.淘宝升级yarn,集群有什么变化? 2.mr1任务要运行在hdfs 2.0上部分任务会运行为什么会失败? 3.hdfs shell命令存在 ...

回复

pig2 发表于 2014-3-19 21:19:26
本帖最后由 pig2 于 2014-3-19 21:22 编辑

1.淘宝升级yarn,集群有什么变化?
通过升级yarn对集群资源进行更有效的管理,摒弃了slots的物理划分,采用内存资源控制使集群资源被更有效的利用,从而提高整个集群的吞吐,同时支持丰富的计算框架,为后续DUMP应用架构优化调整提供了广阔的舞台。

2.mr1任务要运行在hdfs 2.0上部分任务会运行为什么会失败?
mr1任务要运行在hdfs 2.0上部分任务会运行失败,主要是2.0中将原来的class换成了interface,需要重新编译即可,少量代码需要添加下throws IOException,依赖的hadoop-core jar包也被拆分成了几个(common,hdfs,mr1等)


3.hdfs shell命令存在哪些差异?

hdfs shell命令差异,主要是针对mkdir或者touchz等中间如果有不存在的路径不会自动创建

4.升级hdfs 2.0后集群整体读I/O升高明显,从而导致特别是I/O需求高的build任务延时,为什么?该如何解决?

原因是2.0对dfs.client.read.shortcircuit的调整,在检查是否有权限(dfs.block.local-path-access.user中配置的用户名)进行shortcircuit读取时如果没有权限会将本地的datanode作为deadnode处理,然后数据通过远程读取,又因为hbase中dfs.client.read.shortcircuit.buffer.size设置的值不合适导致多读了很多无谓的数据,导致整个集群I/O升高

解决方案:
设置dfs.client.read.shortcircuit.buffer.size=16K与hbase的block的大小相匹配

4.1淘宝第二阶段升级遇到了什么问题?
1)升级到yarn后,Capacity Schedule进行了更新,job提交只需要指定叶子queue名字即可,指定全路径会报错
2)没有了map/reduce slots的概念,集群只需配置可用的内存大小,


5.IPV4和IPV6差异引起的长短机器名问题及job data local比例低的问题如何解决?

在yarn resource manager下显示部分机器是长机器名,部分机器是短机器名
hbase集群下显示全是长机器名,原因是yarn与hbase获取机器名调用的方法不一样,得到的结果也不一样,导致resourcemanager在分配container时进行优先的host匹配是匹配不上,最后变成任意匹配导致
获取机器名差异的根本原因经过分析是java处理ipv6有bug和yarn脚本bug共同导致

解决方案1是修改yarn脚本,并提交issue到社区:https://issues.apache.org/jira/browse/YARN-1226
解决方案2就是给集群配置上机架感知,且让一个机器一个rack的虚拟机架配置,通过rack匹配绕开任意匹配。



6.集群资源使用100%,job一直hang住该如何解决?


当集群root跑满100%而下面的子queue未满时(因为希望集群的资源共享竞争,queue的最大可用资源会进行适当的超配)
不会触发抢占reduce资源的过程

解决方案:
l 不同queue的大任务尽量避开运行
l 后续patch修改在root满时触发抢占



7.load任务写hbase偶尔会卡住的原因是什么?
原因是当集群中有节点挂掉或者网络等出现异常可能会导致hbaseclient在select时无线等待,而锁无法释放
解决方案:
在hbase client的代码里设置超时时间

8.设置mapreduce.map.tasks不生效,如何解决?
分析是Hive的InputFormat的问题
如InputFormat设置为org.apache.hadoop.hive.ql.io.CombineHiveInputFormat,需要设置mapreduce.input.fileinputformat.split.maxsize来控制map的个数
如InputFormat设置为org.apache.hadoop.hive.ql.io.HiveInputFormat,则此参数生效
解决,将hive配置中默认的InputFormat配置成org.apache.hadoop.hive.ql.io.HiveInputFormat



关闭

推荐上一条 /2 下一条