前几天刚刚装了一个HDP集群,在添加spark2服务以后,设置的3个thriftserver总是有一个报错,删除了一个thriftserver以后可以正常启动,原以为这样就能正常运行了,然而,并没有。
昨天由于需要,运行了一个MR任务,奇怪的是任务总是被阻塞起(忽略红线)。
可以看到,上面有两个thriftserver正在运行。于是乎,我手动停止了一个thriftserver。
MR任务已经圆满完成。
猜测:yarn的任务并行度为2或者运行两个thriftserver已经把集群资源占用完!
继续观察,去查看有关yarn的配置,特别是关于资源优化相关配置。
然后各种网上找资料。
1 yarn.nodemanager.resource.memory-mb 表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。
我这里初始值莫名的是3072M
yarn.scheduler.minimum-allocation-mb 单个任务可申请的最少物理内存量,默认是1024(MB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数。
我这里的是1024Myarn.scheduler.maximum-allocation-mb 单个任务可申请的最多物理内存量,默认是8192(MB)
额,我的服务器内存是8G,所以还是不要用默认的好,所以设置为3072M。
通过查看配置,终于懂了为什么yarn只能支持2个任务运行了,单个任务的最少内存量是1G,然而yarn上可用的内存总量却不到3G。
解决方法:调大yarn.nodemanager.resource.memory-mb 值,我这里把它设置为最大。
然后把相关服务重起。
测试一下,设置多个thriftserver
可以看到,所有thriftserver都能启动。
其任务也全部正常在默默的在跑。
搞定。
yarn调优参数参考于:
http://blog.csdn.net/lsp1991/article/details/49337399