课程目标html
HBase能作什么java
HBase在实际业务场景中的应用node
HBase是什么shell
HBase是一个分布式,版本化,面向列的数据库,构建在 Apache Hadoop和 Apache ZooKeeper之上。
HBase的特色数据库
容量大apache
HBase单表能够有百亿行、百万列,数据矩阵横向和纵向两个维度所支持的数据量级都很是具备弹性
面向列vim
HBase是面向列的存储和权限控制,并支持独立检索。列式存储,其数据在表中是按照某列存储的,这样在查询只须要少数几个字段的时候,能大大减小读取的数据量
多版本windows
HBase每个列的数据存储有多个Version
稀疏性缓存
为空的列并不占用存储空间,表能够设计的很是稀疏
扩展性安全
底层依赖于HDFS
高可靠性
WAL机制保证了数据写入时不会因集群异常而致使写入数据丢失;Replication机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。并且HBase底层使用HDFS,HDFS自己也有备份
高性能
底层的LSM数据结构和Rowkey有序排列等架构上的独特设计,使用HBase具备很是高的写入性能。region切分、主键索引和缓存机制使用HBase在海量数据下具有必定的随机读取性能,该性能针对Rowkey的查询可以达到毫秒级别
如何选择合适HBase版本
HBase在Hadoop2.x生态系统中的定位
HBase架构体系
HBase表结构模型
HBase表结构模型举例说明
Hbase数据模型
Hbase数据模型举例说明
HBase列簇
HBase Region
HBase表与关系型数据库表结构对比
对比 | HBase | 关系型数据库 |
---|---|---|
表列 | 列动态增长 | 列不会动态增长 |
数据 | 数据自动切分 | 数据不会自动切分 |
并发 | 高并发读取 | 高并发读写较差 |
查询 | 不支持条件查询 | 支持复杂查询 |
zookeeper-3.4.5-cdh5.3.0.tar.gz
连接: https://pan.baidu.com/s/1ZGCq... 密码:v57b
hadoop-2.5.0-cdh5.3.0.tar.gz
连接: https://pan.baidu.com/s/1vOKp... 密码:hz4a
hbase-0.98.6-cdh5.3.0.tar.gz
连接: https://pan.baidu.com/s/1tojE... 密码:yimh
Hadoop2.x分布式安装配置
解压安装包
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
export JAVA_HOME=${JAVA_HOME}
其中${JAVA_HOME}
为echo ${JAVA_HOME}
的值
参考地址
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>
参考地址
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>
将hostname
配置进去便可
zccoder.com
回到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/
进行验证
解压安装包
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
在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
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
分别启动三台zk服务
bin/zkServer.sh start
解压安装包
tar -zxf hbase-0.98.6-cdh5.3.0.tar.gz
进入HBase根目录
cd hbase-0.98.6-cdh5.3.0
(可选)删除docs目录
rm -rf docs/
进入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
在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>
将hostname
配置进去便可
zccoder.com
HBase启动命令
启动HBase
bin/start-hbase.sh
访问http://zccoder.com:60010/
进行验证HMaster进程
访问http://zccoder.com:60030/
进行验证RegionServer进程
HBase表操做命令介绍并演示
进入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'
HBase表数据操做命令介绍并演示
进入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'
HBase入门总结
架构体系: