分享

cdh5 只有一台nodemanager跑作业,求高手

wjhdtx 发表于 2015-4-8 14:48:16 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 12 43631
使用三台虚拟机搭建的hadoop集群,一主两从。
使用cloudera的版本跑作业,只有一台从机器跑作业,另一台从机器作为ApplicationMater,没有跑作业,导致作业执行很慢。

而apache版本的就没有这个问题,两台机器都跑作业。

日志量是5个g,分片也有40左右,说明需要40左右的map来跑。
我apache hadoop做个优化,cdh5应该是优化过了(当然是针对我的虚拟机),我也把cdh中map和reduce占用的内存调低了,但还是只有一个机器跑作业,问下是什么原因???
谢谢

已有(13)人评论

跳转到指定楼层
jixianqiuxue 发表于 2015-4-8 15:43:20
机器都是什么配置。
回复

使用道具 举报

jixianqiuxue 发表于 2015-4-8 16:00:52
能否具体说说怎么优化的。
回复

使用道具 举报

rsgg03 发表于 2015-4-8 16:04:44
数据量有点小,一台机器就能把所有的任务领光了。试一下,采用下面调度方式
fair scheduler,可在yarn-site.xml中,将参数yarn.scheduler.fair.max.assign设置为1(默认是-1,)
回复

使用道具 举报

langke93 发表于 2015-4-8 16:08:12
楼主可以说说怎么优化的,内存是怎么优化的,是否设置过边界测试。
可以设置足够小(比方接近为0),然后在慢慢调整,相信能有有收获
回复

使用道具 举报

yongjian3311 发表于 2015-4-8 16:11:40
1. 之前能成功启动整个集群吗?
2. 会不会是因为datanode -format 之后生成的任务ID跟子节点的版本不一样所以关联不上启动不成功?
回复

使用道具 举报

wjhdtx 发表于 2015-4-8 16:14:34
rsgg03 发表于 2015-4-8 16:04
数据量有点小,一台机器就能把所有的任务领光了。试一下,采用下面调度方式
fair scheduler,可在yarn-sit ...

这个参数再cm界面中的“配置”中搜不到啊,难道手动去修改配置文件?

36个分片,需要将近40个map,才两个机器,配置是
a.png ,个人觉得一台机器不可能都领完啊


我再想,是不是时间没有同步,刚弄ntp服务。
回复

使用道具 举报

wjhdtx 发表于 2015-4-8 16:15:48
yongjian3311 发表于 2015-4-8 16:11
1. 之前能成功启动整个集群吗?
2. 会不会是因为datanode -format 之后生成的任务ID跟子节点的版本不一样 ...

集群没问题,都启动了,作业也跑过。
回复

使用道具 举报

wjhdtx 发表于 2015-4-8 16:17:49
langke93 发表于 2015-4-8 16:08
楼主可以说说怎么优化的,内存是怎么优化的,是否设置过边界测试。
可以设置足够小(比方接近为0),然后 ...

压缩、内存、cpu,以及其他map和reduce执行过程中的相关参数,了解mapreduce过程,然后调优,比如mapreduce.task.io.sort.mb、mapreduce.tasktracker.http.threads、mapreduce.reduce.shuffle.parallelcopies等等。
回复

使用道具 举报

langke93 发表于 2015-4-8 16:20:20
本帖最后由 pig2 于 2015-4-8 18:57 编辑
wjhdtx 发表于 2015-4-8 16:17
压缩、内存、cpu,以及其他map和reduce执行过程中的相关参数,了解mapreduce过程,然后调优,比如mapredu ...




试试这些吧:

 (1) 默认情况下,各个节点的负载不均衡(任务数目不同),有的节点很多任务在跑,有的没有任务,怎样让各个节点任务数目尽可能均衡呢?

  答: 默认情况下,资源调度器处于批调度模式下,即一个心跳会尽可能多的分配任务,这样,优先发送心跳过来的节点将会把任务领光(前提:任务数目远小于集群可以同时运行的任务数量),为了避免该情况发生,可以按照以下说明配置参数:

  如果采用的是fair scheduler,可在yarn-site.xml中,将参数yarn.scheduler.fair.max.assign设置为1(默认是-1,)

  如果采用的是capacity scheduler(默认调度器),则不能配置,目前该调度器不带负载均衡之类的功能。

  当然,从hadoop集群利用率角度看,该问题不算问题,因为一般情况下,用户任务数目要远远大于集群的并发处理能力的,也就是说,通常情况下,集群时刻处于忙碌状态,没有节点一直空闲着。

  (2)某个节点上任务数目太多,资源利用率太高,怎么控制一个节点上的任务数目?

  答:一个节点上运行的任务数目主要由两个因素决定,一个是NodeManager可使用的资源总量,一个是单个任务的资源需求量,比如一个 NodeManager上可用资源为8 GB内存,8 cpu,单个任务资源需求量为1 GB内存,1cpu,则该节点最多运行8个任务。

  NodeManager上可用资源是由管理员在配置文件yarn-site.xml中配置的,相关参数如下:

  yarn.nodemanager.resource.memory-mb:总的可用物理内存量,默认是8096

  yarn.nodemanager.resource.cpu-vcores:总的可用CPU数目,默认是8

  对于MapReduce而言,每个作业的任务资源量可通过以下参数设置:

  mapreduce.map.memory.mb:物理内存量,默认是1024

  mapreduce.map.cpu.vcores:CPU数目,默认是1

  注:以上这些配置属性的详细介绍可参考文章:Hadoop YARN配置参数剖析(1)—RM与NM相关参数。

  默认情况,各个调度器只会对内存资源进行调度,不会考虑CPU资源,你需要在调度器配置文件中进行相关设置,具体可参考文章:Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数和Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数。


Hadoop YARN常见问题以及解决方案
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条