完整教程:【数据迁移】HBase Bulkload批量加载原理

概述

在有大量数据需要写入到HBase当中时,通常有putBulkload两种方式。

put方式

在put内容时会先将资料的更新操作信息和数据信息写入WAL,在写入到WAL后,资料就会被放到MemStore中,当MemStore满后数据就会被 flush 到磁盘(即形成HFile文件)。在这种写操作过程会涉及到 flush、split、compaction 等操作,容易造成节点不稳定、信息导入慢、耗费资源等疑问。在海量材料的导入过程极大的消耗了系统性能。避免这些问题最好的方式就是使用 BulkLoad 的方式来加载数据到 HBase 中。

val put = new Put(rowKeyBytes)
put.addColumn(cf, column, value)
put.addColumn(cf, column, value)
put.addColumn(cf, column, value)
put.addColumn(cf, column, value)
table.put(put)

HBase 写入路径流程图

ClientRegionServerWALMemstoreHFilePut/DeleteWrite to WALWrite to memstoreFlush to diskClientRegionServerWALMemstoreHFile

Bulkload方式

BulkLoad 素材导入流程

  • BulkLoader利用 HBase 材料按照 HFile 格式存储在 HDFS 的原理,应用 MapReduce 直接批量生成 HFile 格式文件后,RegionServers 再将 HFile 文件移动到相应的 Region 目录下。
BulkLoad 流程图

在这里插入图片描述

posted @ 2025-11-16 15:49  gccbuaa  阅读(13)  评论(0)    收藏  举报