lsp66

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

系统层面优化
CPU / 内存隔离:Linux 下通过yarn-site.xml为 HBase MR 任务分配专属资源:

yarn.scheduler.maximum-allocation-mb
16384


mapreduce.map.memory.mb
8192

磁盘 IO 优化:MR 临时目录配置到 SSD(mapreduce.cluster.local.dir=/data/ssd/mr_tmp),避免与 HBase 数据目录竞争 IO。
2. HBase 层面优化
Region 预分区:确保 HBase 表的 Region 数与 MR Map Task 数匹配(1 个 Map Task 处理 1 个 Region),避免数据倾斜;
关闭 Region 自动分裂:MR 运行期间禁用 Region 分裂,避免分片变化导致任务失败:
hbase shell> alter 't1', {CONFIGURATION => {'hbase.hregion.enable.split' => 'false'}}
Scanner 优化:

提交MR时添加参数,提升扫描性能

-D hbase.client.scanner.timeout.period=600000 # 扫描超时10分钟
-D hbase.client.scanner.caching=5000 # 每次扫描缓存5000行
3. MR 任务优化
数据本地化:Linux 下确保 HBase Region 与 MR Node 在同一节点(HDFS 数据本地化),通过hbase-site.xml配置:

hbase.mapreduce.input.locality.sensitive
true

压缩传输:开启 MR 数据传输压缩,减少网络 IO:
hadoop jar hbase-mr.jar ... -D mapreduce.map.output.compress=true -D mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec
小文件合并:MR 输出到 HDFS 后,通过 HBase 的LoadIncrementalHFiles(BulkLoad)批量导入,避免小文件问题:

1. MR输出为HFile格式

hadoop jar hbase-mr.jar ... -D mapreduce.outputformat.class=org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2

2. BulkLoad导入HBase

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/hbase_hfile t1

posted on 2026-01-03 14:09  李世鹏66  阅读(1)  评论(0)    收藏  举报