hbase的集群搭建

前言

hbase是一款分布式的列式数据库,其数据源寄生在hadoop上,因而与hadoop共生,广泛应用在大数据领域,利用zookeeper作为其分布式协同服务,存储非结构化和半结构化的松散数据,其特点是高可靠,高性能,面向列,可伸缩,实时读写

HBase数据模型

在这里插入图片描述

  • Row Key 作为一行数据的唯一标识,按照字典顺序排序,存储64k的字节数据。
  • Column Family 列族,作为hbase一大亮点,一个列族作为一个数据表中的一个数据分片,给hbase表定义了规范,使得qualifier列可以动态加入
  • qualifier 作为列族的子列,在一个列族下可以存放多个子列,Column Family是一级列,而qualifier列是二级列,其关系是父子关系。
  • Timestamp时间戳 hbase中对于每一列的存储都有一个对应的时间戳来区分每个版本的差异,最新的数据版本排在最前面,时间戳的类型是64位整型。
  • cell单元格 单元格是有时间戳来作为版本区分,由子列和row key确定一个单元格,其存储的类型是byte数组

HBase架构

在这里插入图片描述

  • HMaster决策region server分配region,负责region server的负载均衡,和用户对table的增删改操作
  • RegionServer维护region,处理region的读写请求,负责切分region。
  • Region hbase自动把表水平划分成多个区域,每个区域就是一个region,每个region储存连续的数据。随着数据越来越大,当数据达到阈值,会自动裂变成两个新的region。
  • Memstore与storeFile 一个store存储的是一个列族,而store中包括存储在内存中的memstore和存储在磁盘中的storeFile。每次写操作都会现在memstore上进行,当数据达到阈值时,则会通过RegionServer启动一个flashCache进程,写入一个单独的storefile。当storfile的数量达到一定的阈值之后,系统会进行版本合并和删除工作,形成一个更大的storefile。当一个region所有storefile的大小超过一定阈值后会分割为两个。
  • 客户端操作数据的时候先在memstore上操作,找不到则在storefile操作

table、region、store、memstore、storeFile之间的关系

在这里插入图片描述

  • 一个表可以有多个水平分表region,一个region下由包含多个store,一个store就对应一个列族,而一个store有两种组成,一个位于内存中的memstore和一个或者多个位于磁盘中的storeFile。

搭建步骤

  1. 下载hbase安装包:hbase-2.0.0
    这里我下载的版本是2.0.0,为了与hive3.1.1版本实现同步,hive3.1.1与hbase实现同步所使用的hbase版本是2.0.0。当然,也可以根据自己的需要下载其他版本的hbase。

  2. 切换到下载路径,解压hbase安装包

    tar -zxvf hbase-2.0.0-bin.tar.gz -C /usr/local
    
  3. 修改hbase安装路径

    mv /usr/local/hbase-2.0.0-bin /usr/local/hbase
    
  4. 修改hbase的配置文件

    • hbase-env.sh

      找到对应的key,修改成以下的值

      export JAVA_HOME=/usr/java/jdk1.8.0_211
      export HBASE_MANAGES_ZK=false
      

      JAVA_HOME 填写自身对应的jdk路径

      HBASE_MANAGES_ZK 禁用hbase自带的zookeeper

    • hbase-site.xml

      <?xml version="1.0"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <!--
      /**
       *
       * Licensed to the Apache Software Foundation (ASF) under one
       * or more contributor license agreements.  See the NOTICE file
       * distributed with this work for additional information
       * regarding copyright ownership.  The ASF licenses this file
       * to you under the Apache License, Version 2.0 (the
       * "License"); you may not use this file except in compliance
       * with the License.  You may obtain a copy of the License at
       *
       *     http://www.apache.org/licenses/LICENSE-2.0
       *
       * Unless required by applicable law or agreed to in writing, software
       * distributed under the License is distributed on an "AS IS" BASIS,
       * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       * See the License for the specific language governing permissions and
       * limitations under the License.
       */
      -->
      <configuration>
      	<property>
      		<name>hbase.rootdir</name>
      		<value>hdfs://hadoop1:9000/hbase</value>
      	</property>
      	<property>
      		<name>hbase.cluster.distributed</name>
      		<value>true</value>
        	</property>
        	<property>
      		<name>hbase.zookeeper.quorum</name>
      		<value>hadoop2,hadoop3,hadoop4</value>
        	</property>
      </configuration>
      
      
      • hbase.rootdir 配置hbase在hadoop上的根目录
      • hbase.cluster.distributed 开启hbase的集群模式
      • hbase.zookeeper.quorum 配置hbase在zk上注册集群
    • regionservers文件上填写需要集群的机器,每台机器启动一个regionServer进程,我这里使用三台机器作为regionServer,hadoop1作为master

      在这里插入图片描述

    • backup-masters

      在hbase的conf目录下可能不存在这个文件,那么需要手动创建一个,如没搭建hive,请参考hive的集群搭建

      vi backup-masters
      

      在上面填写一个备份节点,master节点一旦挂了,这个备份节点将成为新的master节点,这里我使用hadoop2作为备份节点。

      在这里插入图片描述

    • hdfs-site.xml

      将搭建好的hadoop的配置文件hdfs-site.xml拷贝到hbase的conf目录下

  5. 配置hbase的环境变量

    vi /etc/profile
    
    export HBASE_HOME=/usr/local/hbase
    export PATH=$PATH:$HBASE_HOME/bin
    
    source /etc/profile
    
  6. 分发配置好的hbase到其他机器上

    scp -r /usr/local/hbase hadoop2:/usr/local
    scp -r /usr/local/hbase hadoop3:/usr/local
    scp -r /usr/local/hbase hadoop4:/usr/local
    
  7. 其他机器按照上述步骤配置环境变量

启动hbase步骤

  1. 先启动zookeeper集群,可参考:zookeeper集群搭建

  2. 在hadoop1上启动hbase,在备份节点hadoop2上也启动hbase

    start-hbase.sh
    

    hbase管理界面

    在这里插入图片描述

    在这里插入图片描述

    可以看到有备份节点hadoop2

    在这里插入图片描述

    在zk上注册了3台机器,用于regionServer之间的通讯,而master可以不用注册到上面

  • 如启动之后hmaster闪退,或者打不开管理界面,那么请按以下步骤操作:

    1. 关闭hbasestop-hbase.sh,一定要脚本去跑完,再去杀死进程kill -9 xxx

    2. 清除zk上的hbase元数据信息

      zkCli.sh		//启动zk客户端	
      ls /			//查看zk节点
      rmr /hbase 	//删除hbase
      
    3. 重启hbase

  1. 启动hbase的控制台命令

    hbase shell
    

    在这里插入图片描述

  2. 测试一下hbase的命令

    • 显示命名空间
    list_namespace
    

    在这里插入图片描述

    • 创建一个User表,并且有一个info列族
    create 'User','info'
    list	//列出所有表
    

    在这里插入图片描述

  • hbase的常用操作命令,请参考:hbase命令操作

    到此,hbase的集群搭建完成!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值