设为首页 收藏本站
查看: 763|回复: 0

[经验分享] ma-hadoop1 集群内存设置

[复制链接]

尚未签到

发表于 2016-12-5 09:12:30 | 显示全部楼层 |阅读模式
  如下介绍是 hadoop1 的非 yarn下内存分配设置:
  1. 内存
  hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。
  大部分情况下,这个统一设置的值可能并不适合。例如对于namenode节点,1000M的内存只能存储几百万个文件的数据块的引用。
单独设置namenode的内存,可以通过HADOOP_NAMENODE_OPTS来设置。
单独设置secondrynamenode的内存,可以通过HADOOP_SECONDARYNAMENODE_OPTS来设置,使得它与namenode保持一致。
单独设置datanode的内存,可以通过HADOOP_DATANODE_OPTS来设置
单独设置BalancerNode的内存,可以通过HADOOP_BALANCER_OPTS来设置
单独设置jobtracker的内存,可以通过HADOOP_JOBTRACKER_OPTS来设置
此外,tasktracker启动独立的子JVM以运行map和reduce任务,分配给每个子JVM的内存量由mapred.child.java.opts属性(mapred-site.xml)控制,默认值为200M。
  星环内存设置:
/etc/hdfs1/conf/hadoop-env.sh   hdfs的内存设置如下

export HADOOP_NAMENODE_OPTS="-Xmx32205m -Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"    31.5G
export HADOOP_SECONDARYNAMENODE_OPTS="-Xmx4096m -Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS"   4G
export HADOOP_DATANODE_OPTS="-Xmx4096m -Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS"   4G
export HADOOP_BALANCER_OPTS="-Xmx4096m -Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS"   4G
  /etc/mapreduce1/conf/hadoop-env.sh   mapreduce的内存设置如下

export HADOOP_JOBTRACKER_OPTS="-Xmx4096m -Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS"  4G
export HADOOP_TASKTRACKER_OPTS="-Xmx4096m $HADOOP_TASKTRACKER_OPTS"    4G
  
2. 最大map任务数
  一个tasktracker能够同时运行最大map任务数,由mapred.tasktracker.map.tasks.maximum属性(mapred-site.xml)控制,默认为2。
  3. 最大reduce任务数
  一个tasktracker能够同时运行最大reduce任务数,由mapred.tasktracker.reduce.tasks.maximum属(mapred-site.xml)性控制,默认为2。
  如果使用默认每个节点2个map slots, 2个reduce slots时,当来了3个map任务时,第三个map任务会在别的
  2个map任务执行完毕后在进入map slots执行。
  关于map reduce task个数的设置,以及这两个任务内存的分配设置,在星环配置文件中设置如下:

<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>24</value>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>12</value>
</property>
<property>
<name>mapred.child.java.opts</name>    运行map/reduce任务的内存
<value>-Xmx4096m -XX:+UseConcMarkSweepGC -XX:ParallelCMSThreads=1 -XX:ParallelGCThreads=1</value>
</property>

  
 
个人觉得,上述设置后,每个工作节点 使用的内存为:
datanode系统进程内存4G  + tasktracker系统进程内存4G +  tasktracker系统进程内存 4G+ 4G + (24+12)*4G = 156G 
  
上述这种设置下, map+reduce任务数 / 工作节点cpu核数(25)  = 1.5 倍,
  在一个128G内存的工作节点下,上面设置的map/reduce任务内存为4G合适,、
  这个工作节点不一定就 会将map reduce任务都占满并运行,大多情况下是占满map,
  这样, 4G + (24)*4G = 100G  正好还有 28G的内存给当前工作机器别的任务使用,比如集群通讯等
  
 
4. 小总结:计算节点的内存占用量。 
  默认情况下,一个同时运行了namenode,secondarynamenode和jobtracker的主节点(系统进程),各自使用1000M内存,所以总计使用3000M(2.92G)。
默认情况下,一个从节点运行了如下守护进程:
  1个datanode:默认占用1000M内存。
1个tasktracker:默认占用1000M内存。
上面是hadoop系统进程占据内存
=============================================================================
下面是工作进程占用内存,这里使用map task个数的默认值,reduce task个数的默认值
最多2个map任务:2*200M=400M。
最多2个reduce任务:2*200M=400M。
即默认情况下,一个从节点需要使用2800M内存量(2.74G)。
  
在一个tasktracker上能够同时运行的任务数取决于这台机器上有多少个处理器。
由于mapreduce作业通常是I/O-bound,因此将任务数设定为超出处理器数也有一定道理,可以获得更好的利用率。
经验法则是任务总数(map任务数与reduce任务数之和)与处理器的比值在1和2之间, 
即任务总数最少为节点处理器个数,
查看当前机器cpu个数:

[iyunv@chinadaas01 ~]# grep "model name" /proc/cpuinfo | wc -l
24
  
例如,假设一台8个处理器的工作节点,每个处理器上运行2个进程,
则可以将最大map任务数和最大reduce任务数分别设置成7(因为还有datanode和tasktracker进程,所以不能设置为8),
各个JVM子任务可用内存设置为400M,则总内存开销=1000M(datanode)+1000M(tasktracker)+7*400M(map)+7*400M(reduce)=7600M(7.5G)
  这样配置是否合理,还需要考虑是否给这台机器上的其他进程预留了足够内存,否则可能导致各进程在系统中不断切换,导致性能恶化。
可以使用一些工具来监控集群的内存使用情况来进行优化,例如Ganglia工具。
  hadoop也可以设置mapreduce操作所能使用的最大内存量,这是分别针对各项作业进行设置的。(详见《hadoop权威指南》117页的“shuffle和排序”小节)
  即集群中,工作节点 map/reduce任务 个数和任务内存设置,要参考如下公式

1   工作节点cpu个数=<任务总个数 <= 工作节点cpu个数的2倍
2   保证工作节点内存 > (datanode)内存+(tasktracker)内存+(map task内存)*(map task总个数)+ (redcue task内存)*(reduce task总个数)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-309822-1-1.html 上篇帖子: hadoop安装和配置 下篇帖子: eclipse远程连接hadoop-笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表