大数据技术之HBase原理与实战归纳分享-上( 三 )


基础架构

大数据技术之HBase原理与实战归纳分享-上

文章插图
组成角色包含如下几个部分:
  • Master:实现类为 HMaster,负责监控集群中所有的 RegionServer 实例 。
    • LoadBalancer 负载均衡器:周期性监控 region 分布在 regionServer 上面是否均衡,由参数 hbase.balancer.period 控 制周期时间,默认 5 分钟 。
    • CatalogJanitor 元数据管理器:定期检查和清理 hbase:meta 中的数据 。meta 表内容在进阶介绍 。
    • MasterProcWAL master 预写日志处理器:把 master 需要执行的任务记录到预写日志 WAL 中,如果 master 宕机,让 backupMaster 读取日志继续干 。
    • 管理元数据表格 hbase:meta,接收用户对表格创建修改删除的命令并执行
    • 监控 region 是否需要进行负载均衡,故障转移和 region 的拆分 。
    • 主要作用如下:
    • 管理元数据表格 hbase:meta,接收用户对表格创建修改删除的命令并执行 。
    • 监控 region 是否需要进行负载均衡,故障转移和 region 的拆分 。
    • 通过启动多个后台线程监控实现上述功能:
  • Region Server:Region Server 实现类为 HRegionServer,主要作用如下:
    • 负责数据 cell 的处理,例如写入数据 put,查询数据 get 等 。
    • 【大数据技术之HBase原理与实战归纳分享-上】拆分合并 region 的实际执行者,有 master 监控,有 regionServer 执行 。
  • Zookeeper:HBase 通过 Zookeeper 来做 master 的高可用、记录 RegionServer 的部署信息、并且存储 有 meta 表的位置信息 。HBase 对于数据的读写操作时直接访问 Zookeeper 的,在 2.3 版本推出 Master Registry 模式,客户端可以直接访问 master 。使用此功能,会加大对 master 的压力,减轻对 Zookeeper 的压力 。
  • HDFS:HDFS 为 Hbase 提供最终的底层数据存储服务,同时为 HBase 提供高容错的支持 。
安装前置条件
  • Zookeeper(使用前面文章已部署集群)
  • HDFS(使用前面文章已部署集群)
部署# 下载最新版本HBasewget --no-check-certificate https://dlcdn.apache.org/hbase/2.5.0/hbase-2.5.0-bin.tar.gz# 解压tar -xvf hbase-2.5.0-bin.tar.gz# 进入目录cd hbase-2.5.0# 配置环境变量vim /etc/profileexport HBASE_HOME=/home/commons/hbase-2.5.0export PATH=$HBASE_HOME/bin:$PATH# 将配置文件分发到另外两台节点上scp /etc/profile hadoop2:/etc/scp /etc/profile hadoop3:/etc/# 在三台上执行环境变量生成命令source /etc/profile# 修改conf目录下配置文件hbase-env.sh,vim conf/hbase-env.sh# false 取消 不需要自己管理实例 用zookeeperexport HBASE_MANAGES_ZK=false# 声明JAVA_HOMEexport JAVA_HOME=/home/commons/jdk8# HBase的jar包和Hadoop的jar包有冲突,导致服务没有起来,报错如object is not an instance of declaring class可以配置这个export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
  • 修改conf目录下配置文件vim conf/hbase-site.xml
##修改,  <property>    <name>hbase.cluster.distributed</name>    <value>true</value>  </property>##去掉  <property>    <name>hbase.tmp.dir</name>    <value>./tmp</value>  </property>  <property>    <name>hbase.unsafe.stream.capability.enforce</name>    <value>false</value>  </property>##增加 <property>   <name>hbase.zookeeper.quorum</name>   <value>zk1,zk2,zk3</value>   <description>The directory shared by RegionServers.   </description> </property><!-- <property>--><!-- <name>hbase.zookeeper.property.dataDir</name>--><!-- <value>/export/zookeeper</value>--><!-- <description> 记得修改 ZK 的配置文件 --><!-- ZK 的信息不能保存到临时文件夹--><!-- </description>--><!-- </property>--> <property>   <name>hbase.rootdir</name>   <value>hdfs://hadoop2:9000/hbase</value>     <!--8020这个端口号,要跟hadoop的NameNode一样-->   <description>The directory shared by RegionServers.   </description> </property>

经验总结扩展阅读