学习HBase第二天
**1.**HBase的基础结构
1.1、HMaster
功能:
- 监控RegionServer
- 处理RegionServer故障转移
- 处理元数据的变更
- 处理region的分配或移除
- 在空闲时间进行数据的负载均衡
- 通过Zookeeper发布自己的位置给客户端
1.2、RegionServer
功能:
- 负责存储HBase的实际数据
- 处理分配给它的Region
- 刷新缓存到HDFS
- 维护HLog
- 执行压缩
- 负责处理Region分片
组件:
- Write-Ahead logs
HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 - HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。 - Store
HFile存储在Store中,一个Store对应HBase表中的一个列族。 - MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对。 - Region
Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。
注:一个store对应一个列族,一个region对应多个store
2、HBase的集群环境搭建
注意事项:HBase强依赖zookeeper和hadoop,安装HBase之前一定要保证zookeeper和hadoop启动成功,且服务正常运行
2.1zookeeper环境搭建
2.1.1、下载,解压
下载地址为:
http://archive.cloudera.com/cdh5/cdh/5/
我们这里也下载对应版本的CDH5.14.0这个版本的zookeeper的压缩包即可
7.2、修改配置文件
第一步:创建zk数据存放目录
mkdir -p /home/hadoop/apps/zookeeper-3.4.5-cdh5.14.0/zkdatas
第二步:修改zk配置文件
cd /export/servers/zookeeper-3.4.5-cdh5.14.0/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
第三步:创建myid文件并写入内容
echo 1 > /export/servers/zookeeper-3.4.5-cdh5.14.0/zkdatas/myid
注:三台虚拟机中都需要写,数字依次是2,3
第四步:将安装包分发到其他机器
cd /home/hadoop/apps/
scp -r zookeeper-3.4.5-cdh5.14.0/ node02:
P
W
D
s
c
p
−
r
z
o
o
k
e
e
p
e
r
−
3.4.5
−
c
d
h
5.14.0
/
n
o
d
e
03
:
PWD scp -r zookeeper-3.4.5-cdh5.14.0/ node03:
PWDscp−rzookeeper−3.4.5−cdh5.14.0/node03:PWD
之后在其他机器重复第三步
第五步:启动zk服务
cd /home/hadoop/apps/zookeeper-3.4.5-cdh5.14.0
bin/zkServer.sh start
注:三台服务器都需要启动zookeeper
2.2:HBase的集群环境搭建
- 第一步:下载对应的HBase的安装包
http://archive.cloudera.com/cdh5/cdh/5/
HBase对应的版本下载地址如下
http://archive.cloudera.com/cdh5/cdh/5/hbase-1.2.0-cdh5.14.0.tar.gz - 第二步:压缩包上传并解压
cd /home/hadoop/apps/
tar -zxvf hbase-1.2.0-cdh5.14.0-bin.tar.gz - 第三步:修改配置文件
cd /home/hadoop/apps/hbase-1.2.0-cdh5.14.0/conf
修改第一个配置文件hbase-env.sh
vim hbase-env.sh
修改第二个配置文件hbase-site.xml
vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop1: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>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/apps/zookeeper-3.4.5-cdh5.14.0/zkdatas</value>
</property>
</configuration>
修改第三个配置文件regionservers
vim regionservers
创建back-masters配置文件,实现HMaster的高可用
cd /home/hadoop/apps/hbase-1.2.0-cdh5.14.0/conf
vim backup-masters
- 第四步:安装包分发到其他机器
cd /home/hadoop/apps/
scp -r hbase-1.2.0-cdh5.14.0/ hadoop2:$PWD
scp -r hbase-1.2.0-cdh5.14.0/ hadoop3:$PWD
- 第五步:三台机器创建软连接
因为hbase需要读取hadoop的core-site.xml以及hdfs-site.xml当中的配置文件信息,所以我们三台机器都要执行以下命令创建软连接
ln -s /home/hadoop/apps/hadoop-2.8.0/etc/hadoop/core-site.xml /home/hadoop/apps/hbase-1.3.1/conf/core-site.xml
ln -s /home/hadoop/apps/hadoop-2.8.0/etc/hadoop/hdfs-site.xml /home/hadoop/apps/hbase-1.3.1/conf/hdfs-site.xml - 第六步:三台机器添加HBASE_HOME的环境变量
vim /etc/profile
- 第七步:HBase集群启动
cd /export/servers/hbase-1.2.0-cdh5.14.0
bin/start-hbase.sh
注:三台服务器都需要启动
我们也可以执行以下命令单节点进行启动
启动HMaster命令
bin/hbase-daemon.sh start master
启动HRegionServer命令
bin/hbase-daemon.sh start regionserver - 第八步:页面访问
http://hadoop1:60010/master-status