专业的编程技术博客社区

网站首页 > 博客文章 正文

CentOS,大数据集群搭建,HBase数据模型,HBase集群搭建及管理

baijin 2024-11-27 11:21:30 博客文章 5 ℃ 0 评论

Hbase介绍

HBase定义

HBase是以HDFS为数据存储的一种分布式、可扩展的NoSQL数据库。

HBase数据模型

Hbase的设计理念依据是Google的BigTable论文,论文中的介绍:BigTable是一个稀疏的、分布式的、持久的多维排序Map。

Base 数据模型主要由table、row、column、timestamp、cell几个元素构成。

table——表

一个表可能包含多行数据,表其实是一个分布式的表,真正的数据是存储在Region中的,Region可以理解为分片,每个表会包含多个分片,分别由不同的RegionServer管理,每个分片会有多个副本,以实现分片的高可用。

row——行

一行数据包含唯一的rowkey,多个column及对应的值,一张表中所有row都按照rowkey的字典顺序由小到大排列;因为数据在Region上的分布也与rowkey相关,所以在存储数据时,设计合理的rowkey使得数据尽可能在Region上分布均匀,在查询数据时就不会出现一个RegionServer负载过高,而其它RegionServer负载较低的情况。

column——列

列与关系型数据的列不同,HBase中的column由column family(列簇)和 qualifier(列)组成。两者之间使用 ":" 相连,一个列簇下可以有多个列。

cell——单元格

单元格由五元组(rowkey、column、timestamp、type、value)组成,其中type标识操作的类型(Put/Delete)这样的操作类型,在HBase底层以KV形式存储,key为(rowkey、column、timestamp、type),值为value。

timestamp——时间戳

每个单元格在写入HBase时都默认分配一个时间戳,作为单元格的版本,在写入时也可以自带时间戳,HBase支持多版本特性,同一个rowkey、column下可以有多个value存在,这些value使用timestamp作为版本号,版本号越大,数据越新。

Hbase安装

前置条件

安装环境:操作系统为CentOS,已配置免密登录,已配置Java环境变量,已安装Hadoop。

参考:Hadoop集群搭建操作HDFS文件系统Zookeeper集群安装搭建

安装介质:hbase-2.0.5-bin.tar.gz,地址:https://hbase.apache.org/

安装服务器:node51(192.168.2.51),node52(192.168.2.52),node53(192.168.2.53)。

上传安装介质并解压(node51)

tar -zxvf hbase-2.0.5-bin.tar.gz -C /opt/module/
cd /opt/module
mv hbase-2.0.5 hbase

环境变量: sudo vim /etc/profile.d/my_env.sh

#配置环境变量
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin

#执行使环境变量生效
source /etc/profile
echo $HBASE_HOME

配置(hbase-env.sh):

#备份一下:
cd $HBASE_HOME/conf
cp hbase-env.sh hbase-env.sh.bak
cp hbase-site.xml hbase-site.xml.bak

# vim hbase-env.sh :
export HBASE_MANAGES_ZK=false

配置(vim hbase-site.xml):

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 部署分布式服务 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <!-- 存储HDFS的节点 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://node53:8020/hbase</value>
    </property>
    <!-- ZooKeeper管理节点 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>node53,node54,node55</value>
    </property>
    <!-- 使用master节点2181端口 -->
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <!-- ZooKeeper超时时间 -->
    <property>
        <name>zookeeper.session.timeout</name>
        <value>120000</value>
    </property>
</configuration>

配置(vim regionservers):

node53
node54
node55

分发到其它服务器节点: xsync.sh hbase

Hbase启停

单点启动:
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionservers
注:启动前先保证 hadoop和zookeeper。

集群启停:
bin/start-hbase.sh 
bin/stop-hbase.sh 
注:启动后的进程HRegionServer,其中node55多了一个HMaster进程。

Web访问:http://node53:16010/

进入命令行

bin/hbase shell

help

管理脚本(hbased.sh)

#!/bin/bash

if [ $# -lt 1 ]
then
	echo "没有参数: 传入参数为: start、stop"
fi

case $1 in
"start")
	ssh node55 "/opt/module/hbase/bin/start-hbase.sh"
;;
"stop")
	ssh node55 "/opt/module/hbase/bin/stop-hbase.sh"
;;
esac

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表