慕课网《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生态系统中的定位
2-3 架构体系
HBase架构体系
2-4 设计模型
HBase表结构模型
HBase表结构模型举例说明
Hbase数据模型
Hbase数据模型举例说明
HBase列簇
- 一张表列簇不会超过5个
- 每个列簇中的列数没有限制
- 列只有插入数据后存在
- 列在列簇中是有序的
HBase Region
HBase表与关系型数据库表结构对比
对比 | HBase | 关系型数据库 |
---|---|---|
表列 | 列动态增加 | 列不会动态增加 |
数据 | 数据自动切分 | 数据不会自动切分 |
并发 | 高并发读取 | 高并发读写较差 |
查询 | 不支持条件查询 | 支持复杂查询 |
第三章:安装部署
3-1 Hadoop安装
1.下载地址
- zookeeper-3.4.5-cdh5.3.0.tar.gz
- hadoop-2.5.0-cdh5.3.0.tar.gz
- hbase-0.98.6-cdh5.3.0.tar.gz
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/r2.5.2/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation
http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/core-default.xml
https://www.jb51.net/article/115258.htm
进入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文件
参考地址
在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
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操作)