温馨提示×

linux hbase如何导入数据

小樊
33
2026-10-28 03:46:47
栏目: 智能运维

在 Linux 环境下,向 HBase 导入数据常见有几种方式,下面按使用频率和适用场景给你系统梳理一下。


一、使用 HBase Shell 手动导入(适合测试/小数据)

1. put 命令

hbase shell
create 'test', 'cf'

put 'test', 'row1', 'cf:name', 'zhangsan'
put 'test', 'row1', 'cf:age', '20'

✅ 适合:少量数据、调试
❌ 不适合:大批量数据


二、批量导入(推荐):ImportTsv + BulkLoad(最常用)

1. 准备数据文件(TSV / CSV)

vi user.tsv
row1	zhangsan	20
row2	lisi	25

2. 创建表

hbase shell
create 'user', 'cf'

3. 导入 TSV 到 HBase(直接写 HFile)

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.columns=HBASE_ROW_KEY,cf:name,cf:age \
-Dimporttsv.bulk.output=/tmp/hbase_bulk \
user /user/data/user.tsv

4. 加载数据(BulkLoad)

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \
/tmp/hbase_bulk user

✅ 适合:千万/亿级数据
✅ 不占用 RegionServer 内存,性能最好


三、使用 completebulkload(生产推荐)

和上面类似,但更标准:

hadoop jar $HBASE_HOME/lib/hbase-server-*.jar \
completebulkload /tmp/hbase_bulk user

四、从 HDFS 文件导入(Import 工具)

1. 数据格式必须是 HBase 导出格式

hbase org.apache.hadoop.hbase.mapreduce.Import \
user /hbase/export/user

✅ 适合:HBase → HBase 迁移


五、使用 MapReduce / Spark 写 HBase

Spark 写 HBase 示例(Scala)

rdd.saveAsNewAPIHadoopDataset(job.getConfiguration)

✅ 适合:ETL、实时/离线计算
✅ 企业最常用


六、使用 hbase-client API(Java)

Table table = conn.getTable(TableName.valueOf("user"));
Put put = new Put(Bytes.toBytes("row1"));
put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"), Bytes.toBytes("tom"));
table.put(put);

✅ 适合:程序化写入


七、常见错误 & 建议

问题 原因
Region 过多 预分区不合理
导入慢 没用 BulkLoad
权限错误 HDFS / HBase 用户不一致

✅ 生产环境强烈建议:BulkLoad


总结(怎么选)

场景 推荐方式
测试 HBase Shell
小批量 put
大批量 ImportTsv + BulkLoad
数据迁移 Import
ETL Spark / MR

如果你愿意,可以告诉我:

  • HBase 版本
  • 数据来源(CSV / MySQL / Hive / Kafka)
  • 数据量级别

我可以给你 针对性的导入方案 + 命令模板。

0 踩