HBase安装配置与基础使用

HBase安装与配置

1. 从Apache官网上下载适合的HBase版本,然后对其进行解压。

2. 配置hbase-env.sh文件: 

    export JAVA_HOME=/root/apps/jdk1.7.0_67    # 我在系统环境变量中已经配置了虚拟机的路径,所以我觉得这里可以不用配置了

    export HBASE_MANAGES_ZK=false               # 不使用hbase自带的zk集群

3. 配置hbase-site.xml文件: 

    <configuration>

    <!-- 指定hbase在HDFS上存储的路径 -->

            <property>

                    <name>hbase.rootdir</name>

                    <value>hdfs://hdp01:9000/hbase</value>

            </property>

    <!-- 指定hbase是分布式的 -->

            <property>

                    <name>hbase.cluster.distributed</name>

                    <value>true</value>

            </property>

    <!-- 指定zk的地址,多个用“,”分割 -->

            <property>

                    <name>hbase.zookeeper.quorum</name>

                    <value>hdp01:2181,hdp02:2181,hdp03:2181</value>

            </property>

    </configuration>

4. 配置regionservers文件:

    hdp01

    hdp02

    hdp03

    # 与hadoop集群中配置的salve相似,通过该配置文件,hbase集群启动命令可以启动所有节点上的hbase软件,另外master进程也可以通过其来感知各个hbase。

5. hbase软件相关命令:

bin/start-hbase.sh    # 启动整个hbase集群,并且在该命令的输入节点上会启动一个master进程

bin/stop-hbase.sh    # 关闭hbase集群

HBase shell命令行与API使用

命令行的使用

1. 进入hbase shell命令行:bin/hbase shell

2. 查看hbase中的表列表:list

3. 建表:create "tabelname","column1",'column2'    # 在表tabelname中创建列族column1和column2

4. 删除整个表:disable "tabelname"  或者 drop "tabelname"

3. 插入数据:put "tabelname", "001", "column1:username", "zhangsan"    # 在表tabelname中的column1列族中插入第001行数据,key为username, value为zhangsan

4. 查询整个表中的数据:scan "tabelname"

    查询表中的单行数据:get "tabelname", ”001“

5. 删除表中某行的一个kv数据:delete "tabelname", "001", "column1:username"

    删除整行数据:deleteall "tabelname", "001"

客户端API的使用

1、 创建一个连接

Connection conn = ConnectionFactory.createConnection(conf);    # conf对象中有hbase的配置文件

2、拿到一个DDL操作器:表管理器admin

Admin admin = conn.getAdmin();

3、创建一个表:

HTableDescriptor htd= new HTableDescriptor(TableName.valueOf("usertable"));

4、创建一个列族:

HColumnDescriptor hcd = new HColumnDescriptor("base_info");

5、将创建的列族存入表中:

htd.addFamily(hcd);

6、用ddl操作器对象admin 来建表

admin.createTable(htd);    # 上面只是创建了一个表对象,需要在这里将对象存入HBase数据库中

7、停用表和删除表

admin.disableTable(TableName.valueOf("usertabel"));

admin.deleteTable(TableName.valueOf("usertabel"));

8、修改表定义,例如在原来的表结构上添加一个新的列族

admin.modifyTable(TableName.valueOf("usertabel"), htd);

1、获取表对象:

Table user = conn.getTable(TableName.valueOf("usertabel"));

2、插入数据(修改数据):

Put put = new Put(Bytes.toBytes("001"));

put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("张三"));

user.put(put);    # 将put对象存入user表中

# 如果列族中某个字段已经存在了,put效果是修改,否则是插入

3、删除数据:

Delete del = new Delete(Bytes.toBytes("001"));

user.delete(dels);

4、查询对象:

Get get = new Get("002".getBytes());

Result res = user.get(get);    # 从user表中获取第002行的数据结果

byte[] value = result.getValue("base_info".getBytes(), "age".getBytes());

System.out.println(new String(value));

疑惑

1. HBase存储表之前需要创建数据库吗?为什么?

会有命名空间。命名空间是对表的逻辑分组,不同的命名空间类似于关系型数据库中的不同的Database数据库。利用命名空间,在多租户场景下可做到更好的资源和数据隔离。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值