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

[经验分享] hadoop 性能调优与运维

[复制链接]

尚未签到

发表于 2017-12-16 21:28:49 | 显示全部楼层 |阅读模式
  hadoop 性能调优与运维
  

1. 硬件选择  

2. 操作系统调优与jvm调优  

3. hadoop参数调优4. hadoop运维  

  硬件选择
  1) hadoop运行环境
DSC0000.png

  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上, 计算能力可以通过增加新节点进行线性扩展,要注意网络设别处理能力。
DSC0001.png

  操作系统调优
  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,可以适当加大为10  

4. 设置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-vcores  

  
MapReduce调优,调优三大原则
  

  

1.增大作业并行程度  

2.给每个任务足够的资源  

3. 在满足前2个条件下,尽可能的给shuffle预留资源  

  hadoop运维
  

基础运维  

1. 启动和体质hadoop (包括hdfs)  
.
/start-all.sh  
.
/stop-all.sh  

  

2.启动/停止 hdfs  
.
/start-dfs.sh  
.
/stop-dfs.sh  

  

3.启动/停止 单个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.定期执行数据均衡脚本
  

运维网声明 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.yunweiku.com/thread-424837-1-1.html 上篇帖子: Hadoop伪分布安装详解(三) 下篇帖子: Hadoop之HDFS原理及文件上传下载源码分析(上)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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