zoukankan      html  css  js  c++  java
  • 第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/

  • 相关阅读:
    php __clone实现
    php 魔术方法 __autoload()
    ubuntu 下telnet 操纵memcache 实现
    ubuntu下 使用AB做压力测试
    github 使用方法总结 还有一部分不太懂
    ubuntu 下 github 使用方法 以及异常修改
    ubuntu 14.0 下github 配置
    postgres安装 以及修改postgres 密码
    ubuntu 14.下 netbeans 自体锯齿 消除
    js实现多张图片每隔一秒换一张图片
  • 原文地址:https://www.cnblogs.com/zhouyeqin/p/15408304.html
Copyright © 2011-2022 走看看