转-》hadoop 性能因素

1. 通常每个服务器的Map + Reduce总数跟cpu核数大致一致,经验表现为略大于 cpu核数的设置可以发挥最大性能,比如8核配5个map, 5个reduce

2. Map数跟Reduce配置个数通常配置相同

3. Hadoop允许集群里的不同节点配置Map跟Reduce数不同,避免服务器开销不均 匀

4. HDFS block大小默认64M推荐128M

5. HDFS在并发写同一文件情况执行状况未知,可能存在写冲突问题

6. HDFS文件不允许修改,文件一旦建立(写入流关闭)后不能修改

7. 移动计算的代价比移动数据的代价低,通常Map在数据存放的节点服务器上运 行,当在其他服务器上运行是上运行时,该节点数据会拷贝到执行服务器上再进行运算

8. 在job的运行时,每个参与任务的Map处理的datanode节点对象是固定不变 的,Map处理dataNode的粒度可以到文件的行级,比如一个Map可以处理某个dataNode的 前10000行

9. 每个Reduce接受所有Map的结果并且只执行跟自己相关的key的Reduce

10. HDFS上跑的应用,主要是以流式读为主的应用,进行批量处理,比如log分析、 索引构建、数据关联等

11. Hadoop支持根据应用分配额定最大map及reduce个数功能

12. HDFS采用master/slave架构(nameNode,dateNode), NameNode是个单点中心服务 器, 管理文件系统及客户端的访问

13. HDFS默认文件副本3个,不同应用可以通过客户端API决定每个文件的副本数为任 意值

一些配置属性:
<property>
<name>mapred.min.split.size</name>
<value>268435456</value>
<description>决定了每个 Input Split的最小值,也间接决定了一个Job的map 数目。
这里设置为256M,默认64M,有效减少了map的数量,因为在大数据量时,
map数量过大并不一定速度就快,而1个进程处理256M数据也是很快的</description>
</property>
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
<description>打开map输出压缩以节省各节点传输的流量</description>
</property>
<property>
<name>io.sort.mb</name>
<value>250</value>
<description>map输出结果在内存占用buffer的大小,当buffer达到一定阈值,
会启动一个后台线程来对buffer的内容进行排序,然后写入本地磁盘(一个spill文件).默认100M,
有点小了,但并不是越大越好,尝试过调到400M,发现机器内存有点吃不消,又回调到250M</description>
</property>
<property>
<name>mapred.reduce.parallel.copies</name>
<value>10</value>
<description>Reduce copy数据的线程数量,默认值是5</description>
</property>
<property>
<name>mapred.job.shuffle.merge.percent</name>
<value>0.8</value>
<description>从Map节点取数据过来,放到内存,当达到这个阈值之后,
后台启动线程(通常是Linux native process)把内存中的数据merge sort,
写到reduce节点的本地磁盘;</description>
</property>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值