Hbase入门

Hbase入门

[TOC]

Hbase是干嘛的?

  • HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。其主要作用是通过分布式的集群系统进行海量数据的存储与处理。其主要的优点有:
    1. 线性扩展,随着数据量增多可以通过节点扩展进行支撑
    2. 数据存在hdfs上面,备份机制健全
    3. 通过zookeeper协调查找数据,读取速度快。
    4. 良好的数据备份与恢复机制,数据安全性由保障。

Hbase的安装与配置

  1. 下载安装包并解压,然后修改环境变量

  2. 修改hbase-env.sh配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    # The java implementation to use. Java 1.7+ required.
    export JAVA_HOME=/usr/local/soft/jdk1.8.0_144
    # Extra Java CLASSPATH elements. Optional.
    export HBASE_CLASSPATH=/usr/local/soft/hbase/conf
    export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
    # 告诉habse用我们自己配置的zookeeper
    export HBASE_MANAGES_ZK=false
  3. 修改hbase-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <configuration>
    <property>
    <name>hbase.master</name>
    <value>mini1:60000</value>
    </property>
    <property>
    <name>hbase.master.maxclockskew</name>
    <value>180000</value>
    </property>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://mini1:9000/hbase</value>
    </property>
    <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
    <description>Property from ZooKeeper's config zoo.cfg.</description>
    </property>
    <!--是否采用分布式策略-->
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <!--zookeeper所在位置-->
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>mini5,mini6,mini7</value>
    </property>
    <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/hbase/tmp/zookeeper</value>
    </property>
    </configuration>
  4. 启动hbase

    1
    start-hbase.sh
  5. 打开shell交互式命令行

    1
    2
    hbase shell
    # web管理打开地址 http://mini1:16030

常见错误

  1. 发现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet,一般是hdfs正处于安全模式,可以直接关闭(感觉不太好):

    1
    hadoop dfsadmin -safemode leave

基本数据模型

  1. Row Key

    key是用来检索记录的主键,,通过row key来定位数据。是最重要的数据模型,当插入数据的时候,数据会按照row key进行排序,插入到合适的位置。

  2. Columns Family

    HBASE表中的每个列,都归属于某个列族。列族是表的schema的一部 分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如 courses:history,courses:math都属于courses 这个列族。

  3. Cell

    由{row key, columnFamily, version} 唯一确定的单元。cell中 的数据是没有类型的,全部是字节码形式存贮。

  4. TimeStamp

    HBASE中通过rowkey和columns确定的为一个存贮单元称为cell。每个 cell都保存 着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64位整型。时间戳可以由HBASE(在数据写入时自动 )赋值。

Hbase的常用命令

名称 命令表达式
创建表 create ‘表名’, ‘列族名1’,’列族名2’,’列族名N’
查看所有表 list
描述表 describe ‘表名’
判断表存在 exists ’表名‘
判断是否禁用启用表 is_enabled ‘表名’ is_disabled ‘表名’
添加记录 put ‘表名’, ‘rowKey’, ‘列族 :列‘ , ‘值’
查看记录rowkey下的所有数据 get ‘表名’ , ‘rowKey’
查看表中的记录总数 count ‘表名’
获取某个列族 get ‘表名’,’rowkey’,’列族’
获取某个列族的某个列 get ‘表名’,’rowkey’,’列族:列’
删除记录 delete **‘表名’ ,‘行名’ , ‘列族:列’
删除整行 deleteall ‘**表名’,’rowkey’
删除一张表 先要屏蔽该表,才能对该表进行删除 第一步 disable ‘表名’ ,第二步 drop ‘表名’
清空表 truncate ‘表名’
查看所有记录 scan “表名”