hbase完全分布式集群部署

1.简介HBase是一个分布式的、面向列的开源数据库 , 它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库 。 另一个不同的是HBase基于列的而不是基于行的模式 。 HBase使用和 BigTable非常相同的数据模型 。 用户存储数据行在一个表里 。 一个数据行拥有一个可选择的键和任意数量的列 , 一个或多个列组成一个ColumnFamily , 一个Fmaily下的列位于一个HFile中 , 易于缓存数据 。 表是疏松的存储的 , 因此用户可以给行定义各种不同的列 。 在HBase中数据按主键排序 , 同时表按主键划分为多个Region 。
在分布式的生产环境中 , HBase 需要运行在 HDFS 之上 , 以 HDFS 作为其基础的存储设施 。 HBase 上层提供了访问的数据的 Java API 层 , 供应用访问存储在 HBase 的数据 。 在 HBase 的集群中主要由 Master 和 Region Server 组成 , 以及 Zookeeper , 具体模块如下图所示:
hbase完全分布式集群部署文章插图
简单介绍一下 HBase 中相关模块的作用:
MasterHBase Master用于协调多个Region Server , 侦测各个RegionServer之间的状态 , 并平衡RegionServer之间的负载 。 HBaseMaster还有一个职责就是负责分配Region给RegionServer 。 HBase允许多个Master节点共存 , 但是这需要Zookeeper的帮助 。 不过当多个Master节点共存时 , 只有一个Master是提供服务的 , 其他的Master节点处于待命的状态 。 当正在工作的Master节点宕机时 , 其他的Master则会接管HBase的集群 。
Region Server对于一个RegionServer而言 , 其包括了多个Region 。 RegionServer的作用只是管理表格 , 以及实现读写操作 。 Client直接连接RegionServer , 并通信获取HBase中的数据 。 对于Region而言 , 则是真实存放HBase数据的地方 , 也就说Region是HBase可用性和分布式的基本单位 。 如果当一个表格很大 , 并由多个CF组成时 , 那么表的数据将存放在多个Region之间 , 并且在每个Region中会关联多个存储的单元(Store) 。
Zookeeper对于 HBase 而言 , Zookeeper的作用是至关重要的 。 首先Zookeeper是作为HBase Master的HA解决方案 。 也就是说 , 是Zookeeper保证了至少有一个HBase Master 处于运行状态 。 并且Zookeeper负责Region和Region Server的注册 。 其实Zookeeper发展到目前为止 , 已经成为了分布式大数据框架中容错性的标准框架 。 不光是HBase , 几乎所有的分布式大数据相关的开源框架 , 都依赖于Zookeeper实现HA 。
HBase集群建立在hadoop集群基础之上 , 所以在搭建HBase集群之前需要把Hadoop集群搭建起来 , 并且要考虑二者的兼容性 。
hbase完全分布式集群部署文章插图
2.环境准备(1)各服务器其修改主机名 , 添加hosts文件 , 关闭防火墙
[root@c7001 ~]#cat >> /etc/hosts<< EOF192.168.16.135c7001192.168.16.80c7002192.168.16.95c7003192.168.16.97c7004192.168.16.101c7005EOF(2)c7001配置ssh免密登陆 , 用于启动集群
ssh-keygen-t rsa sh-copy-id-i ~/.ssh/id_rsa.pubc7001ssh-copy-id-i ~/.ssh/id_rsa.pubc7002 ssh-copy-id-i ~/.ssh/id_rsa.pubc7003ssh-copy-id-i ~/.ssh/id_rsa.pubc7004ssh-copy-id-i ~/.ssh/id_rsa.pubc7005(3) 各服务器配置jdk1.7+
[root@c7001 ~]# tar zxf jdk-8u171-linux-x64.tar.gz -C/opt/[root@c7001 opt]# mv jdk1.8.0_171/jdk1.8[root@c7001 opt]# vim /etc/profileexport JAVA_HOME=/opt/jdk1.8export PATH=$PATH:$JAVA_HOME/bin[root@c7001 ~] source/etc/profile[root@c7001 opt]# java -versionjava version "1.8.0_1713.安装hbase
c7003 c7004 c7005[root@c7003 opt]# tar zxf /usr/src/hbase-1.3.0-bin.tar.gz-C /opt/修改配置文件
[root@c7003 hbase-1.3.0]# vim conf/hbase-env.sh #修改jdk变量JAVA_HOME=export JAVA_HOME=/opt/jdk1.8.0_121#关闭HBase自带的Zookeeper,使用Zookeeper集群:exportHBASE_MANAGES_ZK=false编辑hbase-site.xml, 添加配置文件:
hbase.rootdirhdfs://c7001:9000/hbasehbase.cluster.distributedtruehbase.zookeeper.quorumc7003,c7004,c7005hbase.zookeeper.property.dataDir/opt/hbase-1.3.0/tmp/zk/dataviregionservers #加入如下内容:c7004c7005把Hbase复制到其他机器
[root@c7003 opt]$ scp -r hbase-1.3.0 root@c7004:/opt/[root@c7003 opt]$ scp -r hbase-1.3.0 root@c7005:/opt/启动集群
[root@c7003 hbase-1.3.0]$ bin/start-hbase.sh web访问 ip:16010
hbase完全分布式集群部署文章插图