5,Hbase的安装部署

1安装部署hbase

1:安装zookeeper

(1)将压缩包拷贝进主目录。

5,Hbase的安装部署

打开终端

将压缩包解压安装

5,Hbase的安装部署

但未输入安装路径,默认安装在当前目录。

mv命令将zookeeper 改名,再用mv命令将zookeeper转移到/usr/local

cd命令进入/usr/local。Ls查看当前目录。

用chown命令赋予hadoop用户使用当前目录的权限。

但是因为当前用户是guan所以后面发生权限不够的问题。文件夹无法建立。

5,Hbase的安装部署

重新赋予guan用户使用当前目录的权限。

5,Hbase的安装部署

(2)将Zookeeper的安装路径添加到系统的环境变量之中

使用vim ~/bashrc打开根目录配置文件。

5,Hbase的安装部署

然后,在该文件的尾部添加如下信息,并通过source命令来使配置生效。

5,Hbase的安装部署

(3)配置Zookeeper存储数据的目录和日志输出目录

通过如下命令在Zookeeper安装文件下创建一个data和log文件

5,Hbase的安装部署

然后,通过如下命令将Zookeeper存储数据的目录修改为创建的data文件

5,Hbase的安装部署

在文件中将存储数据的目录修改为创建的data文件

5,Hbase的安装部署

接着使用如下命令打开zkEnv.sh文件,然后修改其中的输出日志的路径配置

5,Hbase的安装部署

在在打开的zkEnv.sh文件中,找到ZOO_LOG_DIR的设置,然后修改为如下

5,Hbase的安装部署

然后用zkServer.sh start 启动Zookeeper

5,Hbase的安装部署

2:安装hbase

(1)进入压缩包所在文件夹,解压并安装

sudo  tar  –zxvf  hbase-1.5.0-bin.tar.gz  -C  /usr/local

5,Hbase的安装部署

(2)将Hbase的安装路径添加到系统的环境变量之中,如图最后两行。

5,Hbase的安装部署

           用source保存后,输入如下的命令来查看Hbase的版本,并验证Hbase是否安装成功

5,Hbase的安装部署

3,伪分布式环境配置

(1)进入hbase的conf目录,修改hbase-env.sh文件

5,Hbase的安装部署
通过vim命令打开hbase-env.sh文件,在该文件的顶部添加如下信息

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_161//JAVA的安装路径

export HBASE_MANAGES_ZK=false//这个是为了配置不使用自带的zookeeper

2)进入hbaseconf目录,修改hbase-site.xml文件

通过vim命令打开hbase-site.xml文件,然后在该文件的<configuration>标签内添加如下信息。

5,Hbase的安装部署

Localhost:9000/hbase Hbase数据在HDFS中的存储位置:根目录下hbase文件夹

3)将Zookeeper的一个配置文件复制到Hbase配置文件所在的目录

5,Hbase的安装部署

(4)启动hbase

在Linux终端输入start-hbase.sh命令来启动Hbase,在启动之前我们必须首先启动HDFS和Zookeeper

5,Hbase的安装部署

在Hbase 和Zookeeper启动的情况下,Hbase 无法正常启动。

经过检查

是java安装路径和版本不正确。

重新配置hbase-env.sh文件,将改文件顶部的JAVA_HOME换为本机java的安装路径

5,Hbase的安装部署

修改过后,重新启动hbase成功

5,Hbase的安装部署

安装完成。

(二)、总结hbase的基本原理

  1. Hbase 是Bigtable的开源实现,是Hadoop的重要分支,是建立在HDFS之上的一个分布式、面向列的开源数据库系统;具有高可靠性、高性能、列存储、可伸缩、实时读写等重要特征。
  2. Hbase与传统数据库的区别。

传统关系型数据库系统:

关系数据库系统:支持关系模型的数据库系统,通过集合、代数等数学运算来对数据库中的数据进行处理。

关系模型:是指用二维表的形式表示实体和实体间联系的数据模型。

SQL语言:常见关系型数据库系统均使用SQL用于创建和删除数据库、增加修改更新和删除数据库中的数据

供结构化查询语言,非过程化编程语言

使得具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口

缺点:可扩展性差,无法较好的支持海量数据的存储

难以支持海量数据的高并发读写访问。

Hbase数据库系统:

一种NoSQL数据库系统

不支持SQL查询语言,也缺乏了传统关系型数据库所具有的特性和遵循的机制

借鉴了谷歌的BigTable的设计,并通过Java语言进行开发,是BigTable的开源实现

提供面向列、可伸缩的分布式存储

运行于HDFS之上,是Hadoop的重要组件

解决了HDFS只适合于批量访问不能随机访问的问题。

相同点:同传统的关系型数据库系统一样,利用表格来组织数据

每个表由行和列组成

不同点(1)Hbase表增加了列族和时间戳的概念

(2) Hbase允许某个列族或者某个列族下的某个列的数据为空

(3) Hbase使用了命名空间这一概念:

传统数据库系统使用数据库来组织不同的表,以及实现权限管理

Hbase使用命名空间来对表进行管理

Hbase中建立表之前,可以先建立命名空间,并指定所建立的表所属的命名空间。

如果在建表时不指定命名空间,则将表放入默认的default命名空间

3,Hbase数据模型的两种视图:

逻辑视图

反映数据逻辑上的组织结构

逻辑结构便于人们理解

物理视图

反映数据的存储结构

逻辑上:Hbase的表是一个稀疏表,允许表中的单元格为空。

Hbase按行键将一个大表的数据划分为不同的范围

一个范围内的同一个列族的数据存储到一个文件中

不同列族的文件是分离的。,

4,Hbase是如何将数据存储的?

1,首先,Hbase将表分割成不同Region进行分布式存储

Hbase将表中的所有行按照行键进行字典排序

按行分割为多个Region

每个Region都保存着一个表的一段连续的数据,并记录了它的起始行键和结束行键

Hbase将它们分发给集群中的不同节点进行存储和管理

Region是Hbase数据存储和管理的基本单元

每个Region只会存在于一个节点中,而每个节点则可能会放置多个Region。

2,其次,Hbase建立三级映射关系来定位Region

Meta表:以“表名+开始行键+ RegionID”作为行键,每一行记录了一个Region的信息以及Region所在的节点的地址等信息,建立起Region与集群节点的对应关系

Root表:建立META表的Region与它所在的节点之间的对应关系

3,最后,基于META表与root表的数据访问

首先,获取ROOT表的位置,从ROOT表中获取对应的META表的Region以及该Region所在节点

然后,从相应节点*问META表,获取要访问的Region所在的节点

在获得Region所在的节点位置之后,用户通过客户端直接与数据所在的节点连接来读写数据,整个过程不需要连接集群的主节点,减少了主节点的负载压力。

5,Hbase的运行架构

Zookeeper

在分布式环境下提供高性能和高可靠的协调服务的程序组件

Hmaster

分配Region到集群的各个HRegionServer

监控各个HRegionServer的状况,调整Region的分布实现负载均衡,发现失效的HRegionServer并重新分配其上的Region

维护ROOT表和META表,记录各个HRegionServer上Region的变化信息

管理用户对建表和对表进行变更的操作

HRegionServer

分布式集群中单个计算节点上负责管理本地存储的Region的进程

HRegionServer与Zookeeper交互,定期上传节点的负载状况,比如节点的内存使用状态、在线状态的Region等信息。

当用户定位到HRegionServer所管理的Region时,HRegionServer负责与用户客户端连接来提供对数据的读写访问。

(1)数据在节点的写入和存储

在进行存储时,每个Region由一个或者多个Store组成,每个Store存储该Region一个列族的所有键值对数据

每个Strore又由一个memStore和0至多个StoreFile组成

memStore是内存缓存中的文件,StoreFile是磁盘中的文件

用户写入数据时数据首先会放在缓存的memStore中,当memStore满了以后会写入磁盘形成一个StoreFile进行持久化。

(2)Storefile的压缩合并

当StoreFile增长到一定数量之后,StoreFile会通过压缩合并到一起形成一个StoreFile

在合并的过程中,会进行版本合并和数据删除操作

这也说明:Hbase的更新和删除操作都是在后期StoreFile的合并中实现和完成的

Hbase将随机写的操作转化成顺序写操作,以支持对数据的随机修改!

(3)Region的分裂

StoreFile的不断合并最终会形成一个非常大的StoreFile。

当StoreFile大到一定程度便会触发其所在的Region的分裂成两个新的Region,新的Region会被HMaster重新分配到相应的节点上,而老的Region就会下线。

(4)写操作的日志记录

每个HRegionServer有一个日志记录对象Hlog

一个HRegionServer下的所有Region共享一个Hlog对象

写入memStore的数据必须首先写入到Hlog的文件

Hlog文件会定期的更新,删除已经写入磁盘的数据

(5)数据的查找与读取

每个HRegionServer存在一个缓存区域供数据的读取操作

当客户端定位到HRegionServer下的某个Region并发起数据读取请求时,HRegionServer首先根据行键查询读缓存中是否有需要读取的数据,如果没有则进入磁盘到的Hfile中进行查找

当Hbase读取磁盘上某一条数据时,Hbase会将整个Hfile的一个数据块读到缓存中

这里Hfile的数据块和HDFS的数据块是两个独立的概念。HFile块的默认大小是64KB。用户还可以在列族层面对Hfile数据块的大小进行设置。

上一篇:[LeetCode] 1257. Smallest Common Region


下一篇:ELK---特殊用法(kibana画图,地图)