博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop 性能调优与运维
阅读量:4538 次
发布时间:2019-06-08

本文共 3551 字,大约阅读时间需要 11 分钟。

hadoop 性能调优与运维

1. 硬件选择2. 操作系统调优与jvm调优3. hadoop参数调优4. hadoop运维

 

硬件选择

1) hadoop运行环境 

 

2)  原则一: 主节点可靠性要好于从节点

  原则二:多路多核,高频率cpu、大内存,

    namenode 100万文件的元数据要消耗800M内存,内存决定了集群保存文件数的总量, resourcemanager同时运行的作业会消耗一定的内存。

  datanode 的内存需要根据cpu的虚拟核数(vcore) 进行配比,CPU的vcore数计算公式为=cpu个数 * 单cpu核数* HT(超线程)

    内存容量大小 = vcore数 * 2GB(至少2GB)

  原则三: 根据数据量确定集群规模

  一天增加10GB, 365天,原数据1TB,replacation=3,   1.3 mapreduce 计算完保存的数据,规划容量

  (1TB + 10GB*365)*3 *1.3 =17.8TB

     如果一台datanode的存储空间为2TB,  18/2= 9

     总节点为 = 9+2 =11 

    还要考虑作业并不是均匀分布的, 有可能会倾斜到某一个时间段,需要预留资源

 

    原则四: 不要让网路I/O 成为瓶颈

    hadoop 作业通常是 I/O密集型而非计算密集型, 瓶颈通常集中出现在I/O上, 计算能力可以通过增加新节点进行线性扩展,要注意网络设别处理能力。

 

 

 

操作系统调优

1  避免使用swap 分区 将hadoop守护进程的数据交换到硬盘的行为可能会导致操作超时。

 

2 调整内存分配策略

操纵系统内核根据vm.oversommit_memory 的值来决定分配策略,并且通过vm.overcommit_ratio的值来设定超过物理内存的比例。

 

3. 修改net.core.somaxconn参数

该参数表示socker监听backlog的上限,默认为128,socker的服务器会一次性处理backlog中的所有请求,hadoop的ipc.server.listen.queue.size参数和linux的net.core.somaxconn

参数控制了监听队列的长度,需要调大。

 

4.增大同时打开文件描述符的上限

对内核来说,所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数,hadoop的作业经常会读写大量文件,需要增大同时打开文件描述符的上限。

 

5.选择合适的文件系统,并禁用文件的访问时间

  ext4 xfs ,文件访问时间可以让用户知道那些文件近期被查看或修改, 但对hdfs来说, 获取某个文件的某个块 被修改过,没有意义,可以禁用。

 

6. 关闭THP (transparent Huge Pages)

THP 是一个使管理 Huge Pages自动化的抽象层, 它会引起cpu占用率增大, 需要关闭。

 

echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled 
echo never > /sys/kernel/mm/transparent_hugepage/enabled 
echo never > /sys/kernel/mm/transparent_hugepage/defrag

 

hadoop参数调优

HDFS调优1. 设置合理的块大小(dfs.block.size)2. 将中间结果目录设置为分布在多个硬盘以提升写入速度(mapred.local.dir)3. 设置datanode处理RPC的线程数,大集群可以适当加大(dfs.datanode.handler.count),默认为3,可以适当加大为104. 设置namenode 能同时处理的请求数,(dfs.namenode.handler.count),为集群模式的自然对数(lnN)的20倍。YARN调优yarn的资源表示模型为ceontainer(容器),container 将资源抽象为两个维度,内存和虚拟cpu(vcore)1. 兼容各种计算框架2. 动态分配资源,减少资源浪费容器内存yarn.nodemanager.resource.memory-mb最小容器内存yarn.scheduler.minimum-allocation-mb容器内存增量yarn.scheduler.increment-allocation-mb最大容器内存yarn.scheduler.maximum-allocation-mb容器虚拟cpu内核yarn.nodemanager.resource.cpu-vcores最小容器虚拟cpu内核数量yarn.scheduler.minimum-allocation-vcores容器虚拟cpu内核增量yarn.scheduler.increment-allocation-vcores最大容器虚拟cpu内核数量yarn.scheduler.maximum-allocation-vcoresMapReduce调优,调优三大原则1.增大作业并行程度2.给每个任务足够的资源3. 在满足前2个条件下,尽可能的给shuffle预留资源

 

 

hadoop运维

基础运维1. 启动和体质hadoop (包括hdfs)./start-all.sh ./stop-all.sh2.启动/停止 hdfs./start-dfs.sh./stop-dfs.sh3.启动/停止 单个hdfs进程./hadoop-daemon.sh start namenode./hadoop-daemon.sh stop namenode./hadoop-daemon.sh start  datanode./hadoop-daemon.sh stop  datanode启动和关闭 yarn进程sbin/start-yarn.sh   主 sbin/yarn-daemon.sh start resourcemanager  第二节点集群节点动态扩容和卸载 1.增加datanode
修改slave,添加新的datanode./hadoop-daemon.sh start datanode      启动datanode./hadoop dfsadmin -refreshNodes         通知namenode 增加了一个节点2. 卸载datanode
stop datanode 命令只能停止datanode, 并不能把数据完全的迁移出来 1). 修改配置 dfs.hosts 和 dfs.hosts.exclude,把将要卸载的datanode ip添加到dfs.hosts 和dfs.hosts.exclude 末尾,执行 ./hadoop dfsadmin  -refresNodes   #数据转移,使用web端口可以查看迁移进度 2). 停止服务器 ./hadoop-deamon.sh stop datanode 3). 把dfs.hosts 和 dfs.hosts.exclude 中的 卸载的datanode ip地址删除 4). 再次执行 ./haddop dfsadmin -refresNodes 5).增加 yarn 的nodemanager 修改slave文件, 直接启动 ./yarn-daemon.sh  start nodemanager 6).卸载nodemanger 直接停止即可 ./yarn-daemon.sh start nodemanager ./hadoop-daemon.sh  namenode|secondarynamenode|datanode|journalnode|dfs|dfsadmin|fsck|balancer|zkfc) yarn-daemon.sh resourcemanager|nodemanager
yarn 第二节点启动命令yarn-daemon.sh start resourcemanager 常见的运维技巧 1. 查看日志 2.清理临时文件 hdfs 的临时文件路径:/data/hadoop/tmp/mapred/staging 本地临时文件路径: {mapred.local.dir}/mapred/userlogs 3.定期执行数据均衡脚本

 

转载于:https://www.cnblogs.com/fengjian2016/p/6214301.html

你可能感兴趣的文章
利用POI 技术动态替换word模板内容
查看>>
LeetCode No.168
查看>>
纪录jmeter loop controller 使用中的一个坑
查看>>
spring读取配置文件,且获取bean实例
查看>>
Xcode7 免证书真机测试
查看>>
史上最简单MySQL教程详解(基础篇)之数据类型
查看>>
802.11 帧封装细节
查看>>
WPF中Style文件的引用——使用xaml代码或者C#代码动态加载
查看>>
C#最佳工具集合:IDE、分析、自动化工具等
查看>>
把数字数值转换成单词形式
查看>>
Swift游戏实战-跑酷熊猫 14 熊猫打滚
查看>>
pdfjs预览pdf文件的两种方式(可复制)
查看>>
hdu1042N!
查看>>
Coder-Strike 2014 - Round 1(A~E)
查看>>
【BZOJ2739】—最远点(决策单调性+分治)
查看>>
shell 流程控制
查看>>
MVC学习-发送请求
查看>>
微信开发-ACCESS TOKEN 过期失效解决方案
查看>>
(转)正则表达式验证大全
查看>>
被汉得拒绝以后
查看>>