文章内容根据尚硅谷大数据技术hbase学习持续更新,,,
Hbase 的简介
HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。
ps:与mysql的区别就是有很多不同的列族,不同的列族可以放在不同的文件夹里面,就是将一张表通过列族的方式存储在很多文件中
Hbase的结构
hbase 的逻辑结构
region是表中的一张横向切片
row key ;行键,按照字典序进行排序
store:hbase存储的文件;
hbase 的物理结构
timestamp时间戳,操作的时间,就是对表进行操作的时间(可以自己设定但是不能比原来的时间小),不同的版本可以根据timestamp来进行区分;
type:就是对于表中的操作,put delete 是操作标注
hbase 的数据模型
- Name space:相当于数据库的概念,每个命名空间都会有很多表,hbase本身自带两个,hbase和default,hbase中存放的就是hbase中的内置表,default是用户默认的使用空间
row(行): HBase 表中的每行数据都由一个 yRowKey 和多个 Column(列)组成,数据是按照 RowKey的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要;- region:类似于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往 HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。
- cell:由{rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。cell 中的数据是没有类型的,全部是字节码形式存贮。(表中的单元格)
hbase 入门安装
- 环境准备 :centos虚拟机,hadoop, zookepper
- 下载安装包:
链接:https://pan.baidu.com/s/1h6fwtw7g3Pqr1V7tD4WtMQ
提取码:zyhk - 上传到虚拟机的目录中(tools这个可以自定义的)将其解压
[root@niit02 tools]# tar -zvxf hbase-2.0.3-bin.tar.gz -C /training/
- 配置环境变量
[root@niit02 ~]# vi ~/.bash_profile
export HBASE_HOME=/training/hbase-2.0.3
export PATH=$PATH:$HBASE_HOME/bin
保存退出
[root@niit02 ~]# source ~/.bash_profile
环境变量生效
- 修改hbase-env.sh内容
cd /training/hbase-2.0.3/conf/
vi hbase-env.sh
export JAVA_HOME=/training/jdk1.8.0_171 #jdk的位置
export HBASE_CLASSPATH=/training/zookeeper-3.4.5/conf
export HBASE_MANAGES_ZK=ture #连接外部zookeeper
保存退出
- 修改hbase-site.sh
cd /training/hbase-2.0.3/conf/
vi hbase-site.xml
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
# l ·true表示是分布式 2﹑false表示单机模式,Hbase和Zookeeper会运行在同一个JVM里面。
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://niit02:9000/hbase</value>
#macxiao为服务器主机名.配置hbase存储在hadoop的hdfs的位置
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>niit02</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
#使用我们电脑的文件系统,作为数据存储○
<value>false</value>
</property>
<property>
<name>hbase.master.ipc.address</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.regionserver.ipc.address</name>
<value>0.0.0.0</value>
</property>
保存退出
- 启动测试(先运行Hadoop,zookeeper)
[root@niit02 hbase-2.0.3]# ./bin/start-hbase.sh
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/training/hbase-2.0.3/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/training/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
进入shell环境
[root@niit02 hbase-2.0.3]# ./bin/hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/training/hbase-2.0.3/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/training/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
启动成功:
hbase(main):001:0> list
TABLE
stu
stu1info1
t1
3 row(s)
Took 1.3497 seconds
=> ["stu", "stu1info1", "t1"]
- 输入niit02:16010进行验证出现如下界面安装成功