【数据迁移】HBase Bulkload批量加载原理

概述

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

put方式

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

scala 复制代码
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 写入路径流程图
Client RegionServer WAL Memstore HFile Put/Delete Write to WAL Write to memstore Flush to disk Client RegionServer WAL Memstore HFile

Bulkload方式

BulkLoad 数据导入流程

  • BulkLoader 利用 HBase 数据按照 HFile 格式存储在 HDFS 的原理,使用 MapReduce 直接批量生成 HFile 格式文件后,RegionServers 再将 HFile 文件移动到相应的 Region 目录下。
BulkLoad 流程图
相关推荐
金伟API10244 小时前
不会写复杂SQL怎么办?
数据库·sql
执笔为剑4 小时前
2.1.2-1、V8R3迁移到V8R6-Oracle兼容特性
数据库
Leo.yuan4 小时前
FineBI AI原生版:Agent主动规划分析路径,让数据成为企业经营决策的顾问
大数据
geovindu4 小时前
sql:Search-Optimized SQL Queries using mysql 9.0
android·数据库·sql·mysql·数据库开发·数据库架构
for_ever_love__5 小时前
MySQL SELECT 与 WHERE 优化实战:可搜索条件、联合索引与执行计划
数据库·mysql·oracle·select·where·条件优化·查询优化技巧
VibeCoding工程之道5 小时前
第八章 最终格局:不是 AI 淘汰人,是「依赖 AI 的人」淘汰自己
大数据·人工智能·ai焦虑·ai思考·ai反噬
2501_931803755 小时前
MySQL 锁机制详解
数据库·mysql
大大大大晴天5 小时前
每天认识一个组件:Apache Kafka
大数据
Nturmoils5 小时前
SQL 编辑器不只是写查询:我用 KStudio 排查一次订单异常
数据库
IvorySQL5 小时前
PostgreSQL 日报|逻辑解码 DDL 子事务缺陷修复(10 月 12 日)
数据库·postgresql