1

慕课网《HBase入门》学习总结

  • 时间:2018年06月11日星期一
  • 说明:本文部分内容均来自慕课网。@慕课网:https://www.imooc.com
  • 教学源码:无
  • 学习源码:无

第一章:课程介绍

1-1 课程介绍

课程目标

  • HBase的应用场景及特点
  • HBase的概念与定位
  • HBase架构体系与设计模型
  • HBase的安装部署
  • HBase shell使用

第二章:概念介绍

2-1 应用场景

HBase能做什么

  • 海量数据存储
  • 准实时查询

HBase在实际业务场景中的应用

  • 交通:交通工具的GPS信息、城市路口摄像头的拍照信息
  • 金融:交易信息(取款信息、消费信息、贷款信息、还款信息、信用卡信息等)
  • 电商:商家交易信息、物流信息、浏览日志信息等
  • 移动:电话信息(短信信息、通话记录等)

2-2 概念特点

HBase是什么

HBase是一个分布式,版本化,面向列的数据库,构建在 Apache Hadoop和 Apache ZooKeeper之上。

HBase的特点

  • 容量大

    HBase单表可以有百亿行、百万列,数据矩阵横向和纵向两个维度所支持的数据量级都非常具有弹性
  • 面向列

    HBase是面向列的存储和权限控制,并支持独立检索。列式存储,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段的时候,能大大减少读取的数据量
  • 多版本

    HBase每一个列的数据存储有多个Version
  • 稀疏性

    为空的列并不占用存储空间,表可以设计的非常稀疏
  • 扩展性

    底层依赖于HDFS
  • 高可靠性

    WAL机制保证了数据写入时不会因集群异常而导致写入数据丢失;Replication机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。而且HBase底层使用HDFS,HDFS本身也有备份
  • 高性能

    底层的LSM数据结构和Rowkey有序排列等架构上的独特设计,使用HBase具有非常高的写入性能。region切分、主键索引和缓存机制使用HBase在海量数据下具备一定的随机读取性能,该性能针对Rowkey的查询能够达到毫秒级别

如何选择合适HBase版本

HBase在Hadoop2.x生态系统中的定位

image

2-3 架构体系

HBase架构体系

image

2-4 设计模型

HBase表结构模型

image

HBase表结构模型举例说明

image

Hbase数据模型

image

Hbase数据模型举例说明

image

HBase列簇

  • 一张表列簇不会超过5个
  • 每个列簇中的列数没有限制
  • 列只有插入数据后存在
  • 列在列簇中是有序的

HBase Region

image

HBase表与关系型数据库表结构对比

对比 HBase 关系型数据库
表列 列动态增加 列不会动态增加
数据 数据自动切分 数据不会自动切分
并发 高并发读取 高并发读写较差
查询 不支持条件查询 支持复杂查询

第三章:安装部署

3-1 Hadoop安装

1.下载地址

Hadoop2.x分布式安装配置

  • 解压Hadoop-2.5.0并安装
  • 配置hadoop-env.sh

2.解压安装

解压安装包

tar -zxf hadoop-2.5.0-cdh5.3.0.tar.gz

进入/share目录

cd hadoop-2.5.0-cdh5.3.0/share

(可选)删除doc文档

rm -rf doc/

进入/etc/hadoop目录

cd hadoop-2.5.0-cdh5.3.0/etc/hadoop

(可选)删除windows下执行脚本

rm -rf *.cmd

3.修改hadoop-env.sh文件

export JAVA_HOME=${JAVA_HOME}

其中${JAVA_HOME}echo ${JAVA_HOME}的值

4.修改core-site.xml文件

参考地址

http://hadoop.apache.org/docs...
http://hadoop.apache.org/docs...
https://www.jb51.net/article/...

进入hadoop根目录

cd hadoop-2.5.0-cdh5.3.0

创建临时数据目录

mkdir -p data/tmp

进入临时数据目录

mkdir -p data/tmp

使用pwd查看路径

/home/zc/studio/hadoop-2.5.0-cdh5.3.0/data/tmp

在configuration节点中添加以下代码

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://zccoder.com:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/zc/studio/hadoop-2.5.0-cdh5.3.0/data/tmp</value>
    </property>

5.修改hdfs-site.xml文件

参考地址

http://hadoop.apache.org/docs...

在configuration节点中添加以下代码

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
</property>

6.修改slaves文件

hostname配置进去即可

zccoder.com

7.服务启动

回到hadoop根目录

cd hadoop-2.5.0-cdh5.3.0

系统进行format

bin/hdfs namenode -format

启动namenode

sbin/hadoop-daemon.sh start namenode

启动datanode

sbin/hadoop-daemon.sh start datanode

(注意)手动退出Hadoop的安全模式

bin/hadoop dfsadmin -safemode leave

访问http://zccoder.com:50070/进行验证

3-2 Zookeeper安装

0.解压安装包

解压安装包

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

进入Zookeeper根目录

cd zookeeper-3.4.5-cdh5.3.0/

进入conf目录

cd conf/

复制示例配置文件zoo_sample.cfg为zoo.cfg

cp zoo_sample.cfg zoo.cfg

1.修改zoo.cfg文件

在zk根目录下创建数据存放目录

mkdir zkData

进入zkData目录,使用pwd命令获得全路径

cd zkData
pwd
/home/zc/studio/zookeeper-3.4.5-cdh5.3.0/zkData

修改zoo.cfg文件的dataDir属性

dataDir=/home/zc/studio/zookeeper-3.4.5-cdh5.3.0/zkData

2.集群配置

server.1=zk1.zccoder.com:2888:3888
server.2=zk2.zccoder.com:2888:3888
server.3=zk3.zccoder.com:2888:3888

在zkData目录下创建myid文件

touch myid

编辑myid文件,添加服务器编号,这里写入1

vim myid

然后,分别在另外两台zk上创建myid文件,并分别写入2和3

3.服务启动

分别启动三台zk服务

bin/zkServer.sh start

3-3 HBase安装

0.解压安装

解压安装包

tar -zxf hbase-0.98.6-cdh5.3.0.tar.gz

进入HBase根目录

cd hbase-0.98.6-cdh5.3.0

(可选)删除docs目录

rm -rf docs/

1.修改hbase-env.sh文件

进入conf目录

cd conf/

取消注释export JAVA_HOME=/usr/java/jdk1.6.0/并修改为JDK路径

export JAVA_HOME=/studio/jdk1.8.0_11/

取消注释export HBASE_MANAGES_ZK=true并修改为false使用部署好的zk

export HBASE_MANAGES_ZK=false

2.修改hbase-site.xml文件

在configuration节点下添加以下代码

  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/zc/studio/hbase-0.98.6-cdh5.3.0/data/tmp</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://zccoder.com:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>zccoder.com</value>
  </property>

3.修改regionservers文件

hostname配置进去即可

zccoder.com

4.服务启动

HBase启动命令

  • hbase-daemon.sh
  • hbase-daemons.sh
  • start-hbase.sh
  • stop-hbase.sh

启动HBase

bin/start-hbase.sh

访问http://zccoder.com:60010/进行验证HMaster进程

访问http://zccoder.com:60030/进行验证RegionServer进程

第四章:操作命令

4-1 HBase表结构

HBase表操作命令介绍并演示

  • Create:创建表
  • Describe:查看表结构说明
  • is_enabled:查看表是否可用
  • Drop:删除表
  • Enable:使表可用(激活表)
  • is_disabled:查看表是否不可用
  • Disable:使表不可用(屏蔽表)
  • List:查看库里面所有表

进入HBase shell

bin/hbase shell

创建test表,包含info列簇

create 'test','info'

查看所有表

list

使用put增加一条数据

put 'test','0001','info:username','henry'

查看test表的数据

scan 'test'

查看test表的相关信息

describe 'test'

禁用test表

disable 'test'

查看test表是否可用

is_enabled 'test'

删除test表

drop 'test'

4-2 HBase表数据

HBase表数据操作命令介绍并演示

  • Count:求和
  • Put:新增一行或新增一列
  • Delete:删除某一列的数据
  • Scan:全表扫描,查全表数据
  • get:获取某一行或某一列的数据
  • truncate:组合命令,相当于对表进行初始化(先删除表,然后重新创建表)

进入HBase shell

bin/hbase shell

新增年龄信息

put 'test','0001','info:age','30'

使用count对表的行数求和

count 'test'

获取表某一列的数据

get 'test','0001','info:username'

删除某一行的数据

delete 'test','0001','info:age'

初始化表

truncate 'test'

第五章:课程总结

5-1 课程总结

HBase入门总结

  • 概念定义:是一个分布式的数据库
  • 主要作用:海量数据的存储和海量数据的准实时查询
  • 应用场景:交通、金融、电商、移动
  • 框架特点:容量大、列式存储、多版本、易扩展、稀疏性、高性能、高可靠
  • 架构体系:

    • HBase主要进程(master和regionserver)
    • HBase依赖外部服务(zookeeper和hadoop)
  • 设计模型:表结构与表数据
  • 安装部署:jdk、hadoop、zookeeper、hbase
  • 操作命令:HBase shell命令(DDL操作、DML操作)

妙手空空
1.3k 声望368 粉丝

博观而约取,厚积而薄发