本帖最后由 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 |