HBASE的简介和安装步骤

一、HBASE介绍

1.1HBASE的起源
Hbase的原型是Goole的三遍论文之一的BigTable论文,受到该论文思想的启发,目前作为hadoop的子项目来开发维护,用于支持结构化的数据存储
官网:

http://hbase.apache.org

1.2HBASE的角色
1.2.1 HMaster
功能:1.监控RegionServer
2.处理RegionServer故障转移
3.处理元数据的变更
4.处理region的分配或移除
5.在空闲时间进行数据的负载均衡
6.通过zookeeper发布自己的位置给客户端
1.2.2 RegionServer
功能:1.负责存储Hbase的实际数据
2.处理分配给他的Region
3.刷新缓存到hdfs
4.维护Hlog
5.执行压缩
6.负责处理region分片
组件:1)Write-Ahead logs
HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中, 然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。
2)HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。
3)Store
HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。
4)MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL
之后,RegsionServer 会在内存中存储键值对。
5)Region
Hbase 表的分片,HBase 表会根据RowKey 值被切分成不同的region 存储在RegionServer 中,在一个 RegionServer 中可以有多个不同的 region
1.3Hbase的架构
Hbase一种是作为存储的分布式文件系统,另一种是作为数据处理模型的MR框架。因为日常开发人员比较熟练的是结构化的数据进行处理。但是在hdfs直接存储的数据往往不具备结构化,所以催生出了Hbase在hdfs上的操作。
HBase 内置有 Zookeeper,但一般我们会有其他的 Zookeeper 集群来监管 master 和regionserver,Zookeeper 通过选举,保证任何时候,集群中只有一个活跃的HMaster,HMaster与 HRegionServer 启动时会向 ZooKeeper 注册,存储所有 HRegion 的寻址入口,实时监控
HRegionserver 的上线和下线信息。并实时通知给 HMaster,存储 HBase 的 schema 和 table 元数据,默认情况下,HBase 管理 ZooKeeper 实例,Zookeeper 的引入使得 HMaster 不再是单点故障。一般情况下会启动两个 HMaster,非 Active 的 HMaster 会定期的和 Active HMaster通信以获取其最新状态,从而保证它是实时更新的,因而如果启动了多个 HMaster 反而增加了 Active HMaster 的负担。
一个 RegionServer 可以包含多个 HRegion,每个 RegionServer 维护一个 HLog,和多个 HFiles以及其对应的 MemStore。RegionServer 运行于 DataNode 上,数量可以与 DatNode 数量一致。
二、Hbase的部署和使用
2.1.1 在安装hbase之前要保证Zookeeper集群的正常部署和使用:bin/zkServer.sh start
2.1.2hadoop的正常部署:

$ ~/modules/hadoop-2.7.2/sbin/start-dfs.sh

$ ~/modules/hadoop-2.7.2/sbin/start-yarn.sh

2.1.3 解压hbase

tar -zxf ~/softwares/installations/hbase-1.3.1-bin.tar.gz -C ~/modules/

2.1.4hbase的配置文件
hbase-env.sh修改内容:

export JAVA_HOME=/home/admin/modules/jdk1.8.0_121

export HBASE_MANAGES_ZK=false

hbase-site.xml修改内容:

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.136.129:9000/hbase</value>
</property>

<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

<!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>

<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.136.135:2181,192.168.136.136:2181,192.168.136.137:2181</value>
</property>

<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper-3.4.5/zkData</value>
</property>
</configuration>

regionservers中添加虚拟机的主机名:

linux01
linux02 
linux03

2.1.5hbase需要依赖的jar包,因为hbase需要依赖hadoop,所以替换hbase的lib目录下的hadoop的jar包,以解决兼容问题:
1.删除原有的jar:

$ rm -rf /home/admin/modules/hbase-1.3.1/lib/hadoop-*

$ rm -rf /home/admin/modules/hbase-1.3.1/lib/zookeeper-3.4.6.jar

2)拷贝新 jar,涉及的 jar 有:

hadoop-annotations-2.7.2.jar hadoop-auth-2.7.2.jar hadoop-client-2.7.2.jar hadoop-common-2.7.2.jar hadoop-hdfs-2.7.2.jar
hadoop-mapreduce-client-app-2.7.2.jar hadoop-mapreduce-client-common-2.7.2.jar hadoop-mapreduce-client-core-2.7.2.jar hadoop-mapreduce-client-hs-2.7.2.jar
hadoop-mapreduce-client-hs-plugins-2.7.2.jar hadoop-mapreduce-client-jobclient-2.7.2.jar hadoop-mapreduce-client-jobclient-2.7.2-tests.jar hadoop-mapreduce-client-shuffle-2.7.2.jar hadoop-yarn-api-2.7.2.jar
hadoop-yarn-applications-distributedshell-2.7.2.jar

hadoop-yarn-applications-unmanaged-am-launcher-2.7.2.jar hadoop-yarn-client-2.7.2.jar
hadoop-yarn-common-2.7.2.jar

hadoop-yarn-server-applicationhistoryservice-2.7.2.jar hadoop-yarn-server-common-2.7.2.jar
hadoop-yarn-server-nodemanager-2.7.2.jar hadoop-yarn-server-resourcemanager-2.7.2.jar
hadoop-yarn-server-tests-2.7.2.jar
hadoop-yarn-server-web-proxy-2.7.2.jar
zookeeper-3.4.5.jar

这些jar包的位置:

$ find /home/admin/modules/hadoop-2.7.2/ -name hadoop-annotations*

2.1.6hbase软连接hadoop配置:

$ ln -s ~/modules/hadoop-2.7.2/etc/hadoop/core-site.xml

~/modules/hbase-1.3.1/conf/core-site.xml

$ ln -s ~/modules/hadoop-2.7.2/etc/hadoop/hdfs-site.xml

~/modules/hbase-1.3.1/conf/hdfs-site.xml

2.1.7将配置好的hbase同步到其他集群:xsync hbase(注:xsync是本人自己写的同步脚本,如果没有。就要使用scp远程复制命令)

$ scp -r /home/admin/modules/hbase-1.3.1/ linux02:/home/admin/modules/

2.1.8hbase服务的启动,启动之前要先保证集群时间是同步的,如果集群时间不同步, 会导致 regionserver 无法启动,抛出ClockOutOfSyncException 异常。

$ bin/start-hbase.sh
$ bin/stop-hbase.sh

2.1.9查看hbase页面

http://linux01:16010(hbase1.0以下的版本使用60010)

若有错误,欢迎评论指出!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值