`

Hadoop HBase建表时预分区(region)的方法学习

 
阅读更多
如果知道Hbase数据表的key的分布情况,就可以在建表的时候对hbase进行region的预分区。这样做的好处是防止大数据量插入的热点问题,提高数据插入的效率。

1.规划hbase预分区
-------------------------
首先就是要想明白数据的key是如何分布的,然后规划一下要分成多少region,每个region的startkey和endkey是多少,然后将规划的key写到一个文件中。比如,key的前几位字符串都是从0001~0010的数字,这样可以分成10个region,划分key的文件如下:

0001|  
0002|  
0003|  
0004|  
0005|  
0006|  
0007|  
0008|  
0009| 


为什么后面会跟着一个"|",是因为在ASCII码中,"|"的值是124,大于所有的数字和字母等符号,当然也可以用“~”(ASCII-126)。分隔文件的第一行为第一个region的stopkey,每行依次类推,最后一行不仅是倒数第二个region的stopkey,同时也是最后一个region的startkey。也就是说分区文件中填的都是key取值范围的分隔点,如下图所示:



2.hbase shell中建分区表,指定分区文件
-------------------------------------
在hbase shell中直接输入create,会看到如下的提示:


Create a table with namespace=ns1 and table qualifier=t1  
  hbase> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}  
  
Create a table with namespace=default and table qualifier=t1  
  hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}  
  hbase> # The above in shorthand would be the following:  
  hbase> create 't1', 'f1', 'f2', 'f3'  
  hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}  
  hbase> create 't1', {NAME => 'f1', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}  
    
Table configuration options can be put at the end.  
Examples:  
  
  hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']  
  hbase> create 't1', 'f1', SPLITS => ['10', '20', '30', '40']  
  hbase> create 't1', 'f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'  
  hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }  
  hbase> # Optionally pre-split the table into NUMREGIONS, using  
  hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)  
  hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}  
  hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}  
  hbase> create 't1', {NAME => 'f1'}, {NAME => 'if1', LOCAL_INDEX=>'COMBINE_INDEX|INDEXED=f1:q1:8|rowKey:rowKey:10,UPDATE=true'}


可以通过指定SPLITS_FILE的值指定分区文件,如果分区信息比较少,也可以直接用SPLITS分区。我们可以通过如下命令建一个分区表,指定第一步中生成的分区文件:

create 'split_table_test', 'cf', {SPLITS_FILE => 'region_split_info.txt'} 


SNAPPY压缩
--------------------------------
create 'split_table_test',{NAME =>'cf', COMPRESSION => 'SNAPPY'}, {SPLITS_FILE => '/tmp/region_split_info.txt'}  


这里注意,一定要将分区的参数指定单独用一个大括号扩起来,因为分区是针对全表,而不是针对某一个column family。

转自:http://blog.csdn.net/chaolovejia/article/details/46375849#
  • 大小: 10.5 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hadoop与HBase部署文档

    - **RegionServer**:存储HBase表的分区(Region),处理客户端的读写请求。 6. **测试与优化** - **启动与停止服务**:启动Hadoop和HBase服务,进行集群健康检查。 - **性能调优**:根据实际工作负载调整Hadoop...

    Hadoop之Hbase从入门到精通

    ### Hadoop之Hbase从入门到精通 #### HBase技术介绍与概述 HBase是一种分布式、高可靠性且高性能的列式存储系统,它基于Hadoop生态体系构建,并且能够支持大规模的数据存储需求。HBase的设计灵感来源于Google的...

    Hadoop和Hbase 配置文件-完整好的

    此外,为了提高性能和可靠性,你可能还需要调整其他高级配置,如HDFS的块大小、HBase的 Region 分区策略等。这些都需要根据你的硬件配置、数据规模和应用需求来定制。 总之,理解和配置好Hadoop与HBase的参数是确保...

    Hadoop2.7.1+Hbase1.2.1集群环境搭建(7)hbase 性能优化

    预分区表以减少Region分裂;使用合适的数据类型和列族策略。 3. **HBase配置调整**:例如增大`hbase.hregion.max.filesize`以控制Region大小,调整`hbase.regionserver.handler.count`以增加处理线程数,或者优化`...

    Hadoop+Hbase搭建云存储总结

    - **Region:** 是Hbase表的逻辑分区,每个Region包含一个或多个列族。 #### 四、Hadoop+Hbase搭建云存储的整体方案 **1. 技术选型** - **Hadoop:** 作为基础的大数据处理框架,提供数据存储和处理能力。 - **...

    基于HadoopHBase的一淘搜索离线系统PPT课件.pptx

    消息被组织为HBase表中的行,每个分区对应一个Region,消息体作为KeyValue存储。写入和读取过程都经过优化,通过Coprocessor插件实现快速定位和顺序扫描,保证消息的有序性和一致性。 总结来说,一淘搜索系统利用...

    基于Hadoop和HBase的大规模海量数据去重.zip

    通过Hadoop,可以快速处理和清洗预训练数据,为深度学习模型等AI应用提供基础。 7. **分布式系统的挑战**: 在分布式环境中,数据去重需要考虑网络延迟、节点故障、数据一致性等问题。项目HadoopDedup可能包含了...

    基于Hadoop_hbase的Distinct实现.zip

    6. **分布式计算原理**:了解并行计算的概念,如数据分区、任务调度和错误恢复,这些都是Hadoop和HBase中的重要概念。 7. **开发和调试Hadoop及HBase应用**:涉及编写MapReduce程序,理解HBase的API,以及使用...

    ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用

    2. **Region分配**:当新的Region需要被分配时,HBase利用ZooKeeper的选举机制选择一个合适的RegionServer来托管这个Region,从而保证数据分布的平衡。 3. **Master选举**:HBase Master是整个系统的协调者,负责...

    HBase 0.98.1-hadoop2 API

    5. Region服务器:RegionServer是HBase的数据节点,负责处理客户端请求,管理表的分区。 6. ZooKeeper:HBase依赖ZooKeeper进行元数据的协调和服务发现,确保集群的稳定运行。 Hadoop 2.x的集成意味着HBase可以利用...

    Docker hadoop zookeeper hbase 配置文件

    在构建大数据处理环境时,Docker 提供了一个高效且便捷的方式,可以将复杂的应用程序如 Hadoop、Zookeeper 和 HBase 部署在隔离的容器中。本配置文件集专注于利用 Docker 搭建一个 HBase 集群,其中涉及到的关键知识...

    大数据题库_大数据_大数据;_hive;_hbase等;_hadoop;_

    大数据是21世纪信息技术领域的重要里程碑,它涵盖了海量数据的收集、存储、处理...通过对这些知识点的学习和练习,读者能够深入理解大数据处理流程,熟练掌握Hadoop、HBase和Hive的使用,提升在大数据领域的专业技能。

    HBase源代码 hbase-0.98.23

    `org.apache.hadoop.hbase.regionserver.StoreFile`类管理每个列族的HFile,当一个Region的大小达到预设阈值时,`org.apache.hadoop.hbase.regionserver.HRegion`会触发分裂过程,这涉及到`org.apache.hadoop.hbase....

    大数据云计算技术系列 Hadoop之Hbase从入门到精通(共243页).rar

    《大数据云计算技术系列:Hadoop之HBase从入门到精通》是一份全面深入的教程,旨在帮助读者理解和掌握HBase这一强大的分布式列式数据库。HBase是构建在Hadoop生态系统之上,专门处理大规模数据的非关系型数据库。这...

    hbase海量数据的全量导入方法

    对于HBase的全量数据导入,尤其是从MySQL等传统关系型数据库进行迁移时,采用预分区、HFileOutputFormat、并行导入以及HBase参数优化等策略,可以显著提升数据导入的速度和效率。通过深入理解HBase的数据结构和...

    大数据云计算技术系列 Hadoop之Hbase简介(共19页).rar

    2. **表和Region**:HBase如何通过分区(Region)管理大表,并保证数据分布均匀。 3. **RowKey设计**:如何有效地设计RowKey以优化查询性能。 4. **Scan和Get操作**:如何使用这两个基本操作进行数据检索。 5. **...

    Hbase学习总结.rar

    HBase是Apache Hadoop生态系统的一部分,它运行在Hadoop分布式文件系统(HDFS)之上,提供实时的数据访问和强大的读写性能。 ### 一、HBase概述 1. **NoSQL数据库**:HBase属于非关系型数据库(NoSQL),不遵循...

    hbase_常用配置参数_以及学习笔记讲解_以及各种原理图.zip

    当Region的大小达到预设阈值时,HBase会自动执行Region切分,将一个大Region拆分为两个小Region,以避免单个Region过大导致性能下降。"region切分.png"可能展示了这个过程。 6. **RowKey设计**: RowKey是HBase中...

    常用大数据工具学习实战,包含Hadoop、HBase、Kafka、Click-bigdata-practice.zip

    HBase利用Hadoop的HDFS作为底层存储,并通过RegionServer进行数据分区和负载均衡,确保数据访问的效率和一致性。 Kafka是一款高吞吐量的分布式消息系统,最初由LinkedIn开发,现已成为Apache项目。Kafka主要用于...

Global site tag (gtag.js) - Google Analytics