前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据集群基本调优总结01

大数据集群基本调优总结01

原创
作者头像
Bob hadoop
修改2021-04-25 17:44:24
1.1K0
修改2021-04-25 17:44:24
举报
文章被收录于专栏:日常杂记日常杂记

一、背景

今天是2021年的4月25日,2015年参加工作,到现在有6年了,前段时间做了个决定,离职休息一段时间,趁着休息把以前学过的,用过的,以及涉及不深的好好学习总结下。(以下总结都是基于CDH集群

二、关于大数据集群物理机问题

大规模的数据分析存储才会用到hadoop集群,现在很多公司其实都是小打小闹,我在某大型通信运营商工作了4年,接触了很多大数据集群,由于公司本身业务量庞大,所以都是有自己的机房,物理机,网络设备。

在实际的生产中机房的机器有专门的机房IDC人员维护,其实到我这边基本就是操作系统层面以上的操作了,日常使用的我基本就总结如下:

1、硬件选择

主流机器基本都是x86类型的机器,系统盘建议做成raid1采用ssd类别的盘这样既保证稳定性,又可以提高速度。数据盘基本上就是采用4T或8T这种机械盘,10块或12块或者更多。

关于这种数据盘较多的机器我们就要进行一些规划,比如大数据集群中的datanode与nodemanager节点可以使用这种机械盘,我们可以把数据盘做成raid0,挂载到/mnt下,由于hadoop的特性,即使坏掉一块或者整个机器都挂掉都不会产生数据丢失,但是有时候由于业务的特殊性,比如hbase需要更快更高的查询能力,那么这种机械盘可以换成ssd加快数据读取与存储。

关于hadoop的组件中其他比较重要的节点呢,如namenode这种组件,其实很简单,给予足够的内存与CPU,根目录使用ssd即可,目前线上的生产经验来看,超线程56C内存512G根1T的机器完全可以支撑起1000台节点左右的集群正常工作了。这里需要说一下,前提是你的集群健康,文件数没有那么庞大的情况下。

2、操作系统优化

操作系统一般都是Center os 7 首先我们需要一个带有sudo权限的账号,进行部署或者维护工作。

代码语言:python
复制
useradd hadoop
echo '密码' | passwd --stdin hadoop
chmod +x /etc/sudoers
echo "hadoop   ALL=(ALL)  ALL" >> /etc/sudoers
chmod -x /etc/sudoers

3、关闭swap空间

对于hadoop集群来说,如果使用系统默认设置,会导致swap分区被频繁使用,集群会不断发出警告。所以在搭建cloudera-manager的时候,会建议调整vm.swappiness参数

代码语言:javascript
复制
echo 0 > /proc/sys/vm/swappiness
echo "echo 0 > /proc/sys/vm/swappiness" >>/etc/rc.d/rc.local
swapoff –a

4、关闭透明页面压缩

已启用透明大页面压缩,可能会导致重大性能问题。

以下是Cloudera官方文档

Most Linux platforms supported by CDH include a feature calledtransparent hugepages, which interacts poorly with Hadoop workloads and can seriously degrade performance.

代码语言:javascript
复制
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >>/etc/rc.d/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled “>>/etc/rc.d/rc.local

5、配置时钟源

一般大型机房都有自己的时钟源,指定即可,在没有时钟源的机房可自行搭建。

代码语言:javascript
复制
echo "server xx.xx.xx.xxx" > /etc/ntp.conf 
echo "server xx.xx.xx.xxx" >> /etc/ntp.conf
ntpdate xx.xx.xx.xxx service ntpd start 
echo "driftfile /var/lib/ntp/drift" >> /etc/ntp/conf 
echo "logfile /var/log/ntp" >> /etc/ntp/conf

6、优化最大文件打开数

代码语言:javascript
复制
echo "* soft nofile 65535" >> /etc/security/limits.conf 
echo "* hard nofile 65535" >> /etc/security/limits/conf

7、其他配置说明

关于ssh免密:cdh集群可以不用配置ssh免密!!mha的mysql那台要注意需保留!

关于内存调拨:视情况而定,但是一定要给物理机5%以上的运行内存,建议10%留给物理机自己使用。

关于防火墙:可以启用防火墙,但是一定要设置好规则策略。

关于Selinux:关闭!!!

三、关于hdfs组件的调优

以下调优基于cdh的hadoop2.6版本进行,集群规模800台,集群接口机未纳管至cloudera manager。

打开Cloudera manager 管理页面,点击hdfs组件,点击配置,挨个说明。

1、zookeeper服务选择

因为这个集群同时纳管了Kafka所以当时独立了zookeeper服务。

2、hdfs块大小选择

默认是128M,但是生产集群规模较大,加上集群治理的文件数已经很低,所以就调整到了1GB,这里要注意的是hbase组件也在hdfs上则这个参数会对hlog也有作用,hlog的块大小也是相应的数值,所以要合理设置这个大小。

3、默认值Umask

强烈建议设置成默认的022,我也不清楚这个生产集群为啥设置成000,现在启用的acl搞得我也不敢改。。。。。

4、压缩编码解码器

这个就要看业务需求了,目前我安装了如下

5、平衡阈值

默认是10,建议调整到5,没有其他想要说明的地方。

6、平衡策略

一般都是基于datanode的平衡策略,如果你是联邦集群,就选下边的blockpool平衡策略。

7、提高block迁移速度

提高block迁移速度有三个参数第一个如下,增加DataNode上转移block的Xceiver的个数上限。

DataNode上同时用于balancer的Xceiver的个数受到了BlockBananceThrottler限制。可以适当调大如下的配置。这个参数还是需要谨慎调节,关系到rpc等待时间,其实50有点大了,可以调整至30.详细看这个网址说明的很清楚。https://blog.csdn.net/wisgood/article/details/47857549

8、平衡带宽

没啥说的,要看自己硬件网络设备能力了。

还有些高级代码段的调整,主要是针对不同集群做了相关的调整,这里就不详细说明了。

四、总结

做了好几年的大数据运维,感觉自己好像什么都不会,又好像什么都会一些,接下来的日子里要好好学习,找一份更适合自己的工作,期待下一份工作会称心如意,博客最近会更新的频繁些。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、关于大数据集群物理机问题
    • 1、硬件选择
      • 2、操作系统优化
        • 3、关闭swap空间
          • 4、关闭透明页面压缩
            • 5、配置时钟源
              • 6、优化最大文件打开数
                • 7、其他配置说明
                • 三、关于hdfs组件的调优
                  • 1、zookeeper服务选择
                    • 2、hdfs块大小选择
                      • 3、默认值Umask
                        • 4、压缩编码解码器
                          • 5、平衡阈值
                            • 6、平衡策略
                              • 7、提高block迁移速度
                                • 8、平衡带宽
                                • 四、总结
                                相关产品与服务
                                对象存储
                                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档