`
290434409
  • 浏览: 27014 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop之HBase学习笔记

阅读更多

本文主要是一些具体的java代码以及少量的概念描述,至于具体的概念可以详细百度

 

1、namespace

   HBase namespace特性是对表资源进行隔离的一种技术,隔离技术决定了HBase能否实现资源统一化管理的关键,提高了整体的安全性。

 

   *配额管理:限制一个namespace使用的资源,如:region、table
   *命名空间安全管理:提供了多租户安全管理
   *Region服务器组:保证了数据隔离性,可以将一个namespace或者table固定在一个regionServer上

 

1.1 预定义的namespace
      *hbase 系统命名空间,包含hbase的内部表
      *default 默认命名空间

 

1.2 namespace的DDL操作

1.2.1 创建:create_namespace 'zhw 

hbase(main):004:0> create_namespace 'zhw'
0 row(s) in 0.1210 seconds

1.2.2 删除:drop_namespace 'zhw'

 

hbase(main):006:0> drop_namespace 'zhw'
0 row(s) in 0.1000 seconds

1.2.3 查看:list_namespace

 

 

hbase(main):009:0> list_namespace
NAMESPACE
default
hbase
zhw
3 row(s) in 0.0770 seconds

1.2.4 权限:

 

 

grant <user> <permissions>[ <table>[ <column family>[ <column qualifier> ] ] ]
revoke <user> <permissions> [ <table> [ <column family> [ <column qualifier> ] ] ]
user_permission <table>

  *注意*权限需要进行启用:hbase-site.xml

 

 

<property>
       <name>hbase.security.authorization</name>
       <value>true</value>
</property>
<property>
      <name>hbase.coprocessor.master.classes</name>
      <value>
             org.apache.hadoop.hbase.security.access.AccessController
      </value>
</property>
<property>
       <name>hbase.coprocessor.region.classes</name>
       <value>
            org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.AccessController
      </value>
</property>

 

 

2、具体代码:

2.1 全局配置(此文代码均基于这个配置的),由于使用Zookeeper,所以只需要两个参数就ok:

 

Configuration config=new Configuration();
config.set("hbase.zookeeper.quorum", "10.8.177.204");
config.set("hbase.zookeeper.property.clientPort", "2181");
HBaseAdmin admin = new HBaseAdmin(config);

2.2创建表

 

HTableDescriptor tDesc=new HTableDescriptor(TableName.valueOf(tableName));
HColumnDescriptor cDesc=new HColumnDescriptor(family);
tDesc.addFamily(cDesc);
admin.createTable(tabDesc);
admin.close();

 常用:

    设置region的store文件最大值:tDesc.setMaxFileSize(512);默认256M
    设置region内存中的最大值:tDesc.setMemStoreFlushSize(512)默认64M
    设置列族的数据保存时长:cDesc.setTimeToLive(5184000);单位秒
    设置列族数据保存再内存中:cDsc.setInMemory(true);可以提高响应速度
    设置列族数据保存的版本:setMaxVersions(10)  setMinVersions(5)
    WAL日志级别:枚举类Durability
        HTableDescriptor|Delete|Put对象.setDurability(Durability.FSYNC_WAL );//安全性高,影响性能
        Durability.USE_DEFAULT:use HBase's global default value (SYNC_WAL)

2.3 删除表

admin.disableTable(tableName);
admin.deleteTable(tableName);

 

2.4 修改表

        admin.disableTable(table.getTableName());
        for(String rmFam:removeFamilies){
            table.removeFamily(Bytes.toBytes(rmFam));
            System.err.println(" - deleted family " + rmFam);
        }
        for(HColumnDescriptor family:addCols){
            table.addFamily(family);
            System.err.println(" - added family " + family.getNameAsString());
        }
        admin.modifyTable(table.getTableName(),table);
        admin.enableTable(table.getTableName());

 

2.5 插入数据

public static void insert(String family,String[] qualifiers,String[] values,Put put){
        for(int i=0;i<qualifiers.length;i++){
            put.add(Bytes.toBytes(family),Bytes.toBytes(qualifiers[i]),Bytes.toBytes(values[i]));
        }
}
        //一个Put为一条记录
        Put p1=new Put(Bytes.toBytes(sid++));
            insert("name",new String[]{"firstName","lastName"},new String[]{"z","hw"},p1);
            insert("age",new String[]{"chinaAge","otherAge"},new String[]{"23","24"},p1);
            insert("sex",new String[]{"sex"},new String[]{"man"},p1);
            Put p2=new Put(Bytes.toBytes(sid++));
            insert("name",new String[]{"firstName","lastName"},new String[]{"zh","jy"},p2);
            insert("age",new String[]{"chinaAge","otherAge"},new String[]{"22","23"},p2);
            insert("sex",new String[]{"sex"},new String[]{"female"},p2);
           //......
        System.out.println("- ready insert ,count:" + puts.size());
        HTable table=new HTable(config,tableName);
        table.put(puts);
        table.close();
        System.out.println(" - insert success");

 

3、查询数据

3.1 按RowKey查询,核心类:Get

 

Get get=new Get(Bytes.toBytes(id));指定RowKey
get.addFamily(Bytes.toBytes(family));//指定列族 可选
get.addColumn(Bytes.toBytes(family),Bytes.toBytes(qualifier));//指定列
get.setTimeStamp(1444810207364L);//指定时间戳
get.setMaxVersions() ;//获取所有版本

 取值:

 

 

Result Cell CellUtil  //取值处理
Bytes.toString(CellUtil.cloneFamily(cell)) //

 

 

3.2 全表扫描,核心类:Scan

 

Scan scan=new Scan();
scan.addFamily(Bytes.toBytes(family));
scan.addColumn(Bytes.toBytes(family),Bytes.toBytes(col));

 取值:

 

 

ResultScanner rs=table.getScanner(scan);//后续上同

 

 

4、过滤器

4.1 过滤器比较器

RegexStringComparator
SubstringComparator
BinaryComparator
BinaryPrefixComparator
NullComparator
BitComparator

4.2 常用过滤器

SingleColumnValueFilter
FamilyFilter
QualifierFilter
RowFilter
PageFilter
... ...

    

4.3 过滤器包装:

SkipFilter//类似于对过滤器的非操作
FilterList//可以进行过滤器的【与|或】操作

 

5、异常:

代码中出现了Retrying connec to server...

多半是HBase的某个HRegionServer有问题了.

 

6、以上代码亲测全部通过,具体代码见附件.

7、参考资料

http://blog.csdn.net/opensure/article/details/46470969
http://blog.csdn.net/wulantian/article/details/41011297
http://www.cloudera.com/content/cloudera/en/documentation/core/v5-2-x/topics/cdh_sg_hbase_authorization.html
http://blog.csdn.net/u010967382/article/details/37653177
http://hbase.apache.org/0.94/book.html

 

  • 大小: 36 KB
分享到:
评论
发表评论

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

相关推荐

    hadoop,hive,hbase学习资料

    【标题】:“hadoop,hive,hbase学习资料”是一份综合性的学习资源,涵盖了大数据处理领域中的三个核心组件——Hadoop、Hive和Hbase。这些工具在大数据处理和分析中发挥着至关重要的作用。 【描述】:描述指出这份...

    HBase学习笔记(个人整理)

    它建立在Apache Hadoop和ZooKeeper之上,参照了Google的BigTable设计。HBase属于NoSQL数据库家族,主要为大数据场景提供存储解决方案。 【HBase的特点】 1. 海量存储:HBase能处理极大规模的数据,单表可以达到数...

    Hadoop&Hbase.rar

    用户不得未经著作权人同意擅自对他人的作品进行全部或部分复制、修改、改编、翻译、汇编、反向工程、反向编译、反向汇编或改写并进行上传。用户可以为介绍、评论、研究等目的,在合理范围内依法引用他人已经发表的...

    hbase学习笔记.doc

    HBase构建于Apache Hadoop之上,利用HDFS作为其底层存储系统,并且与MapReduce框架集成,支持大规模并行计算。 在HBase中,数据被组织成表格形式,但不同于传统的关系型数据库,HBase是面向列族的,这意味着每个表...

    大数据环境搭建(java, hadoop, hbase, spark, miniconda, jupyte)

    本环境搭建主要包括以下几个核心部分:Java、Hadoop、HBase、Spark、Miniconda以及Jupyter。 首先,Java是大数据处理的基础,因为许多大数据工具依赖于Java运行时环境。在Ubuntu中,首先需要下载JDK的压缩包,将其...

    Hadoop学习笔记

    这个“Hadoop学习笔记”涵盖了Hadoop生态系统中的核心组件,包括HDFS(Hadoop分布式文件系统)、HBase(一个分布式、列式存储的数据库)、Hive(数据仓库工具)以及Spark(一个快速、通用且可扩展的数据处理引擎)。...

    hadoop Hbase入门资料 特别推荐

    这是一个大牛的学习笔记,讲解详细,思路清晰,按步就班,是学习hadoop hbase的入门资料,值得入门人员拥用!

    完整图文版 阿里巴巴数据产品平台 大数据与云计算技术系列教程 Hadoop之Hive学习笔记(共63页).rar

    《阿里巴巴数据产品平台 大数据与云计算技术系列教程:Hadoop之Hive学习笔记》是一部深入探讨Hadoop生态中Hive技术的专业教程。这本笔记共计63页,旨在为读者提供一个全面、系统的学习Hive的平台,帮助读者理解和...

    Hbase学习笔记

    Hbase为Hadoop生态的存储引擎,为大数据系统提供了在线存储能力,为海量数据存储提供了很好的支撑。hbase系统架构也非常值得学习和借鉴,值得学习研究。

    HBase自学笔记

    **HBase** 是一个建立在 **Hadoop** 之上的非关系型数据库系统。它提供了实时数据读写能力,并且能够支持低延迟操作,这与传统的高延迟的Hadoop有所不同。作为分布式、可扩展的大数据存储解决方案,HBase被设计用于...

    hadoop1.0\2.0学习笔记及

    本学习笔记涵盖了Hadoop 1.0和2.0两个主要版本,旨在帮助读者全面理解Hadoop的核心概念、架构以及实际操作。 在Hadoop 1.0中,核心组件主要包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一种...

    HBase完整学习笔记

    【HBase完整学习笔记】 HBase是一款开源的分布式NoSQL数据库,主要设计用于处理海量结构化数据,尤其适合大数据分析场景。它与传统的关系型数据库(如Oracle、MySQL)不同,采用列式存储方式,这使得HBase在压缩...

    3.Hadoop学习笔记.pdf

    Hadoop的生态系统还包括Hive、HBase、Pig、Zookeeper等多种工具和组件,用于数据分析、实时处理、任务调度和协调。 Hadoop安装通常包括下载、配置和启动集群的NameNode和DataNode。NameNode是HDFS的主节点,负责...

    docker之hbase集群学习笔记

    docker版hbase集群构建,从docker安装开始,再到docker中下载并运行hadoop镜像,之后下载并配置hbase。最后对整个流程做总结,遇到的问题,以及一些docker基础知识和hbase教程。

    Hadoop学习笔记.pdf

    首先,Hadoop的分布式文件系统(HDFS)是其核心组件之一,它具有高吞吐量的数据访问能力,非常适合大规模数据集的存储和处理。HDFS的设计是基于这样的理念:硬件故障是常态,因此它通过数据复制机制来实现高可靠性。...

    Hadoop,SPRK开发学习笔记

    本文将围绕“Hadoop,SPARK开发学习笔记”这一主题,深入探讨Hadoop的组件HDFS(分布式文件系统)、HBase(分布式数据库)和Hive(数据仓库工具),以及Spark的核心特性与开发实践。 首先,Hadoop是Apache基金会的...

Global site tag (gtag.js) - Google Analytics