参考链接:
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。
相关推荐
标题中的“MR程序Bulkload数据到hbase”指的是使用MapReduce(MR)程序批量加载(Bulkload)数据到HBase数据库的过程。MapReduce是Apache Hadoop框架中的一个关键组件,用于处理和生成大规模数据集。而HBase是一个...
当一个Region的数据量增长到预设阈值时,HBase会自动进行Region分裂,确保单个Region的大小保持在可控范围内,从而保持读写性能。 5. **RegionServer**: RegionServer是HBase的主要工作节点,负责存储和处理...
7. **兼容性**:HBase 1.2.6版本与Hadoop 2.x系列兼容,可以无缝地集成到Hadoop生态系统中,如MapReduce、HDFS和YARN。 **资源获取与安装**: 原始资源位于Apache的官方归档服务器上,地址是:`...
10. **Compaction**: HBase会定期进行Major Compaction,合并Region内的HFile,减少文件数量并清理过期数据,优化存储空间。 11. ** Coprocessors**: HBase引入Coprocessors机制,允许在RegionServer上执行自定义...
你可以通过Hadoop的`hadoop fs`命令或者直接在HBase的shell中使用它。 使用HBCK2进行测试和故障排查通常涉及以下几个命令: 1. **基本检查**: - `hbase hbck2 -details`: 这个命令将执行一个全面的检查,显示每...
HBase 配置文件 hbase-site.xml 详解 HBase 是一个基于 Hadoop 的分布式、面向列的 NoSQL 数据库,它提供了高性能、可扩展、可靠的数据存储解决方案。HBase 的配置文件 hbase-site.xml 是其核心配置文件,本文将...
4. 数据版本:HBase默认保留三个版本,可以通过配置`hbase.hregion.max.filesize`和`hbase.hfile.blocksize`调整。 五、Hadoop学习与HBase实践 Hadoop与HBase的配合使用可以发挥大数据处理的强大潜力。你可以通过...
MemStore是内存中的缓存,当达到一定大小或触发条件时,会将数据持久化到磁盘上的HFile。HFile是HBase的数据存储格式,优化了磁盘I/O效率。 在使用HBase时,理解Region Split策略非常重要,因为这直接影响数据分布...
其次,平台采用分布式存储和检索层架构设计,通过HBase实现分布式存储,利用Solr进行高效的数据检索,以及Phoenix提供SQL查询功能,为实时数据处理和分析提供了强大支持。此外,平台还集成了HDFS和OSS(对象存储服务...
在项目`hive-bulkload-hbase-master`中,你将找到一个示例项目,它演示了上述步骤的实现。这个项目可能包括了Hive和HBase的连接代码、数据预处理逻辑、MapReduce作业的配置以及加载HFiles的Java代码。通过阅读和理解...
这种方法适用于数据量大的情况(大于 4TB),通过 Hive 将数据转换为 HFile,然后使用 bulkload 将数据导入到 HBase 中。 首先,需要将 Hive 数据转换为 HFile: CREATE TABLE hbase_hfile_table(key int, name ...
- 读取时,HBase会从内存和HDFS中的HFile查找数据,利用布隆过滤器(Bloom Filter)优化查找效率。 以上就是关于HBase 0.98.17在Linux环境下的安装、配置和使用的基本知识点。在实际生产环境中,还需要考虑集群...
通过阅读源码,开发者可以更好地理解和参与到HBase的开发中,为社区提供有价值的改进和优化。 通过对`hbase-0.98.12.1-src.tar.gz`源码的深入研究,我们可以深入理解HBase的工作机制,这对于开发、维护和优化HBase...
这对于优化HBase应用性能、解决实际问题以及贡献代码到HBase项目本身都是非常有帮助的。 源码中关键组件包括: 1. `HRegionServer`:负责处理客户端请求,管理一部分Region。 2. `Master`:HBase集群的主节点,负责...
通过分析`org.apache.hadoop.hbase.masterAssignment.RegionStates`和`org.apache.hadoop.hbase.master.LoadBalancer`等类,我们可以了解HBase如何实现集群的负载均衡和容错能力。 在大数据处理中,HBase的性能优化...
《HBase 2.0.1 单机安装教程详解》 HBase,全称Apache HBase,是一款基于Google Bigtable理念设计的开源分布式数据库,是Hadoop生态系统中的重要组件。它提供了高度可靠、高性能、分布式、列式存储的多版本、实时的...
《HBase权威指南》是一本深入探讨分布式列式数据库HBase的专业书籍,其代码范例存放在名为“hbase-book-master.zip”的压缩包中。这个压缩包是专门为那些无法直接访问互联网的学习者准备的,旨在提供一个离线环境下...
4. **运行bulk load命令**:通过HBase的shell或者Java API执行`hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles`命令,指定待导入的HFile所在的目录和目标HBase表名。 5. **清理工作**:批量导入...
1. 分布式:HBase在Hadoop上运行,可以轻松扩展到数千台服务器,处理PB级别的数据。 2. 面向列:与传统的关系型数据库不同,HBase是面向列的,这使得它更适合处理稀疏的数据结构。 3. 实时读写:HBase提供低延迟的...
3. **Zookeeper协调**:Zookeeper在HBase中起到关键作用,它负责监控HMaster和HRegionServer的状态,以及在集群中进行配置信息的同步,保证系统的稳定运行。 4. **Region分裂**:随着数据量的增长,单个Region可能...