CDH生产集群线上调优

CDH6.2.1集群线上调优,可做参考

1 CM Service

这些服务主要是提供监控功能,目前的调整主要集中在内存放,以便有足够的资源 完成集群管理。

服务 选项 配置值
Activity Monitor Java Heap Size 2G
Alert Publisher Java Heap Size 2G
Event Server Java Heap Size 2G
Host Monitor Java Heap Size 4G
Service Monitor Java Heap Size 4G
Reports Manager Java Heap Size 2G
Navigator Metadata Server Java Heap Size 8G

2.Zookeeper

服务 选项 配置值
Zookeeper Java Heap Size (堆栈大小) 4G
Zookeeper maxClientCnxns (最大客户端连接数) 1024
Zookeeper dataDir (数据文件目录+数据持久化路径) /hadoop/zookeeper (建议独立目录)
Zookeeper dataLogDir (事务日志目录) /hadoop/zookeeper_log (建议独立目录)

3.HDFS

服务 选项 配置值
NameNode Java Heap Size (堆栈大小) 4G
NameNode dfs.namenode.handler.count 80
NameNode dfs.namenode.service.handler.count 80
NameNode fs.permissions.umask-mode (使用默认值022) 27
DataNode Java Heap Size (堆栈大小) 4G
DataNode dfs.datanode.balance.bandwidthPerSec (DataNode 平衡带宽) 100M
DataNode dfs.datanode.handler.count (服务器线程数) 64
DataNode dfs.datanode.max.transfer.threads (最大传输线程数) 20480
JournalNode Java Heap Size (堆栈大小) 1G

4.YARN + MapReduce

服务 选项 配置值 参数说明
ResourceManager Java Heap Size (堆栈大小) 4G
ResourceManager yarn.scheduler.minimum-allocation-mb (最小容器内存) 2G 给应用程序 Container 分配的最小内存
ResourceManager yarn.scheduler.increment-allocation-mb (容器内存增量) 512M 如果使用 Fair Scheduler,容器内存允许增量
ResourceManager yarn.scheduler.maximum-allocation-mb (最大容器内存) 32G 给应用程序 Container 分配的最大内存
ResourceManager yarn.scheduler.minimum-allocation-vcores (最小容器虚拟 CPU 内核数量) 1 每个 Container 申请的最小 CPU 核数
ResourceManager yarn.scheduler.increment-allocation-vcores (容器虚拟 CPU 内核增量) 1 如果使用 Fair Scheduler,虚拟 CPU 内核允许增量
ResourceManager yarn.scheduler.maximum-allocation-vcores (最大容器虚拟 CPU 内核数量) 16 每个 Container 申请的最大 CPU 核数
ResourceManager yarn.resourcemanager.recovery.enabled TRUE 启用后,ResourceManager 中止时在群集上运行的任何应用程序将在 ResourceManager 下次启动时恢复,备注:如果启用 RM-HA,则始终启用该配置。
NodeManager Java Heap Size (堆栈大小) 4G
NodeManager yarn.nodemanager.resource.memory-mb 40G 可分配给容器的物理内存数量,参照资源池内存90%左右
NodeManager yarn.nodemanager.resource.cpu-vcores 32 可以为容器分配的虚拟 CPU 内核的数量,参照资源池内存90%左右
ApplicationMaster yarn.app.mapreduce.am.command-opts 传递到 MapReduce ApplicationMaster 的 Java 命令行参数 "-Djava.net.preferIPv4Stack=true "
ApplicationMaster yarn.app.mapreduce.am.resource.mb (ApplicationMaster 内存) 4G
JobHistory Java Heap Size (堆栈大小) 2G
MapReduce mapreduce.map.memory.mb (Map 任务内存) 4G 一个MapTask可使用的资源上限。如果MapTask实际使用的资源量超过该值,则会被强制杀死。
MapReduce mapreduce.reduce.memory.mb (Reduce 任务内存) 8G 一个 ReduceTask 可使用的资源上限。如果 ReduceTask 实际使用的资源量超过该值,则会被强制杀死
MapReduce mapreduce.map.cpu.vcores 2 每个 MapTask 可使用的最多 cpu core 数目
MapReduce mapreduce.reduce.cpu.vcores 4 每个 ReduceTask 可使用的最多 cpu core 数目
MapReduce mapreduce.reduce.shuffle.parallelcopies 20 每个 Reduce 去 Map 中取数据的并行数。
MapReduce mapreduce.task.io.sort.mb(Shuffle 的环形缓冲区大小) 512M 当排序文件时要使用的内存缓冲总量。注意:此内存由 JVM 堆栈大小产生(也就是:总用户 JVM 堆栈 - 这些内存 = 总用户可用堆栈空间)
MapReduce mapreduce.map.sort.spill.percent 80% 环形缓冲区溢出的阈值
MapReduce mapreduce.task.timeout 10分钟 Task 超时时间,经常需要设置的一个参数,该参数表 达的意思为:如果一个 Task 在一定时间内没有任何进 入,即不会读取新的数据,也没有输出数据,则认为 该 Task 处于 Block 状态,可能是卡住了,也许永远会 卡住,为了防止因为用户程序永远 Block 住不退出, 则强制设置了一个该超时时间。如果你的程序对每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等),建议将该参数调大,该参数过小常出现的错误提示是 :AttemptID:attempt_12267239451721_123456_m_00 0335_0 Timed out after 600 secsContainer killed by the ApplicationMaster。

5 Impala

服务 选项 配置值 参数说明
Impala Daemon mem_limit (内存限制) 50G 由守护程序本身强制执行的 Impala Daemon 的内存限制。如果达到该限制,Impalad Daemon 上运行的查询可能会被停止
Impala Daemon Impala Daemon JVM Heap 4G 守护进程堆栈大小
Impala Daemon scratch_dirs 节点上多块独立磁盘(目录) Impala Daemon 将溢出信息等数据写入磁盘以释放内存所在的目录。这可能是大量数据
Impala Catalog Server Java Heap Size 8G 堆栈大小

6. kafka

服务 选项 配置值 参数说明
Kafka Broker Java Heap Size of Broker 2G Broker堆栈大小
Kafka Broker Data Directories 多块独立磁盘
Kafka 服务 Maximum Message Size 10M 服务器可以接收的消息的最大大小。此属性必须与使用者使用的最大提取大小同步。否则,不守规矩的生产者可能会发布太大而无法消费的消息
Kafka 服务 Replica Maximum Fetch Size 20M 副本发送给leader的获取请求中每个分区要获取的最大字节数。此值应大于message.max.bytes。
Kafka 服务 Number of Replica Fetchers 6 用于复制来自领导者的消息的线程数。增大此值将增加跟随者代理中I / O并行度。

7. HBase

服务 选项 配置值 参数说明
HBase Java Heap Size 16G 客户端 Java 堆大小(字节)主要作用来缓存Table数据,但是flush时会GC,不要太大,根据集群资源,一般分配整个Hbase集群内存的70%,16->48G就可以了
HBase hbase.client.write.buffer 512M 写入缓冲区大小,调高该值,可以减少RPC调用次数,单数会消耗更多内存,较大缓冲区需要客户端和服务器中有较大内存,因为服务器将实例化已通过的写入缓冲区并进行处理,这会降低远程过程调用 (RPC) 的数量。
HBaseMaster Java Heap Size 8G HBase Master 的 Java 堆栈大小
HBaseMaster hbase.master.handler.count 300 HBase Master 中启动的 RPC 服务器实例数量。
HBaseRegionServer Java Heap Size 30G HBase RegionServer 的 Java 堆栈大小
HBaseRegionServer hbase.regionserver.handler.count 100 RegionServer 中启动的 RPC 服务器实例数量,根据集群情况,可以适当增加该值,主要决定是客户端的请求数
HBaseRegionServer hbase.regionserver.metahandler.count 60 用于处理 RegionServer 中的优先级请求的处理程序的数量
HBaseRegionServer zookeeper.session.timeout 60000ms ZooKeeper 会话延迟(以毫秒为单位)。HBase 将此作为建议的最长会话时间传递给 ZooKeeper 仲裁
HBaseRegionServer hbase.hregion.memstore.flush.size 1G 如 memstore 大小超过此值,Memstore 将刷新到磁盘。通过运行由 hbase.server.thread.wakefrequency 指定的频率的线程检查此值。
HBaseRegionServer hbase.hregion.majorcompaction 0 合并周期,在合格节点下,Region下所有的HFile会进行合并,非常消耗资源,在空闲时手动触发
HBaseRegionServer hbase.hregion.majorcompaction.jitter 0 抖动比率,根据上面的合并周期,有一个抖动比率,也不靠谱,还是手动好
HBaseRegionServer hbase.hstore.compactionThreshold 6 如在任意一个 HStore 中有超过此数量的 HStoreFiles,则将运行压缩以将所有 HStoreFiles 文件作为一个 HStoreFile 重新写入。(每次 memstore 刷新写入一个 HStoreFile)您可通过指定更大数量延长压缩,但压缩将运行更长时间。在压缩期间,更新无法刷新到磁盘。长时间压缩需要足够的内存,以在压缩的持续时间内记录所有更新。如太大,压缩期间客户端会超时。
HBaseRegionServer hbase.client.scanner.caching 1000 内存未提供数据的情况下扫描仪下次调用时所提取的行数。较高缓存值需启用较快速度的扫描仪,但这需要更多的内存且当缓存为空时某些下一次调用会运行较长时间
HBaseRegionServer hbase.hregion.max.filesize 50G HStoreFile 最大大小。如果列组的任意一个 HStoreFile 超过此值,则托管 HRegion 将分割成两个
HBaseMaster hbase.master.logcleaner.plugins 日志清除器插 件 org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner
HBase hbase.replication FALSE 禁用复制
HBase hbase.master.logcleaner.ttl 10min 保留 HLogs 的最长时间,加上如上两条解决oldWALs增长问题

8. Hive

服务 选项 配置值 参数说明
HiveServer2 Java Heap Size 4G
Hive MetaStore Java Heap Size 8G
Hive Gateway Java Heap Size 2G
Hive hive.execution.engine Spark 执行引擎切换
Hive hive.fetch.task.conversion more Fetch抓取修改为more,可以使全局查找,字段查找,limit查找等都不走计算引擎,而是直接读取表对应储存目录下的文件,大大普通查询速度
Hive hive.exec.mode.local.auto(hive-site.xml 服务高级配置,客户端高级配置 ) TRUE 开启本地模式,在单台机器上处理所有的任务,对于小的数据集,执行时间可以明显被缩短
Hive hive.exec.mode.local.auto.inputbytes.max(hive-site.xml 服务高级配置,客户端高级配置) 50000000 文件不超过50M
Hive hive.exec.mode.local.auto.input.files.max(hive-site.xml 服务高级配置,客户端高级配置) 10 个数不超过10个
Hive hive.auto.convert.join 开启 在join问题上,让小表放在左边 去左链接(left join)大表,这样可以有效的减少内存溢出错误发生的几率
Hive hive.mapjoin.smalltable.filesize(hive-site.xml 服务高级配置,客户端高级配置) 50000000 50M以下认为是小表
Hive hive.map.aggr 开 默认情况下map阶段同一个key发送给一个reduce,当一个key数据过大时就发生数据倾斜。
Hive hive.groupby.mapaggr.checkinterval(hive-site.xml 服务高级配置,客户端高级配置) 200000 在map端进行聚合操作的条目数目
Hive hive.groupby.skewindata(hive-site.xml 服务高级配置,客户端高级配置) TRUE 有数据倾斜时进行负载均衡,生成的查询计划会有两个MR Job,第一个MR Job会将key加随机数均匀的分布到Reduce中,做部分聚合操作(预处理),第二个MR Job在根据预处理结果还原原始key,按照Group By Key分布到Reduce中进行聚合运算,完成最终操作
Hive hive.exec.parallel(hive-site.xml 服务高级配置,客户端高级配置) TRUE 开启并行计算
Hive hive.exec.parallel.thread.number(hive-site.xml 服务高级配置,客户端高级配置) 16 同一个sql允许的最大并行度,针对集群资源适当增加

9. Oozie、Hue

服务 选项 配置值参数说明
Oozie Java Heap Size 1G 堆栈大小
Hue Java Heap Size 4G 堆栈大小
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Version: v0.1 Last Update: July/23/2021 Keywords:CDH,Hado...
    lionxcat阅读 5,208评论 0 1
  • 一:hbase现有硬件资源的理论性能 1.集群容量规划公式: 优化调整,发挥硬件的最大优势; 按照默认配置, Re...
    sunTengSt阅读 5,499评论 0 1
  • 1、JVM调优目标:使用较小的内存占用来获得较高的吞吐量或者较低的延迟。 程序在上线前的测试或运行中有时会出现一些...
    布丁吕阅读 4,324评论 0 0
  • 前言:本文档适用于新部署的HDP集群,需要修改默认参数值以提高集群的稳定性。 1.Mysql 修改mysql配置文...
    yinkp001阅读 9,583评论 0 0
  • 一、Flink安装 1.1 二进制安装 在官网下载页面下载二进制包,下载的压缩包需要和服务器环境中的Hadoo...
    data之道阅读 3,496评论 0 2