Hadoop学习之HBase

一、HBase简介

先看一张图
Hadoop的生态圈有猪(Pig)、蜂窝(Hive)、动物园管理者(Zookeeper)……

《Hadoop学习之HBase》

先来说说HBase和Hive的区别

  • HBase与Hive都是架构在Hadoop之上的。都是用Hadoop作为底层存储的。
  • Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作
    的缺陷的项目 。
  • 想象你在操作RMDB数据库,如果是全表扫描,就用Hive+Hadoop,如果是索引访问,就用HBase+Hadoop 。
  • Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。
  • Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。
  • Hive借用Hadoop的MapReduce来完成一些Hive中的命令的执行
  • HBase是物理表,不是逻辑表,提供一个超大的内存Hash表,搜索引擎通过它来存储索引,方便查询操作。
  • HBase是列存储。
  • HDFS作为底层存储,HDFS是存放文件的系统,而HBase负责组织文件。
  • Hive需要用到HDFS存储文件,需要用到MapReduce计算框架。

好吧,不扯那么多,本篇的主角是HBase

HBase: 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

  • HBase能做什么?
    准实时查询、海量数据的储存(上百亿行,上百万列)

  • HBase应用场景:
    交通、金融、电商、移动通信

  • HBase的特点:
    容量大、面向列、多版本、稀疏性(空列不占空间)、扩展性(依赖HDFS,通过增加Hadoop节点来增加容量)、高可靠性、高性能、不支持条件查询。

先来了解一下HBase架构体系:

《Hadoop学习之HBase》

HBase 中首先会有列簇(Column Family)的概念,列簇一般用于将相关的列(Column)组合起来。在物理上 HBase 其实是按列簇存储的,只是按照 Row-key 将相关列簇中的列关联起来。物理上的数据排布大致可以如下图所示:

《Hadoop学习之HBase》

二、HBase安装

需要分别在master、slave1、slave2上安装Zookeeper和HBase

Zookeeper安装
从HBase架构体系图中可以看出HBase依赖于外部服务Zookeeper,所以要先安装Zookeeper,下载地址,本文使用的是3.4.5的版本。

1.把tar包解压到/usr/下(解压到那个目录下看个人喜好)
2.把环境变量添加至/etc/profile

export ZK_HOME=/usr/zookeeper
export PATH=$PATH:$ZK_HOME/bin

3.把$ZK_HOME/conf/下的zoo_sample.cfg改名为zoo.cfg并修改

#需要创建该目录
dataDir=/usr/zookeeper/tmp

#添加以下内容,master、slave1、slave2是安装Hadoop的主机名,也可以是具体IP
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888

4.在/usr/zookeeper/tmp/下创建myid文件,并添加内容0
按照zoo.cfg配置
master上的/usr/zookeeper/tmp/myid内容为0
slave1上的/usr/zookeeper/tmp/myid内容为1
slave2上的/usr/zookeeper/tmp/myid内容为2

5.启动与停止
启动命令zkServer.sh start,可以用jps命令看到QuorumPeerMain
停止命令zkServer.sh stop

HBase安装
下载地址
1.把tar包解压到/usr/下(解压到那个目录下看个人喜好)
2.把环境变量添加至/etc/profile

export HBASE_HOME=/usr/hbase
export PATH=$PATH:$HBASE_HOME/bin

修改$HBASE_HOME/conf/下的配置文件:

3.修改hbase-env.sh

export JAVA_HOME=/usr/java/jdk/
#不使用HBase自带的zookeeper
export HBASE_MANAGES_ZK=false

4.修改hbase-site.xml(具体参数看情况修改)

<property>
        <name>hbase.tmp.dir</name>
        <value>/usr/hbase/tmp</value>
</property>

<property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
</property>

<property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
</property>

<property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
</property>

<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>

5.修改regionservers,添加以下内容(也可以只加slave1、slave2,大家随意)

master
slave1
slave2

6.启动与停止

先启动Hadoop、Zookeeper再启动HBase

start-all.sh
zkServer.sh start
start-hbase.sh

可以使用命令hbase shell进入shell终端
要停止HBase使用命令stop-hbase.sh

三、HBase Shell操作

1.创建表(表名为test,列簇为info)

create 'test','info'

2.添加内容

put 'test','001','info:name','Tom'
put 'test','001','info:age','20'
put 'test','002','info:name','King'
put 'test','002','info:age','22'
put 'test','003','info:name','Rose'
put 'test','003','info:age','18'

001表示行号(row),info:name表示info列簇中的name列,值为Tom
……
3.显示存在的表

list

4.查看表内容

scan 'test'

5.显示表结构信息

describe 'test'

6.统计行数

count  'test'

7.获取数据

get 'test','001'
get 'test','001','info'
get 'test','001','info:name'

分别是获取:
行号为“001”的数据
行号为“001”的中列簇“info”的数据
行号为“001”的中列簇“info”中列“name”的数据
8.清空表

truncate 'test'

9.删除表

disable 'test'
drop 'test'

disable能禁用‘test’表,只有处于disable状态的表才能删除表
可以通过is_disable命令查看表是否处于disable状态
enable 'test'能启用表

更多更详细的操作请看大佬的博客http://blog.csdn.net/scutshuxue/article/details/6988348

END

参考:

Hbase总结(三)-Hbase与Hive的区别与联系http://blog.csdn.net/lifuxiangcaohui/article/details/39889653

HBase入门https://www.imooc.com/video/15592

    原文作者:一个三要不起
    原文地址: https://www.jianshu.com/p/b6cd91b161f8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞