`

hfile通过bulkload拷贝到hbase方式---TODO待整理

 
阅读更多

 

 

 

参考链接:

 

 

http://blog.csdn.net/heyongluoyao8/article/details/25426481

 

 

 

http://www.ithao123.cn/content-101658.html  hbase之 bulkload的主要类 LoadIncrementalHFiles

 

 

http://www.thinksaas.cn/group/topic/233674/  bulkload 执行 mv和cp的区别

 

 

 

使用LoadIncrementalHFiles装载HFILE到HBASE的一点心得

 

 

:

 

数据入HBASE一般有两种方法:

1.HTable.put(),单条或者多条的方式入库。

2.先生成HFILE,然后将HFILE入库

前者适合于少量数据入库,后者主要面向海量数据入库。

 

 先说下HFILE,HFILE是有序的KEYVALUE集合,对于入库HBASE,HFILE需要按照Key进行排序(key是由rowkey和列族、列名等构成的),排序后,HFILE就有个startKey和endKey,她的所有key是再这两者之间的

 

  其次是HBASE的表,一个表可能存储再多个regionserver上,在每个regionserver包括多个Region,关系大概是:TABLE-->REGIONSERVER-->REGION。每个REGION的数据的key是有一个范围的,也是有个startKey和endKey,不同region的key的范围是没有交集的,所以一个table的key的范围可以表示为{{null,endkey1},{startkey2,endtime2},{startkey3,endkey3}......{startkeyn,null}}。

 

 

 接下来说Hfile批量入Hbase,LoadIncrementalHFiles会检查HFILE的目录(结构是主目录->列族目录->hfile),把需要批量导入的Hfile放到一个列表中,依次执行。导入每一个Hfile,系统会判断hfile是否再某个region中还是跨了region(通过前面说的startkey,endkey进行判断)。如果在一个region中,就是进行导入,系统会通过rpc调用regionserver的方法,先把HFILE复制Region所在的文件系统中(如果处于不同的FS),然后直接将HFILE直接改名为Region的一个StoreFile,并更新该Region的Storefile列表,这样该HFILE就入库。如果在HFILE跨的region,那么需要对Hfile进行split(分成.top和.bottom两个文件,每个文件单属于一个region,也是Hfile格式的,放在_tmp下,),接下来把split之后的文件进行入库。

 

 

最后,根据这些理解来解释一些问题:

1、问:HFILE为什么需要排序?

答:那是应为REGION中的storefile是有序的,只有hfile有序,才能通过简单的拆分和rename来转换为storefile,而实现入库。

2、问:有时Hfile入库成功后,原Hfile会被移除,有时又不是?

答:如果Hfile的key属于单个region时,直接通过rename导入的,所以原文件不见了。而如果key跨了region,那么需要split到_tmp下,最终入库的的split后的文件,原hfile没有动,所以需要人工去删它。

3、问:如果HFILE跨域多个region,会不会有问题?

答:每次split都是分成两个文件,前一个文件肯定是属于单个region的,后一个文件就不一定了,所以,处理split后的文件时会做同样的判断,确保跨region的hfile不断的split。

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    HBase用户手册-v2.2.docx

    7.1 bulkload介绍 19 7.2 具体使用方法 19 7.2.1 往hdfs中put文件: 19 7.2.2 用ImportTsv方法生成Hfile 20 7.2.3 利用Hfile进行加载 21 7.2.4 put方式直接加载 22 8 HBase-client 24 8.1 log4j 24 8.2 ...

    yl-hbase-rep:hbaseplicationsnapshot实现机制,源码解析,以及复制对等体的实现-源码解析

    yl-hbase-rep hbase快照,复制实现机制,源码解析 复制对等方的实现代码 批量加载代码示例 ...也可以通过编码的方式,通过bulkload生成hfile然后再合并到hbase 致谢 yl-hbase-rep实现机制参考了lily

    hive-hbase-generatehfiles

    Hive HBase生成HFile 该项目包含一个示例,该示例利用Hive HBaseStorageHandler生成HFile。 这种模式提供了一种方法,用于获取已存储在Hive中的数据,将其导出为HFile,并从这些HFile批量加载HBase表。概述HFile生成...

    MapReduce生成HFile入库到HBase 可能需要的jar包

    MapReduce生成HFile入库到HBase 可能需要的jar包,一共有3个 可以直接放在每台机器的${HADOOP_HOME}/lib下 hadoopHadoop 1.1.2 + hbase 0.94.6.1

    HBASE hfile v2 format

    hbase hfile v2 format draft 描述存储结构

    Hbase中文文档

    3.1. 从HBase 0.20.x or 0.89.x 升级到 HBase 0.90.x 3.2. 从 0.90.x 到 0.92.x 4. The HBase Shell 4.1. 使用脚本 4.2. Shell 技巧 5. 数据模型 5.1. 概念视图 5.2. 物理视图 5.3. 表 5.4. 行 5.5. 列族 5.6. Cells...

    hfile-to-hbase:处女发表

    hfile 到 hbase 处女发表

    Hadoop数据迁移--从Hadoop向HBase载入数据

    将数据从Hadoop中向HBase载入数据,该过程大致可以分为两步: 一、将Hadoop中普通文本格式的数据转化为可被HBase识别的HFile...二、将HFile载入到HBase中,该过程实际就是将数据从一个地移动到HBase某表数据的存放地。

    Hbase_目录结构.pptx

    /hbase/archive (1) 进行snapshot或者升级的时候使用到的归档目录。compaction删除hfile的时 候,也会把旧的hfile归档到这里等。 /hbase/corrupt (2) splitlog的corrupt目录,以及corrupt hfile的目录。

    BigGeoDataHBaseLoader:HBase矢量大数据快速入库工具

    1、在HBase shell中创建数据表 create '表名', {NAME=>'Polygon/Polyline/Point'} ...4、将HFile添加到HBase表中 hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles HFile路径 空间数据表名

    hbase1.x 跟2.x比较.docx

    hbase1.x 跟2.x比较.docx

    HBaseBulkImportXML:如何将 XML 文件中的数据批量导入 HBase 表的示例

    使用 API 将数据放入工作中,但因为它必须遍历 HBase 的写入路径(即在将其刷新到 HFile 之前通过 WAL 和 memstore),它比您简单地绕过该批次并自己创建 HFiles 和将它们直接复制到 HDFS 中。 幸运的是 HBase 带有...

    HBase_XML_bulkimport

    使用 API 将数据放入工作中,但因为它必须遍历 HBase 的写入路径(即在将其刷新到 HFile 之前通过 WAL 和 memstore),它比您简单地绕过该批次并自己创建 HFiles 和将它们直接复制到 HDFS 中。 幸运的是 HBase 带有...

    hadoop mr file2hfile2hbase

    NULL 博文链接:https://liuyq1991.iteye.com/blog/2109364

    分布式数据库HBase深入使用

    分布式数据库HBase深入使用 HBase能高速实现数据存储和访问源于Hbase数据存储 连接ZooKeeper,从ZooKeeper 中找要读的数据。我们需要知道表中的Rowkey在region的位置。 客户端查找HRegionServer,HRegionServer ...

    hbase:habse自定义MR

    hbase从HBase表中导入数据到Hbase表中将fruit表中的一部分数据,通过MR迁入到fruit_mr表中从HDFS中导入数据到Hbase表中根据HDFS中的数据导入到fruit_hdfs表中

    Hadoop数据迁移--使用importtsv独步载入数据

    该工具是HBase提供的一个将HDFS数据转化为HBase数据库数据的一个工具。 其实现过程是,先将HDFS文件转复制并转化为HFile文件,然后将HFile移动并加载成为HBase的数据文件。

    hbase技术介绍

    关于hbase的入门知识.hbase是基于hdfs建立的数据库,可扩展性强。

    spark-hbase:用于将 Spark 与 Apache HBase 数据结合使用的集成实用程序

    Spark SQL HBase 库 用于将 Spark 与 Apache HBase 数据结合使用的集成实用程序。 支持 基于 HBase 读取的扫描 ... 基于 HBase 读取的分析 HFile 基于 HBase 写入的批量加载 要求 这个库需要 Spark 1.2+

    VBA API 32 Serialport MT-SICS

    (ByVal hFile As Long, ByVal dwInQueue As Long, ByVal dwOutQueue As Long) As Long ' ' Writes data to a file and is designed for both synchronous and a ' synchronous operation. The function starts ...

Global site tag (gtag.js) - Google Analytics