hadoop 优化参数

###hadoop 优化参数

使用 StringBuffer 而不是 String当需要对字符串进行操作时,使用 StringBuffer 而不是 String,String
是 read-only 的,如果对它进行修改,会产生临时对象,而 StringBuffer
是可修改的,不会产生临时对象。
对参数进行调优
查看 linux 的服务,可以关闭不必要的服务
ntsysv
停止打印服务
#/etc/init.d/cups stop
#chkconfig cups off
关闭 ipv6
#vim /etc/modprobe.conf
添加内容
alias net-pf-10 off
alias ipv6 off
调整文件最大打开数
查看: ulimit -a 结果:open files (-n) 1024
临时修改: ulimit -n 4096
持久修改:
vi /etc/security/limits.conf 在文件最后加上:
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
*
hard nproc 65535
修改 linux 内核参数
vi /etc/sysctl.conf
添加
net.core.somaxconn = 32768
#web 应 用 中 listen 函 数 的 backlog 默 认 会 给 我 们 内 核 参 数 的
net.core.somaxconn 限制到 128,而 nginx 定义的 NGX_LISTEN_BACKLOG
默认为 511,所以有必要调整这个值。
调整 swap 分区什么时候使用:
查看:cat /proc/sys/vm/swappiness
设置:vi /etc/sysctl.conf
在这个文档的最后加上这样一行: vm.swappiness=10
表示物理内存使用到 90%(100-10=90)的时候才使用 swap 交换区
关闭 noatime
vi /etc/fstab
/dev/sda2 /data ext3 noatime,nodiratime 0 0
设置 readahead buffer
blockdev --setra READAHEAD 512 /dev/sda 一下是修改 mapred-site.xml 文件
修改最大槽位数
槽位数是在各个 tasktracker 上的 mapred-site.xml 上设置的,默认都
是 2

下面展示一些 `内联代码片`。
<property>
		<name>mapred.tasktracker.map.tasks.maximum</
		name> 
		<--++++maptask 的最大数-->
		<value>2</value>
</property>
<property>
		<name>mapred.tasktracker.reduce.tasks.maximum</name> 
		<--+++reducetask 的最大数-->
		<value>2</value>
</property>
集群规模小于 300 时,心跳间隔为 300 毫秒
MapReduce.jobtracker.heartbeat.interval.min 心跳时间
mapred.heartbeats.in.second 集群每增加多少节点,时间增加下面
的值
MapReduce.jobtracker.heartbeat.scaling.factor 集群每增加上面的
个数,心跳增多少
启动带外心跳
MapReduce.tasktracker.outofband.heartbeat 默认是 false
配置多块磁盘
MapReduce.local.dir
配置 RPC hander 数目
mapred.job.tracker.handler.count 默认是 10,可以改成 50,根据机
器的能力
配置 HTTP 线程数目
tasktracker.http.threads 默认是 40,可以改成 100 根据机器的能
力
选择合适的压缩方式
以 snappy 为例:
<property>
		<name>mapred.compress.map.output</name>
		<value>true</value>
</property>
<property>
		<name>mapred.map.output.compression.codec</name>
		<value>org.apache.Hadoop.io.compress.SnappyCodec</value>
</property>
推测执行(Speculative Execution)是指在分布式集群环境下,因为程序
BUG,负载不均衡或者资源分布不均等原因,造成同一个 job 的多个 task
运行速度不一致,有的 task 运行速度明显慢于其他 task(比如:一个
job 的某个 task 进度只有 10%,而其他所有 task 已经运行完毕),则这
些 task 拖慢了作业的整体执行进度,为了避免这种情况发生,Hadoop
会为该 task 启动备份任务,让该 speculative task 与原始 task 同时处
理一份数据,哪个先运行完,则将谁的结果作为最终结果。
推测执行优化机制采用了典型的以空间换时间的优化策略,它同时启动
多个相同 task(备份任务)处理相同的数据块,哪个完成的早,则采用
哪个 task 的结果,这样可防止拖后腿 Task 任务出现,进而提高作业计
算速度,但是,这样却会占用更多的资源,在集群资源紧缺的情况下,
设计合理的推测执行机制可在多用少量资源情况下,减少大作业的计算
时间。
mapred.map.tasks.speculative.execution 默认是 true
mapred.rduce.tasks.speculative.execution 默认是 true
设置是失败容忍度
mapred.max.map.failures.percent 作业允许失败的 map 最大比
例 默认值 0,即 0%
mapred.max.reduce.failures.percent 作业允许失败的 reduce 最
大比例 默认值 0,即 0%
mapred.map.max.attemps 失败后最多重新尝试的次数 默认是 4
mapred.reduce.max.attemps 失败后最多重新尝试的次数 默认是 4
启动 jvm 重用功能
mapred.job.reuse.jvm.num.tasks 默认值 1,表示只能启动一个 task,
若为-1,表示可以最多运行数不限制
设置任务超时时间
mapred.task.timeout 默认值 600000 毫秒,也就是 10 分钟。
合理的控制 reduce 的启动时间
mapred.reduce.slowstart.completed.maps 默认值 0.05 表示 map
任务完成 5%时,开始启动 reduce 任务
跳过坏记录
当任务失败次数达到该值时,才会进入 skip mode,即启用跳过坏记
录数功能,也就是先试几次,不行就跳过
mapred.skip.attempts.to.start.skipping 默认值 2
map 最多允许跳过的记录数
mapred.skip.map.max.skip.records 默认值 0,为不启用
reduce 最多允许跳过的记录数
mapred.skip.reduce.max.skip.records 默认值 0,为不启用
换记录存放的目录
mapred.skip.out.dir 默认值${mapred.output.dir}/_logs/
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值