简介

Hadoop database 的简称,也就是基于Hadoop面向列的分布式数据表数据库,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为

为查询而生,通过阻止节点内所有机器的内存,提供超大的内存Hash表


HBase与Hive的区别

Hive数据仓库,能够通过SQL来计算和处理HDFS上的结构化数据,适用于离线的批量数据计算

Hbase数据库,主要用于查询,用于海量明细数据的随机查询

Hive是高延迟、结构化和面向分析的,HBase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟的。


两者之间的关系

通过ETL工具将数据源抽取到HDFS存储;
通过Hive清洗、处理和计算原始数据,当然目前来说用spark更加方便;
清洗处理后的结果,如果是面向海量数据随机查询场景的可存入HBase;
数据应用从HBase查询数据;

下载安装

下载地址:http://archive.apache.org/dist/hbase/

我这里个人的
链接:https://pan.baidu.com/s/1t9N5jnqYqQ-eGDyHag6gkA
提取码:98hj


解压

tar -zxvf hbase-1.2.0-cdh5.15.1.tar.gz

hadoop 慢查询 hadoop数据库通过什么查询_数据库


进入到hbase的conf目录下修改hbase-env.sh文件

hadoop 慢查询 hadoop数据库通过什么查询_数据库_02

export JAVA_HOME=/root/app/jdk1.8.0_231
export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.15.1
export HBASE_HOME=/root/app/hbase-1.2.0-cdh5.15.1

export HBASE_MANAGERS_ZK=true

注意对应自己的目录哦


修改hbase-site.xml文件

hadoop 慢查询 hadoop数据库通过什么查询_hbase_03

<!-- hbase存放数据目录 -->
  <property>
    <name>hbase.rootdir</name>
    <value>file:///data/soft/hbase/hbase</value>
  </property>

  <!-- ZooKeeper数据文件路径 -->
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/data/soft/hbase/zookeeper</value>
  </property>

  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
    <description>
      Controls whether HBase will check for stream capabilities (hflush/hsync).

      Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
      with the 'file://' scheme, but be mindful of the NOTE below.

      WARNING: Setting this to false blinds you to potential data loss and
      inconsistent system state in the event of process and/or node failures. If
      HBase is complaining of an inability to use hsync or hflush it's most
      likely not a false positive.
    </description>
  </property>

先启动HDFS,再启动hbase

hbase的bin目录下的./start-hbase.sh 命令

hadoop 慢查询 hadoop数据库通过什么查询_大数据_04


使用 jps 命令能查看到HMaster 即是成功了

hadoop 慢查询 hadoop数据库通过什么查询_hadoop 慢查询_05


或者浏览器访问ip加:60010也可以查看是否成功

hadoop 慢查询 hadoop数据库通过什么查询_大数据_06


HBase的使用

再使用 ./hbase shell 命令即可进入编写数据

hadoop 慢查询 hadoop数据库通过什么查询_大数据_07


HBase里面的数据存储格式与数据库不同,大概如下图

hadoop 慢查询 hadoop数据库通过什么查询_hadoop_08


HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(row family)

RowKey

记录的主键,和数据库一样

Column Family

列族:表中每一个列都属于列族,有点类似于姓,列名都是属于列族作为前缀,显示形式是 列族名:列名。创建表时必须指明


创建表
语法为 create ‘表名’,‘列族名’

create 'student','info'

hadoop 慢查询 hadoop数据库通过什么查询_hbase_09


查看表

语法为

describe ‘表名’

describe 'student'

hadoop 慢查询 hadoop数据库通过什么查询_hadoop_10

插入数据
语法为
put ‘表名’,‘id(也就是行键)’,‘列族(也就是你一开始创建表后面跟的值):列名’,‘值’

put 'student','1','info:name','aa'

hadoop 慢查询 hadoop数据库通过什么查询_大数据_11

其实可以将表看作一个类,然后表后面的就是对象;插件数据时对象跟的就是属性,然后设置属性的值(这样个人觉得容易理解)

下面我们来查看一下刚刚插入的表数据值

scan 'student'

hadoop 慢查询 hadoop数据库通过什么查询_hadoop_12


更新数据,也就是修改数据

语法为

put ‘表名’,‘行键值’,‘列族名:列名’,‘修改后的值’

put 'student','1','info:name','bb'

修改后再查看表

scan 'student'

hadoop 慢查询 hadoop数据库通过什么查询_数据库_13

删除数据
语法为
delete ‘表名’,‘行键值’

delete 'student','1'

hadoop 慢查询 hadoop数据库通过什么查询_大数据_14

再就是统计,我们先给student添加两条数据

put 'student','1','info:name','aa'
put 'student','2','info:name','bb'

再使用count

count 'student'

hadoop 慢查询 hadoop数据库通过什么查询_hadoop_15


可以看到统计出了两条数据删除表,在删除表之前需要设置表为disable,要不就会报错

hadoop 慢查询 hadoop数据库通过什么查询_大数据_16

设置disable

disable 'student'

删除表

drop 'student'

hadoop 慢查询 hadoop数据库通过什么查询_hadoop 慢查询_17