长期支持版本

    社区创新版本

      硬件调优

      配置BIOS

      目的

      针对不同的服务器硬件设备,通过设置BIOS中的一些高级配置选项,可以有效提升服务器性能。

      方法

      以下方法针对鲲鹏服务器进行调优,X86,例如Intel服务器,可选择保持默认BIOS配置。

      1. 关闭SMMU(鲲鹏服务器特有)。

      2. 重启服务器过程中,单击Delete键进入BIOS,选择“Advanced > MISC Config”,单击Enter键进入。

      3. 将“Support Smmu”设置为“Disable”。

        注:此优化项只在非虚拟化场景使用,在虚拟化场景,则开启SMMU。

      4. 关闭预取

        • 在BIOS中,选择“Advanced>MISC Config”,单击Enter键进入。

        • 将“CPU Prefetching Configuration”设置为“Disabled”,单击F10键保存退出。

      创建RAID0

      目的

      磁盘创建RAID可以提高磁盘的整体存取性能,环境上若使用的是LSI 3108/3408/3508系列RAID卡,推荐创建单盘RAID 0/RAID 5,充分利用RAID卡的Cache(LSI 3508卡为2GB),提高读写速率。

      方法

      1. 使用storcli64_arm文件检查RAID组创建情况。

        ./storcli64_arm /c0 show
        

        注:storcli64_arm文件放在任意目录下执行皆可。文件下载路径:https://docs.broadcom.com/docs/007.1507.0000.0000_Unified_StorCLI.zip

      2. 创建RAID 0,命令表示为第2块1.2T硬盘创建RAID 0,其中,c0表示RAID卡所在ID、r0表示组RAID 0。依次类推,对除了系统盘之外的所有盘做此操作。

        ./storcli64_arm /c0 add vd r0 drives=65:1
        

      开启RAID卡Cache

      目的

      使用RAID卡的RAWBC(无超级电容)/RWBC(有超级电容)性能更佳。

      使用storcli工具修改RAID组的Cache设置。Read Policy设置为Read ahead,使用RAID卡的Cache做预读。Write Policy设置为Write back,使用RAID卡的Cache做回写,而不是Write through透写。将IO policy设置为Cached IO,使用RAID卡的Cache缓存IO。

      方法

      1. 配置RAID卡的cache,其中vx是卷组号(v0/v1/v2....),根据环境上的实际情况进行设置。
      ./storcli64_arm /c0/vx set rdcache=RA
      ./storcli64_arm /c0/vx set wrcache=WB/AWB
      ./storcli64_arm /c0/vx set iopolicy=Cached
      
      1. 检查配置是否生效。
      ./storcli64_arm /c0 show
      

      调整rx_buff

      目的

      以1822网卡为例,默认的rx_buff配置为2KB,在聚合64KB报文的时候需要多片不连续的内存,使用率较低。该参数可以配置为2/4/8/16KB,修改后可以减少不连续的内存,提高内存使用率。

      方法

      1. 查看rx_buff参数值,默认为2。

        cat /sys/bus/pci/drivers/hinic/module/parameters/rx_buff
        
      2. 在目录“/etc/modprobe.d/”中增加文件hinic.conf,修改rx_buff值为8。

        options hinic rx_buff=8
        
      3. 重新挂载hinic驱动,使得新参数生效。

        rmmod hinic 
        modprobe hinic
        
      4. 查看rx_buff参数是否更新成功。

        cat /sys/bus/pci/drivers/hinic/module/parameters/rx_buff
        

      调整Ring Buffer

      目的

      以1822网卡为例,网卡队列深度Ring Buffer最大支持4096,默认配置为1024,可以增大buffer大小用于提高网卡Ring大小。

      方法

      1. 查看Ring Buffer默认大小,假设当前网卡名为enp131s0。

        ethtool -g enp131s0
        
      2. 修改Ring Buffer值为4096。

        ethtool -G enp131s0 rx 4096 tx 4096
        
      3. 查看Ring Buffer值是否更新成功。

        ethtool -g enp131s0
        
      4. 减少队列数。

        ethtool -L enp131s0 combined 4
        ethtool -l enp131s0
        

      开启LRO

      目的

      以1822网卡为例,支持LRO(Large Receive Offload),可以打开该选项,并合理配置1822 LRO参数。

      方法

      1. 查看LRO参数是否开启,默认为off,假设当前网卡名为enp131s0。

        ethtool -k enp131s0
        
      2. 打开LRO。

        ethtool -K enp131s0 lro on
        
      3. 查看LRO参数是否开启。

        ethtool -k enp131s0
        

      配置网卡中断绑核

      目的

      相比使用内核的irqbalance使网卡中断在所有核上进行调度,使用手动绑核将中断固定更能有效提高业务网络收发包的能力。

      方法

      1. 关闭irqbalance。

        若要对网卡进行绑核操作,则需要关闭irqbalance。

        执行如下命令:

      systemctl stop irqbalance.service #(停止irqbalance,重启失效)
      systemctl disable irqbalance.service #(关闭irqbalance,永久生效)
      systemctl status irqbalance.service #(查看irqbalance服务状态是否已关闭)
      
      1. 查看网卡pci设备号,假设当前网卡名为enp131s0。

        ethtool -i enp131s0
        
      2. 查看pcie网卡所属NUMA node。

        lspci -vvvs <bus-info>
        
      3. 查看NUMA node对应的core的区间,例如此处在鲲鹏920 5250上就可以绑到48~63。

      4. 进行中断绑核,1822网卡共有16个队列,将这些中断逐个绑至所在NumaNode的16个Core上(例如此处是绑到NUMA node1对应48-63上)。

        bash smartIrq.sh
        

        脚本内容如下:

        #!/bin/bash
        irq_list=(`cat /proc/interrupts | grep enp131s0 | awk -F: '{print $1}'`)
        cpunum=48  # 修改为所在node的第一个Core
        for irq in ${irq_list[@]}
        do
        echo $cpunum > /proc/irq/$irq/smp_affinity_list
        echo `cat /proc/irq/$irq/smp_affinity_list`
        (( cpunum+=1 ))
        done
        
      5. 利用脚本查看是否绑核成功。

        sh irqCheck.sh enp131s0
        

        脚本内容如下:

        #!/bin/bash
        # 网卡名
        intf=$1
        log=irqSet-`date "+%Y%m%d-%H%M%S"`.log
        # 可用的CPU数
        cpuNum=$(cat /proc/cpuinfo |grep processor -c)
        # RX TX中断列表
        irqListRx=$(cat /proc/interrupts | grep ${intf} | awk -F':' '{print $1}')
        irqListTx=$(cat /proc/interrupts | grep ${intf} | awk -F':' '{print $1}')
        # 绑定接收中断rx irq
        for irqRX in ${irqListRx[@]}
        do
        	cat /proc/irq/${irqRX}/smp_affinity_list
        done
        # 绑定发送中断tx irq
        for irqTX in ${irqListTx[@]}
        do
        	cat /proc/irq/${irqTX}/smp_affinity_list
        done
        

      操作系统调优

      关闭内存透明大页

      目的

      关闭内存透明大页,防止内存泄漏,减少卡顿。

      方法

      关闭内存透明大页。

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

      关闭swap分区

      目的

      Linux的虚拟内存会根据系统负载自动调整,内存页(page)swap到磁盘swap分区会影响测试性能。

      方法

      swapoff -a
      

      修改前后对比如下。

      spark组件调优

      IO配置项调优

      • IO队列调整

        • 目的

        使用单队列(软队列)模式,单队列模式在spark测试时会有更佳的性能。

        • 方法

        在/etc/grub2-efi.cfg的内核启动命令行中添加scsi_mod.use_blk_mq=0,重启生效。

      • 内核IO参数配置

        #! /bin/bash
        
        echo 3000 > /proc/sys/vm/dirty_expire_centisecs
        echo 500 > /proc/sys/vm/dirty_writeback_centisecs
        
        echo 15000000 > /proc/sys/kernel/sched_wakeup_granularity_ns
        echo 10000000 > /proc/sys/kernel/sched_min_granularity_ns
        
        systemctl start tuned
        sysctl -w kernel.sched_autogroup_enabled=0
        sysctl -w kernel.numa_balancing=0
        
        echo 11264 > /proc/sys/vm/min_free_kbytes
        echo 60 > /proc/sys/vm/dirty_ratio
        echo 5 > /proc/sys/vm/dirty_background_ratio
        
        list="b c d e f g h i j k l m" #按需修改
        for i in $list
        do
          echo 1024 > /sys/block/sd$i/queue/max_sectors_kb
          echo 32 > /sys/block/sd$i/device/queue_depth
          echo 256 > /sys/block/sd$i/queue/nr_requests
          echo mq-deadline > /sys/block/sd$i/queue/scheduler
          echo 2048 > /sys/block/sd$i/queue/read_ahead_kb
          echo 2 > /sys/block/sd$i/queue/rq_affinity
          echo 0 > /sys/block/sd$i/queue/nomerges
        done
        

      JVM参数和版本适配

      目的

      最新版本的JDK对Spark性能进行了优化。

      方法

      可在spark-defaults.conf文件中添加以下配置来使用新的JDK,以使用新的JDK参数。

      spark.executorEnv.JAVA_HOME /usr/local/jdk8u222-b10
      spark.yarn.appMasterEnv.JAVA_HOME /usr/local/jdk8u222-b10
      spark.executor.extraJavaOptions -XX:+UseNUMA -XX:BoxTypeCachedMax=100000
      spark.yarn.am.extraJavaOptions -XX:+UseNUMA -XX:BoxTypeCachedMax=100000
      

      注:X86架构,JVM参数-XX:BoxTypeCachedMax不适用。

      spark应用参数调优

      目的

      在Spark基础配置值的基础上,按照理论公式得到一组较合理的Executor执行参数,使能后在鲲鹏上会带来明显的性能提升。

      方法

      • 如果用Spark-Test-Tool工具测试sql1~sql10场景,打开工具目录下的“script/spark-default.conf”文件,添加以下配置项:

        yarn.executor.num 15
        yarn.executor.cores 19
        spark.executor.memory 44G
        spark.driver.memory 36G
        
      • 如果使用HiBench工具测试wordcount、terasort、bayesian、kmeans场景,打开工具目录下的“conf/spark.conf”文件,可以根据实际环境对运行核数、内存大小做调整。

        yarn.executor.num 15
        yarn.executor.cores 19
        spark.executor.memory 44G
        spark.driver.memory 36G
        

      专用场景优化项

      SQL场景

      sql1-IO密集型SQL
      • 目的

        sql1是IO密集型场景,可以通过优化IO参数带来最佳性能。

      • 方法

        • 对以下IO相关参数进行设置,其中sd$i指所有参与测试的磁盘名。

          echo 128 > /sys/block/sd$i/queue/nr_requests
          echo 512 > /sys/block/sd$i/queue/read_ahead_kb
          
        • 对内存脏页参数进行设置。

          /proc/sys/vm/vm.dirty_expire_centisecs  500
          /proc/sys/vm/vm.dirty_writeback_centisecs   100
          
        • 并行度在Spark-Test-Tool/script/spark-default.conf里设置。

          spark.sql.shuffle.partitions 350
          spark.default.parallelism 580
          
        • 该场景其余参数都使用spark应用参数调优中的通用优化值。

      sql2 & sql7 - CPU密集型SQL
      • 目的

        ​sql2和sql7是CPU密集型场景,可以通过优化spark执行参数带来最佳性能。

      • 方法

        • Spark-Test-Tool在配置文件(script/spark-default.conf)中指定的运行核数、内存大小可以根据实际环境来做调整,从而达到最优性能。如对于鲲鹏920 5220处理器,sql2和sql7场景建议以下executor参数。

          yarn.executor.num 42
          yarn.executor.cores 6
          spark.executor.memory 15G
          spark.driver.memory 36G
          
        • 并行度在Spark-Test-Tool/script/spark-default.conf里设置

          针对sql2,设置如下:

          spark.sql.shuffle.partitions 150
          spark.default.parallelism 504
          

          针对sql7,设置如下:

          spark.sql.shuffle.partitions 300
          spark.default.parallelism 504
          
      sql3-IO + CPU
      • 目的

        sql3是IO+CPU密集型场景,可以通过优化spark执行参数、调整IO参数来带来最佳性能。

      • 方法

        • Spark-Test-Tool在配置文件(script/spark-default.conf)中指定的运行核数、内存大小可以根据实际环境来做调整,来达到最优性能。比如对于鲲鹏920 5220处理器,sql3场景建议以下executor参数。

          yarn.executor.num 30
          yarn.executor.cores 6
          spark.executor.memory 24G
          spark.driver.memory 36G
          
        • 调整IO预取值,其中sd$i表示所有参与spark的磁盘名。

          echo 4096 > /sys/block/sd$i/queue/read_ahead_kb
          
        • 并行度在Spark-Test-Tool/script/spark-default.conf里设置。

          spark.sql.shuffle.partitions 150
          spark.default.parallelism 360
          
      sql4 - CPU密集
      • 目的

        sql4是CPU密集型场景,可以优化spark执行参数、调整IO参数来带来最佳性能。

      • 方法

        Spark-Test-Tool在配置文件中指定的运行核数、内存大小可以根据实际环境来做调整,来达到最优性能。比如对于鲲鹏920 5220处理器,sql4场景建议以下executor参数。

        • 打开工具目录下的script/spark-default.conf文件,添加以下配置项:

          yarn.executor.num 42
          yarn.executor.cores 6
          spark.executor.memory 15G
          spark.driver.memory 36G
          
        • 同时调整IO预取值,其中sd$i表示所有参与spark的磁盘名:

          echo 4096 > /sys/block/sd$i/queue/read_ahead_kb
          
        • 并行度在Spark-Test-Tool/script/spark-default.conf里设置。

          spark.sql.shuffle.partitions 150
          spark.default.parallelism 504
          
      sql5 & sql6 & sql8 & sql9 & sql10
      • 并行度在Spark-Test-Tool/script/spark-default.conf里设置。

        spark.sql.shuffle.partitions 300
        spark.default.parallelism 504
        
      • 该场景其余参数都使用spark应用参数调优的通用优化值。

      HiBench场景

      Wordcount – IO + CPU密集型
      • 目的

        Wordcount是IO+CPU密集型场景,二者均衡,采用单队列的deadline调度算法反而不好,采用多队列的mq-deadline算法并调整相关io参数,能得到较好的性能结果。

      • 方法

        • 对以下配置进行修改,其中sd$i指所有参与测试的磁盘名称:

          echo mq-deadline > /sys/block/sd$i/queue/scheduler
          echo 512 > /sys/block/sd$i/queue/nr_requests
          echo 8192 > /sys/block/sd$i/queue/read_ahead_kb
          echo 500 > /proc/sys/vm/dirty_expire_centisecs
          echo 100 > /proc/sys/vm/dirty_writeback_centisecs
          echo 5 > /proc/sys/vm/dirty_background_ratio
          
        • 该场景下采用3-5倍总核数作为数据分片的Partitions和 Parallelism进行数据分片,减小单Task文件大小,对性能有正面提升。可以使用以下分片设置:

          spark.sql.shuffle.partitions 300
          spark.default.parallelism 600
          
        • HiBench在配置文件中指定的运行核数、内存大小可以根据实际环境来做调整,来达到最优性能。比如对于鲲鹏920 5220处理器,Wordcount场景建议以下executor参数:

          yarn.executor.num 51
          yarn.executor.cores 6
          spark.executor.memory 13G
          spark.driver.memory 36G
          
      Terasort – IO + CPU 密集型
      • 目的

        ​Terasort是IO和CPU密集型场景,可以对IO参数和spark执行参数进行调整。另外,Terasort对网络的带宽要求也较高,可以通过优化网络参数,提升系统性能。

      • 方法

        • 对以下配置进行修改,其中sd$i指所有参与测试的磁盘名称。

          echo bfq > /sys/block/sd$i/queue/scheduler
          echo 512 > /sys/block/sd$i/queue/nr_requests
          echo 8192 > /sys/block/sd$i/queue/read_ahead_kb
          echo 4 > /sys/block/sd$i/queue/iosched/slice_idle
          echo 500 > /proc/sys/vm/dirty_expire_centisecs
          echo 100 > /proc/sys/vm/dirty_writeback_centisecs
          
        • 该场景下采用3-5倍总核数作为数据分片的Partitions和 Parallelism进行数据分片,减小单Task文件大小,对性能有正面提升。打开HiBench工具的“conf/spark.conf”文件,可以使用以下分片设置:

          spark.sql.shuffle.partitions 1000
          spark.default.parallelism 2000
          
        • 打开HiBench工具的“conf/spark.conf”文件,增加以下executor参数:

          yarn.executor.num 27
          yarn.executor.cores 7
          spark.executor.memory 25G
          spark.driver.memory 36G
          
          • 优化网络参数。

            ethtool -K enp131s0 gro on
            ethtool -K enp131s0 tso on
            ethtool -K enp131s0 gso on
            ethtool -G enp131s0 rx 4096 tx 4096
            ethtool -G enp131s0 rx 4096 tx 4096
            # TM 280网卡最大可支持MTU=9000
            ifconfig enp131s0 mtu 9000 up
            
      Bayesian – CPU密集型
      • 目的

        ​Bayesian是CPU密集型场景,可以对IO参数和spark执行参数进行调整。

      • 方法

        • 该场景可以使用以下分片设置:

          spark.sql.shuffle.partitions 1000 
          spark.default.parallelism 2500
          
        • 打开HiBench工具的“conf/spark.conf”文件,增加以下executor参数:

          yarn.executor.num 9
          yarn.executor.cores 25
          spark.executor.memory 73G
          spark.driver.memory 36G
          
        • 该场景使用以下内核参数:

          echo mq-deadline > /sys/block/sd$i/queue/scheduler
          echo 0 > /sys/module/scsi_mod/parameters/use_blk_mq
          echo 50 > /proc/sys/vm/dirty_background_ratio
          echo 80 > /proc/sys/vm/dirty_ratio
          echo 500 > /proc/sys/vm/dirty_expire_centisecs
          echo 100 > /proc/sys/vm/dirty_writeback_centisecs
          
      Kmeans – CPU密集型
      • 目的

        ​Kmeans是CPU密集型场景,可以对IO参数和spark执行参数进行调整。

      • 方法

        • 主要是调整spark executor参数适配到一个较优值,该场景可以使用以下分片设置:

          spark.sql.shuffle.partitions 1000
          spark.default.parallelism 2500
          
        • 调整IO预取值,其中sd$i表示所有参与spark的磁盘名:

          echo 4096 > /sys/block/sd$i/queue/read_ahead_kb
          
        • 打开HiBench工具的“conf/spark.conf”文件,增加以下executor参数:

          yarn.executor.num 42
          yarn.executor.cores 6
          spark.executor.memory 15G
          spark.driver.memory 36G
          spark.locality.wait 10s
          

      Hive组件调优

      IO配置项调优

      主要涉及scheduler、read_ahead_kb、sector_size配置。

      • scheduler推荐使用mq-deadline,可以达到更高的IO效率,从而提高性能。

      • 块设备的预读推荐设置为4M,读性能更佳,默认值一般为128KB。

      • 块设备的sector_size应与物理盘的扇区大小进行匹配。可通过hw_sector_size、max_hw_sectors_kb、max_sectors_kb三者进行匹配,前两者是从硬件中读取出来的值,第三者是内核块设备的聚合最大块大小,推荐与硬件保持一致,即后两者参数保证一致。

      对涉及的所有数据盘统一设置如下:

      list="b c d e f g h i j k l m" #按需修改
      for i in $list
      do
        echo mq-deadline > /sys/block/sd$i/queue/scheduler
        echo 4096 > /sys/block/sd$i/queue/read_ahead_kb
        echo 512 > sys/block/sd$i/queue/hw_sector_size
        echo 1024 > /sys/block/sd$i/queue/max_hw_sectors_kb
        echo 256 > /sys/block/sd$i/queue/max_sectors_kb
      done
      

      内存脏页参数调优

      echo 500 > /proc/sys/vm/dirty_expire_centisecs
      echo 100 > /proc/sys/vm/dirty_writeback_centisecs
      

      Hive调优

      组件参数配置

      组件参数名推荐值修改原因
      Yarn->NodeManager Yarn->ResourceManagerResourceManager Java heap size1024修改JVM内存大小,保证内存水平较高,减少GC的频率。 说明: 非固定值,需要根据GC的释放情况来调大或调小Xms及Xmx的值。
      Yarn->NodeManager Yarn->ResourceManagerNodeManager Java heap size1024
      Yarn->NodeManageryarn.nodemanager.resource.cpu-vcores与实际数据节点的总物理核数相等。可分配给Container的CPU核数。
      Yarn->NodeManageryarn.nodemanager.resource.memory-mb与实际数据节点物理内存总量相等。可分配给Container的内存。
      Yarn->NodeManageryarn.nodemanager.numa-awareness.enabledtrueNodeManager启动Container时的Numa感知,需手动添加。
      Yarn->NodeManageryarn.nodemanager.numa-awareness.read-topologytrueNodeManager的Numa拓扑自动感知,需手动添加。
      MapReduce2mapreduce.map.memory.mb7168一个Map Task可使用的内存上限。
      MapReduce2mapreduce.reduce.memory.mb14336一个Reduce Task可使用的资源上限。
      MapReduce2mapreduce.job.reduce.slowstart.completedmaps0.35当Map完成的比例达到该值后才会为Reduce申请资源。
      HDFS->NameNodeNameNode Java heap size3072修改JVM内存大小,保证内存水平较高,减少GC的频率。
      HDFS->NameNodeNameNode new generation size384
      HDFS->NameNodeNameNode maximum new generation size384
      HDFS->NameNodedfs.namenode.service.handler.count32NameNode RPC服务端监测DataNode和其他请求的线程数,可适量增加。
      HDFS->NameNodedfs.namenode.handler.count1200NameNode RPC服务端监测客户端请求的线程数,可适量增加。
      HDFS->DataNodedfs.datanode.handler.count512DataNode服务线程数,可适量增加。
      TEZtez.am.resource.memory.mb7168等同于yarn.scheduler.minimum-allocation-mb,默认7168。
      TEZtez.runtime.io.sort.mbSQL1: 32 SQL2: 256 SQL3: 256 SQL4: 128 SQL5: 64根据不同的场景进行调整。
      TEZtez.am.container.reuse.enabledtrueContainer重用开关。
      TEZtez.runtime.unordered.output.buffer.size-mb53710%* hive.tez.container.size。
      TEZtez.am.resource.cpu.vcores10使用的虚拟CPU数量,默认1,需要手动添加。
      TEZtez.container.max.java.heap.fraction0.85基于Yarn提供的内存,分配给java进程的百分比,默认是0.8,需要手动添加。

      numa特性开启

      Yarn组件在3.1.0版本合入的新特性支持,支持Yarn组件在启动Container时使能NUMA感知功能,原理是读取系统物理节点上每个NUMA节点的CPU核、内存容量,使用Numactl命令指定启动container的CPU范围和membind范围,减少跨片访问。

      1. 安装numactl
      yum install numactl.aarch64
      
      1. 开启NUMA感知
      yarn.nodemanager.numa-awareness.enabled          true
      yarn.nodemanager.numa-awareness.read-topology    true
      

      在组件参数配置已列出。

      Hbase组件调优

      Hbase调优

      组件参数配置

      如下参数为本次测试所配置参数,x86计算平台和鲲鹏920计算平台参数仅有Yarn部分参数有差异(差异处表格中有体现),hbase和hdfs采用同一套参数进行测试。

      组件参数名推荐值修改原因
      Yarn->NodeManager Yarn->ResourceManagerResourceManager Java heap size1024修改JVM内存大小,保证内存水平较高,减少GC的频率。
      Yarn->NodeManager Yarn->ResourceManagerNodeManager Java heap size1024
      Yarn->NodeManageryarn.nodemanager.resource.cpu-vcores与实际数据节点的总物理核数相等。可分配给Container的CPU核数。
      Yarn->NodeManageryarn.nodemanager.resource.memory-mb与实际数据节点物理内存总量相等。可分配给Container的内存。
      Yarn->NodeManageryarn.nodemanager.numa-awareness.enabledtrueNodeManager启动Container时的Numa感知,需手动添加。
      Yarn->NodeManageryarn.nodemanager.numa-awareness.read-topologytrueNodeManager的Numa拓扑自动感知,需手动添加。
      MapReduce2mapreduce.map.memory.mb7168一个Map Task可使用的内存上限。
      MapReduce2mapreduce.reduce.memory.mb14336一个Reduce Task可使用的资源上限。
      MapReduce2mapreduce.job.reduce.slowstart.completedmaps0.35当Map完成的比例达到该值后才会为Reduce申请资源。
      HDFS->NameNodeNameNode Java heap size3072修改JVM内存大小,保证内存水平较高,减少GC的频率。
      HDFS->NameNodeNameNode new generation size384
      HDFS->NameNodeNameNode maximum new generation size384
      HDFS->NameNodedfs.namenode.service.handler.count128NameNode RPC服务端监测DataNode和其他请求的线程数,可适量增加。
      HDFS->NameNodedfs.namenode.handler.count1200NameNode RPC服务端监测客户端请求的线程数,可适量增加。
      HDFS->DataNodedfs.datanode.handler.count512DataNode服务线程数,可适量增加。
      HBase->RegionServerHBase RegionServer Maximum Memory31744修改JVM内存大小,保证内存水平较高,减少GC的频率。
      HBase->RegionServerhbase.regionserver.handler.count150RegionServer上的RPC服务器实例数量。
      HBase->RegionServerhbase.regionserver.metahandler.count150RegionServer中处理优先请求的程序实例的数量。
      HBase->RegionServerhbase.regionserver.global.memstore.size0.4最大JVM堆大小(Java -Xmx设置)分配给MemStore的比例。
      HBase->RegionServerhfile.block.cache.size0.4数据缓存所占的RegionServer GC -Xmx百分比。
      HBase->RegionServerhbase.hregion.memstore.flush.size267386880Regionserver memstore大小,增大可以减小阻塞。

      numa特性开启

      Yarn组件在3.1.0版本合入的新特性支持,支持Yarn组件在启动Container时使能NUMA感知功能,原理是读取系统物理节点上每个NUMA节点的CPU核、内存容量,使用Numactl命令指定启动container的CPU范围和membind范围,减少跨片访问。

      1. 安装numactl
      yum install numactl.aarch64
      
      1. 开启NUMA感知
      yarn.nodemanager.numa-awareness.enabled          true
      yarn.nodemanager.numa-awareness.read-topology    true
      

      在组件参数配置已列出。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份