hadoop2.0 做spider下载集群的设置

     hadoop一般设置中,一个map或者reduce用到的内存一般设置是1G内存,但作为下载来用,显然是浪费的,一个下载代码用到的内存顶多几十M,而且因为主要耗时是在网络,因此一个cpu可以做几十个下载进程都没啥问题。hadoop一般一个cpu就只跑一个map/reduce.

    因此需要对hadoop的设置进行优化,否则就太浪费了。
最核心的设置如下,这里用的是阿里云的云服务器,4G内存,1个cpu作为任务节点。
1 内存
yarn.nodemanager.resource.memory-mb,所有容器内存:2.4G
yarn.scheduler.minimum-allocation-mb,单个容器最小内存:200M
mapreduce.task.io.sort.mb,jvm缓存占用内存数量,这个一定要注意,默认的是256M,显然过大了,这里设置为:50M

2 cpu
yarn.nodemanager.resource.cpu-vcores,一个cpu虚拟核数: 32
yarn.scheduler.minimum-allocation-vcores,一个container的最小的的虚拟cpu个数:1

这里container可以容纳一个map或者reduce。因为cpu可以随便虚拟个数,因此,主要是内存限制。一个机器可以给所有容器的最大内存 除以 每个container的最小内存 就是一个机器能够容纳的container个数。

然后注意,mapper运行spider,reducer其实是不需要的,因此,设置-numReduceTasks 0或者-reducer NONE则没有reducer程序,mapper的输出直接作为整个作业的输出。

其他至于mapreduce的内存大小啥的,好像都没用,还有堆栈大小啥的,一般设置大一点就行。具体其他设置如下图所示:
hadoop2.0 做spider下载集群的设置_第1张图片 hadoop2.0 做spider下载集群的设置_第2张图片

另外要注意:nodemanager的内存如果设置的太小,任务过多时,可能把cpu占满,我们就出现过这个问题,设置为256M,结果cpu总是100%,因此这个就不要省了,设置成1G就行



你可能感兴趣的:(数据挖掘)