HADOOP优化(实用篇)

一、HDFS调优

1.设置合理块大小(dfs.block.size)
如果块过小,产生的元数据大,会增加namenode的压力;如果块过大可能会随时磁盘空间

2.将中间结果分布多个磁盘上,提高写入速度(mapred.local.dir)
配置mapred-site.xml

<property >
<name>mapred.local.dir</name>
<value>/var/hadoop/hdfs_folder/mapred/local/,/home/hadoop/data1/mapred/local/</value>
</property>

3.设置namenode能同时处理请求数(dfs.namenode.handler.count)
dfs.namenode.handler.count=20 * log2(Cluster Size),比如集群规模为8台时,此参数设置为60

4.编辑日志存储路径dfs.namenode.edits.dir设置与镜像文件存储路径dfs.namenode.name.dir尽量分开,达到最低写入延迟

二、yarn调优

容器内存
yarn.nodemanager.resource.memory-mb
最小容器内存
yarn.scheduler.minimum-allocation-mb
容器内存增量
yarn.scheduler.increment-allocation-mb
最大容器内存
yarn.scheduler.maximum-allocation-mb

1.服务器节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。yarn.nodemanager.resource.memory-mb

2.单个任务可申请的最多物理内存量,默认是8192(MB)。yarn.scheduler.maximum-allocation-mb

3.如果想资源分配灵活一些,可以把最大容器内存配置和容器内存一样;如果想资源分配严格,把最小容器内存和最大容器内存配置一样的数值,这样单个机器的内存就是一个固定值,如果单个机器内存是120G,可以设为资源使用100G

容器虚拟CPU内核
yarn.nodemanager.resource.cpu-vcores
最小容器虚拟CPU内核数量
yarn.scheduler.minimum-allocation-vcores
容器虚拟CPU内核增量
yarn.scheduler.increment-allocation-vcores
最大容器虚拟CPU内核数量
yarn.scheduler.maximum-allocation-vcores

vcore :虚拟cpu的core ,是yarn自己引入的概念,因为每台机器的性能不一样,每台机器的core代表的资源也不一样,yarn为了标准化这些有差异的机器,于是引入Vcore的概念。

一个物理core默认对应两个vcore
在生产上,一般会预留两个core,也就是少了4个vcore

yarn调度器

FIFO   先进先出,作业的等待时间比较长
capacity 计算(x)
    yarn判断任务的大小,分配到不同的队列
    B队列是小任务队列,预先占用集群的资源
    让多个任务可以并行运行。
   Job1拿到的资源没有公平方式多。因为它一部分需要分配给小队列。
Fair     公平     生产中用该调度器
    为job动态调整系统资源。
    运行的一些任务释放部分资源
    给第二个任务运行。
    当job2运行完之后,将资源释放后
    job1会将资源重新占用

三、mr调优

1.增大环形缓冲区大小。由100m扩大到200m

2.增大环形缓冲区溢写的比例。由80%扩大到90%

3.设置Map、Reduce共存:调整slowstart.completedmaps参数,使Map运行到一定程度后,Reduce也开始运行,减少Reduce的等待时间

4.改变输入分片与块大小一样,减少网络IO

5.MapTask默认内存大小为1G,可以增加MapTask内存大小为4-5g

6.ReduceTask默认内存大小为1G,可以增加ReduceTask内存大小为4-5g

7.map端压缩,reduce端压缩,小文件合并

四、Hadoop运维

利用SecondaryNamenode恢复Namenode
1.确保新的namenode {dfs.name.dir}目录存在,并移除其内容
2.把SecondaryNamenode节点中{fs.checkpoint.dir}的所有内容复制到新的namenode节点的{fs.checkpoint.dir}目录中,就是复制快照
3.在新的namenode上执行:
hadoop namenode -importCheckpoint
该步会从{fs.checkpoint.dir}中恢复{dfs.name.dir},并启动namenode
4.检查文件块完整性,执行: hadoop fsck /
5.停止Namenode
6.删除新的namenode{fs.checkpoint}目录下的文件
7.正式启动namenode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值