第3章 HBase完全分布式集群搭建

主要内容:

  • HBase简介
  • Hadoop、HBase和Hive三者关系
  • 启动Hadoop集群
  • ZooKeeper集群的部署
  • HBase集群的部署

 

3.-1 HBase简介

数据模型概述:

1) HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳

2) 每个值是一个未经解释的字符串,没有数据类型

3) 用户在表中存储数据,每一行都有一个可排序的行键和任意多的列

4) 表在水平方向由一个或者多个列族组成,一个列族中可以包含任意多个列,同一个列族里面的数据存储在一起

5) 列族支持动态扩展,可以很轻松地添加一个列族或列,无需预先定义列的数量以及类型,所有列均以字符串形式存储,用户需要自行进行数据类型转换

6) HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留(这是和HDFS只允许追加不允许修改的特性相关的)

数据模型相关概念:

 

 

1) 表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族

2) 行:每个HBase表都由若干行组成,每个行由行键(row key)来标识。

3) 列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元

4) 列限定符:列族里的数据通过列限定符(或列)来定位

5) 单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]

6) 时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引

数据坐标:

HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此,可以视为一个“四维坐标”,即[行键, 列族, 列限定符, 时间戳]

[“201505003”, “Info”, “email”, 1174184619081]

“xie@qq.com”

[“201505003”, “Info”, “email”, 1174184620720]

“you@163.com”

3.0 Hadoop、HBase和Hive三者关系

1)Hadoop包含两大模块HDFS和MapReduce

HDFS:The Hadoop Distribute File System 分布式文件系统

MapReduce:分布式离线数据计算

2)HDFS提供了高可靠性的底层存储支持,HDFS是面向批量访问模式,不是随机访问模式

3)HBase是Hadoop database,是一种NoSQL数据库,依赖于Hadoop的HDFS模块,是基于HDFS实现对分布式数据文件的管理,其目的是在集群上托管一个非常大的半结构化table。

HDFS:面向批量访问模式,不是随机访问模式,

HBase:提供表状的面向列的数据存储,针对表状数据进行随机读写。

4)Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载。提供SQL语句能让用户更容易地做特定查询,汇总和数据分析,不支持更改数据的操作。

其使用类SQL语言,底层经过编译转为MapReduce程序,在Hadoop上运行, 然后进行数据的查询和分析。

为什么说Hive是基于Hadoop的呢?

l Hive处理的数据实际存放在HDFS中;

l Hive分析数据的底层实现还是MapReduce程序;

l Hive调度资源时,用的是Yarn框架;

3.1 启动Hadoop通过JPS验证 

#start-all.sh

3.2 安装并启动 ZooKeeper

1)在apache官网下载zookeeper安装包,进行解压安装

拷贝安装包到/usr/local目录下

 

2)进入/usr/local目录下解压ZooKeeper安装包

#cd /usr/local
#tar zxvf zookeeper-3.4.9.tar.gz

修改文件名,方便后续操作:

#mv zookeeper-3.4.9 zookeeper

3)配置环境变量

/etc/profile文件中配置zookeeper

#vi /etc/profile

在配置文件中添加如下内容:

export ZK_HOME=/usr/local/zookeeper
export PATH=$ZK_HOME/bin:$PATH

退出保存执行source命令使环境变量生效:

#source /etc/profile

4)在zookeeper安装目录的conf目录下修改配置文件

创建zoo.cfg文件,并修改配置

#cp zoo_sample.cfg zoo.cfg

编辑该文件,配置以下内容 

#vim zoo.cfg

修改 :

dataDir=/usr/local/zookeeper/data

新增:

server.1=01node:2888:3888
server.2=02node:2888:3888
server.3=03node:2888:3888

zookeeper目录下创建文件夹data:

#mkdir data

data目录下创建文件myid,值为1

#touch myid
#vi myid

5)zookeeper目录复制到另外两个节点02node,03node上。

#scp -r zookeeper/ 02node:/usr/local
#scp /etc/profile 02node:/etc/
#scp -r zookeeper/ 03node:/usr/local
#scp /etc/profile 03node:/etc/

6)登录02node和03node,把02node和03node节点上的myid分别改为2和3,

#vim /usr/local/zookeeper/data/myid //

修改内容为2

#source /etc/profile
#vim /usr/local/zookeeper/data/myid //

修改内容为3

#source /etc/profile

注:这个id是zookeeper的主机标示,每个主机id不同,第二台是2 第三台是3。

7) zookeeper集群启动和检验

进入zookeeper安装目录bin:

#cd /usr/local/zookeeper/bin/

• 启动,在三个节点上分别执行命令zkServer.sh start

 

或者直接启动:

#/usr/local/zookeeper/bin/zkServer.sh start

• 检验,在三个节点上分别执行命令zkServer.sh status

此时使用jps命令可以看见如下情况:

• 关闭, 在三个节点上分别执行命令zkServer.sh stop

3.3 安装HBase

3.3.1 在apache官网下载HBase安装包

下载地址:https://downloads.apache.org/ 

安装包拷贝到/usr/local目录下:

hbase-1.4.13-bin.tar.gz

3.3.2 在/usr/local目录下解压HBase安装包

#cd /usr/local
#tar zxvf hbase-1.4.13-bin.tar.gz
#mv hbase-1.4.13 hbase //换为短名

3.3.3 配置环境变量

• 在/etc/profile文件中配置HBase

export HBASE_HOME=/usr/local/hbase
export PATH=$HBASE_HOME/bin:$PATH

3.3.4 在conf目录下修改配置文件

• 修改hbase-env.sh

export JAVA_HOME=本机jdk的安装路径 #配置jdk安装路径,如:
export JAVA_HOME=/usr/local/jdk
export HBase_MANAGES_ZK=false #配置不使用HBase自带的zk
export HBASE_LOG_DIR=${HBASE_HOME}/logs

• 修改hbase-site.xml

<configuration>
   <property>
        <name>hbase.tmp.dir</name>
        <value>/usr/local/hbase/tmp</value>
   </property>
    <!-- 设置HRegionServers共享目录。定义hbase.rootdir参数时HDFS文件系统的主机名和端口号必须与Hadoop的配置文件core-site.xml中fs.default.name参数的配置一致-->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://01node:9000/hbase</value>
        <description>Hbase data director</description>
    </property>
    <!-- 开启分布式模式 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <!-- 设置HMaster的rpc端口, 由于采用的是HA模式,这里只写端口就可以了,不需要再写主机名-->
    <property>
        <name>hbase.master.port</name>
        <value>60000</value>
    </property>
    <!-- 对比参考
    <property>
        <name>hbase.master</name>
        <value>hdfs://master:60000</value>
    </property>
    -->
    <!-- 设置HMaster的http web console端口 -->
    <property>
        <name>hbase.master.info.port</name>
        <value>16010</value>
    </property>
    <!--zookeeper设置,依赖zookeeper集群设置-->
    <!--zookeeper集群信息设置-->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>01node,02node,03node</value>
    </property>
    <!--zookeeper端口-->
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <!--请参考zookeeper配置文件zoo.cfg中dataDir的值 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/usr/local/zookeeper/data</value>
    </property>
</configuration>

• 在regionservers文件中配置从节点region server的地址

02node

03node

3.3.5 将配置好的HBase目录拷贝到其他节点

scp -r /usr/local/hbase 02node:/usr/local
scp -r /usr/local/hbase 03node:/usr/local

同时拷贝环境变量配置文件:

scp  /etc/profile root@02node:/etc/profile
scp  /etc/profile root@03node:/etc/profile

记得刷新配置文件:

source /etc/profile

3.3.6 HBase集群启动和检验

•启动集群:HMaster主节点上执行命令start-hbase.sh启动HBase集群;

• 使用jps命令检查各节点的进程:主节点应该启动HMaster进程,各从节点应启动HRegionServer进程

 

• 关闭HBase集群: 在主节点上运行stop-hbase.sh 命令。

3.3.7 web-ui访问

地址:http://01node:16010/

 

posted @ 2021-10-14 20:12  silvan_happy  阅读(514)  评论(0编辑  收藏  举报