
# 提升HBase BulkLoad工具批量加载效率
#### 操作场景
在大数据处理场景中，当需要将海量数据高效导入HBase时，通过HBase API逐条写入的方式会消耗大量CPU和网络资源。HBase BulkLoad批量加载功能通过MapReduce jobs直接生成符合HBase内部数据格式的StoreFiles文件，并加载到正在运行的集群，相比直接使用HBase API可显著节约资源。ImportTSV作为配套的表数据加载工具，进一步简化了TSV格式数据的导入流程。
#### 前提条件
在执行批量加载时需要通过"Dimporttsv.bulk.output"参数指定文件的输出路径。
#### 操作步骤
在HBase客户端执行批量加载任务时，在BulkLoad命令行中加入[表1]中的参数。
 表1增强BulkLoad效率的配置项 
| 参数                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 示例                                                      |
|:---|:---|:---|
| -Dimporttsv.mapper.class | 用户自定义Mapper类，通过把键值对的构造从Mapper移动到Reducer以提高性能。Mapper只需要把每一行的原始文本发送到Reducer，Reducer解析每一行的每一条记录并创建键值对。参数取值包括： - org.apache.hadoop.hbase.mapreduce.TsvImporterByteMapper  - org.apache.hadoop.hbase.mapreduce.TsvImporterTextMapper   仅当执行没有*HBASE_CELL_VISIBILITY OR HBASE_CELL_TTL*选项的批量加载命令时才支持配置该参数值为"org.apache.hadoop.hbase.mapreduce.TsvImporterByteMapper"，可以得到更好的性能。 | org.apache.hadoop.hbase.mapreduce.TsvImporterTextMapper |
   
