【实验楼】HBASE教程——学习笔记

本文首发在我的个人博客:https://jlice.top/p/7czq8/。欢迎大家前去参观,么么哒~

HBase环境搭建与配置

HBase解压即可使用。

【注意】伪分布模式下,HBase需要与Hadoop版本匹配,可以看HBase的lib里Hadoop的jar文件版本。

需要配置hbase-site.xml,可以使用自带的Zookeeper。

单机模式配置如下:

<configuration>
    <property>
        <name>hbase.rootdirname>
        <value>file:///tmp/hbase-${user.name}/hbasevalue>
    property>
configuration>

伪分布模式配置如下:

<configuration>
    <property>
        <name>hbase.rootdirname>
        <value>hdfs://localhost:9000/hbasevalue>
    property>
    <property>
        <name>hbase.cluster.distributedname>
        <value>truevalue>
    property>
configuration>

配置hbase-env.sh,需要设置JAVA_HOMEHBASE_MANAGES_ZK。使用自带的Zookeeper时,HBASE_MANAGES_ZK=true

启动HBase:start-hbase.sh,停止HBase:stop-hbase.sh

注意:若是伪分布模式,需要先启动HDFS。停止时先停HBase。

进入HBase Shell:hbase shell

HBase基本操作

显示帮助:help

显示状态:status

退出HBase:quit

创建新表:create '表名', '列族名'

列举表信息:listlist '表名'

获取表描述:describe '表名'

删除表:删除表之前,先disable表,再drop

检查表是否存在:exists '表名'

禁用表:disable '表名',启用表:enable '表名'

向表中插入数据:put '表名', '行', '列族:列', '值'

一次性扫描全表数据:scan '表名'

获取一行数据:get '表名', '行'

HBase应用程序开发

org.apache.hadoop.hbase包下常用类:

  • HBaseConfiguration HBase配置

  • HColumnDescriptor 列族描述符,指定列族相关信息

  • HTableDescriptor 表名描述符,指定表相关信息

org.apache.hadoop.hbase.client包下常用类:

  • HBaseAdmin HBase管理(判断表是否存在、创建表等)

  • HTable 表

  • Get 获取数据

  • Put 添加数据

  • Scan

  • Result

  • ResultScanner

创建表:

HBaseAdmin admin = new HBaseAdmin(conf);
HTableDescriptor tabDesc = new HTableDescriptor(tableName);
tabDesc.addFamily(new HColumnDescriptor(columnFamily));
admin.createTable(tabDesc);
Table tab = new HTable(conf, tableName);
Put p = new Put(Bytes.toBytes(row));
p.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(data));
tab.put(p);

获取、扫描数据:

HTable tab = new HTable(conf, tableName);
// get
Get g = new Get(Bytes.toBytes(row));
Result r= tab.get(g);
// scan
Scan s = new Scan();
ResultScanner rs = tab.getScanner(s);
for(Result rst:rs){
    ; // do something
}

删除表:

if(admin.tableExists(tableName)){
    admin.disableTable(tableName);
    admin.deleteTable(tableName);
}

你可能感兴趣的:(博客)