hbase 数据库 的安装与简单应用

1,概念

  hbase 是一个可以建立在 hdfs 上的分布式 nosql 数据库。

  hbase 有三种安装方式:单机,伪分布式,完全分布式。

  单机 hbase:hbase 数据库的数据文件存在单一的一台设备上,使用的是该设备的文件系统。

  伪分布式 hbase:hbase 数据库的数据文件存在一台设备构成的 hdfs 上,数据库分主从结构。

  完全分布式 hbase:hbase 数据库的数据文件存在多台设备构成的 hdfs 上,数据库分主从结构。

2,术语

  1)hregion:指的是 hbase  的数据库存储是以区快(region)存储的

  2)hregionservers:hbase 数据库从机。存具体数据。

  3)hmaster:hbase 主机。存储元数据。

  4)行(row)与行键(rowkey):

        hbase 中一条完整的数据即一行,由一个唯一的行键+多个列键值构成。

        行键:每一行都有一个内置的主键,用于区别其他行数据。

  5)列簇(columnfamily):

        hbase 中列簇指的是一个大列,这个大的列可以有0个(列簇即列)或多个(column)列构成。

        新建表时只需要指定列簇,不需要指定列。

  6)列键(column):

        hbase 中第一行数据都是由很多列键构成的,其中一个列一般都有一个或多个列键。

        每一个列键值都由行键,单元格值,时间戳,版本 构成。

  7)单元格(cell 或者 列键值):

3,hbase安装

 1)获取 hbase 安装包并解压到 node1 的 /home/hduser 下

 2)配置 hbase 核心配置文件(/conf/hbase-site.xml)
hbase.rootdir hdfs://node1:9000/hbase hbase.cluster.distributed true hbase.master node1:60000 hbase.zookeeper.quorum node1,node2,node3
 3)配置 hbase 环境配置文件(/conf/hbase-env.sh)

       修改 JAVA_HOME 配置:export JAVA_HOME=/usr/java/jdk1.8.0_171

       增加 HADOOP_HOME 配置:export HADOOP_HOME=/home/hduser/hadoop

       增加 HBASE_HOME 配置:export HBASE_HOME=/home/hduser/hbase-1.2.0

       增加启用 hbase 内置zookeeper 配置:export HBASE_MANAGERS_ZK=true

export JAVA_HOME=/usr/java/jdk1.8.0_171
export HADOOP_HOME=/home/hduser/hadoop
export HBASE_HOME=/home/hduser/hbase-1.2.0
export HBASE_MANAGERS_ZK=true
4)配置从机网络用户名(/conf/regionservers)

       修改从机网络用户名内容如下:

node2
node3
5)拷贝 node1 的 hbase 的主目录到 node2,node3

scp -r /home/hduser/hbase-1.2.0/ hduser@node2:/home/hduser/
scp -r /home/hduser/hbase-1.2.0/ hduser@node3:/home/hduser/
4,hbase 的启动与关闭

 1)启动(启动前必须保证 hdfs 已经启动):

       $>hbase 主目录下/bin/start-hbase.sh

  2)关闭:

       $>hbase 主目录下/bin/stop-hbase.sh

  3)浏览器测试:访问:http://node1:16010

  4)命令测试(登陆进入数据库):$>hbase 主目录下/bin/hbase shell

5,hbase sql 使用

  命令都在 hbase 主目录下/bin/下,可以配置 bin 到环境变量 PATH 下

  1)查所有表:$hbase>list

  2)新建表,列,列簇:$hbase>create 表名,'列簇1,、、、,'列簇n'

        样例:新建播放记录表 music

        $hbase>create 'music','song','singer','playdate'

  3)插入数据:$hbase>put 表名,'主键值','列名','单元格值'

         样例:插入播放记录

         $hbase>put  music,'1001','song','music1'

         $hbase>put  music,'1001','singer','singer1'

         $hbase>put  music,'1001','playdate','2019-11-1'

  4)扫描一张表:$hbase>scan 表名

         样例:查询 music 表所有记录

         $hbase>scan music

  5)查询一行数据(不筛选):$hbase>get 表名   行主键名

        样例:只查看 1001 的数据

        $hbase>get music '1001'

  6)查询一行中某些单元格的数据(筛选):$hbase>get 表名  行主键名  {CLOUMNS=>[列1,列2]}

  7)删除数据(删除一行中一部分):$hbase>delete 表名  行主键名  {CLOUMNS=>[列1,列2]}

  8)删除一行:$hbase>deleteall  表名  行主键名

  9)删除表:

       $hbase>disable 表名      //更改表结构,需要先禁用表

       $hbase>drop 表名        //删除表

  10)删除表:禁用后启用表:$hbase>enbale 表名

  11)查看表结构:$hbase>desc 表名

6,eclipse 开发 hbase(java 操作 hbase)

  6.1,术语

          1)HBaseConfiguration:是Configuration的子类,主要用于 hbase 的配置文件管理

          2)Admin:是hbase的系统管理对象,主要用于查询所有表,新增表,修改表,删除表等DDL操作

          3)TableName:是一个表类型。

                TableName.valueOf(Bytes.toBytes("字符串表名"))

  6.2,环境搭建

          1)新建 mapreduce 项目 hbasedemo

          2)增加配置文件 core-site.xml,hbase-site.xml

          3)增加 jar 包

                hbase-client.jar

                hbase-server.jar

                hbase-common.jar

                hbase-protocol.jar

                htrace-core.jar

                netty-all.jar

   6.3,操作

          6.3.1,DDL操作(admin)

                 1)DDL加载配置文件,获取连接,获取数据库管理对象(admin)

                 2)查询所有表

          6.3.2,DML操作(connection)

                 1)

                 2)

          6.3.3,hbase 与 java 类型的转换

                 1)字符串转字节数组

                       byte[]  b = Bytes.toBytes("字符串");

                 2)数字转字节数组

                       byte[]  b = Bytes.toBytes(数字);

                 3)字节数组转字符串

                       String  str = Bytes.toString(字节数组);

                 4)字符数组转数字

                       int num = Bytes.toInt(字节数组);

你可能感兴趣的:(hbase 数据库 的安装与简单应用)