HBase的安装

一,Hbase简介
HBase是一个开源的非关系型分布式数据库,实现的编程语言为Java。它是的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务。因此,它可以容错地存储海量稀疏的数据。

Hbase应用
HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。

为什么需要HBase?

Hadoop可以很好地解决大规模数据的离线批量处理问题,但是,受限于 HadoopMapReduce编程框架的高延迟数据处理机制,使得Hadoop无法满足大规模数据实时处理应用的需求。

HDFS面向批量访问模式,不是随机访问模式。

传统的通用关系型数据库无法应对在数据规模剧增时导致的系统扩展性和性能问题(分库分表也不能很好解决)。

传统关系数据库在数据结构变化时一般需要停机维护;空列浪费存储空间。

  1. Hbase是hadoop领域的的数据库
  2. Hbase是面向列存储的列式数据库,
    1. 行式数据库优缺点
      1. 数据在表中的位置空间是确定的,指针在访问只要知道首地址就可以高效获取其他数据
      2. 但在常用的可能只是所有列中的部分列的数据,可是行式数据库会自动查询所有的列,只是在客户端进行数据的过滤,会浪费大量的带宽和空间
    2. 列式数据库的优缺点
      1. 一张不规则的表(人物画像)每行属性有大量的null
      2. 类似于交错数组,只使用在特定的领域
  3. 逻辑模型
    1. 表 近似于行式数据库的表
    2. 行  近似于行式数据库的行
    3. 列 是不能脱离列簇独立存在的,在行式数据库中没有
    4. 行健 近似于行式数据库的主键
    5. 时间戳 类似于timestamp 天然在,不需要用户自己创建
  4. 物理模型

Hbase数据在进行存储时,是按照行健存储。会自己比较行健大小后进行存储

    1. 列簇 是单独存储一系列列的文件
  1. 存储模型
    1. Region
      1. Table在行的方向上分割为多个Region,一个region由[startkey,endkey]表示,每个Region分散在不同的RegionServer中

HBase的安装_第1张图片

二,安装(前置条件已安装了Hadoop)

1,首先需要安装zookeeper,

        1) 将安装包放在Linux下,然后解压

tar -zxf zookeeper-3.4.5-cdh5.14.2.tar.gz 

        2) 将其移至soft下并改名

mv zookeeper-3.4.5-cdh5.14.2 soft/zk345

        3)进入zk345/conf中复制此文件并改名,并修改内容

cp zoo_sample.cfg zoo.cfg
#修改
vim zoo.cfg 

dataDir=/opt/soft/zk345/data
#如果是hadoop集群要添加多个,并对应修改端口号(这里是伪分布式Hadoop)
server.1=192.168.88.180:2888:3888

        4)添加环境变量

vim /etc/profile
export ZOOKEEPER_HOME=/opt/soft/zk345
export PATH=$PATH:$ZOOKEEPER_HOME/bin

        5)激活环境变量

source /etc/profile

        6)启动zookeeper(停止可用zkServer.sh stop)

zkServer.sh start

        7)jps查看一下如果有QuorumPeerMain进程就说明启动成功了

2,安装hbase

        1) 解压

tar -zxf hbase-1.2.0-cdh5.14.2.tar.gz 

        2)移至soft下并改名

mv hbase-1.2.0-cdh5.14.2 soft/hbase120

        3)进入soft/hbase120/conf/下,并修改

vim hbase-env.sh
export JAVA_HOME=/opt/soft/jdk1.8
#使用外部zookeeper
export HBASE_MANAGES_ZK=false
vim hbase-site.xml 


         >hbase.rootdir
         hdfs://192.168.88.180:9000/hbase



         hbase.cluster.distributed
         true



         hbase.zookeeper.property.dataDir
         /opt/soft/hbase120/data

        4)添加环境变量

vim /etc/profile
export HBASE_HOME=/opt/soft/hbase120
export PATH=$PATH:$HBASE_HOME/bin

        5)激活环境变量

source /etc/profile

        6)启动hbase(启动hbase之前一定要先启动hadoop和zookeeper)

start-hbase.sh

        7)jps查看一下,有下面两个进程则启动成功

        8)进入hbase数据库操作界面

hbase shell

        9)停止hbase

stop-hbase.sh

三,hbase简单使用

1,创建名空间 类似于创建数据库 (后面名可随便起)

create_namespace 'mydemo'

2,删除名空间

drop_namespace 'mydemo'

3,当然创建之后,如果使用的是xshell可以重开一个界面,用下面命令进行查看

#进入zookeeper

zkCli.sh

查看,进入相应的目录下就可以查看到你所创建的名空间或表名,但是不会看到数据
ls /

4,创建表(base是列簇名)

create 'mydemo:userinfos','base'

5,删除表

drop 'mydemo:userinfos'

6,插入数据(1就是它的rowkey,所以下面两个数据则为在一行里,一次只能put一条数据)

put 'mydemo:userinfos','1','base:username','zhangsan'
put 'mydemo:userinfos','1','base:password','123123'

7,查看全部数据

scan 'mydemo:userinfos'

8,查看更多信息

describe 'mydemo:userinfos'

9,设值version(库的version默认是1,当默认的情况下,是不会保留以前时间戳的数据的)

alter 'mydemo:userinfos',{NAME=>'username',VERSIONS=>3}

10,获得历史版本信息(version设置为几,就会看到几条历史信息)

get 'mydemo:userinfos','1',{COLUMN=>'base:username',VERSIONS=>3}

11,获取表中rowkey为2的所有信息

scan 'mydemo:uerinfos',{FILTER=>"RowFilter(=,'binary:2')"}

12,获取名username含有zhang的人的信息

scan 'mydemo:userinfos',{FILTER=>"SingleColumnValueFilter('base','username',=,'substring:zhang')"}

你可能感兴趣的:(zookeeper,hbase)