zoukankan      html  css  js  c++  java
  • Hadoop 部署之 HBase (四)

    一、HBase是什么

    • HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。
    • HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。
    • 它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。
    • 人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。

    HBase 和 HDFS

    HDFS HBase
    HDFS是适于存储大容量文件的分布式文件系统。 HBase是建立在HDFS之上的数据库。
    HDFS不支持快速单独记录查找。 HBase提供在较大的表快速查找
    它提供了高延迟批量处理;没有批处理概念。 它提供了数十亿条记录低延迟访问单个行记录(随机存取)。
    它提供的数据只能顺序访问。 HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。

    HBase的存储机制

    HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。总之,在一个HBase:

    • 表是行的集合。
    • 行是列族的集合。
    • 列族是列的集合。
    • 列是键值对的集合。

    二、HBase 集群部署

    1、下载安装

    # 下载安装包
    wget http://archive.apache.org/dist/hbase/1.2.6/hbase-1.2.6-bin.tar.gz
    
    # 解压安装包
    tar xf hbase-1.2.6-bin.tar.gz
    mv hbase-1.2.6 /usr/local/hbase
    
    # 创建目录
    mkdir -p /home/hbase/{log,pid,tmp}
    

    2、配置 HBase 环境变量

    编辑文件/etc/profile.d/hbase.sh

    # HBASE ENV
    export HBASE_HOME=/usr/local/hbase
    export PATH=$PATH:$HBASE_HOME/bin
    

    使HADOOP环境变量生效

    source /etc/profile.d/hbase.sh
    

    三、HBase 配置(namenode01)

    1、配置 hbase-env.sh

    编辑文件/usr/local/hbase/conf/hbase-env.sh,修改如下信息。

    export JAVA_HOME=/usr/java/default
    export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop
    export HBASE_LOG_DIR=/home/hbase/log
    export HBASE_PID_DIR=/home/hbase/pid
    export HBASE_MANAGES_ZK=false
    

    2、配置region服务器 regionservers

    编辑文件/usr/local/hbase/conf/regionservers,修改为如下。

    datanode01
    datanode02
    datanode03
    

    3、配置列式存储 hbase-site.xml

    编辑文件/usr/local/hbase/conf/hbase-site.xml,修改为如下。

    <configuration>
          <!--region服务器的共享目录,用来持久存储HBase的数据 -->
            <property>
                    <name>hbase.rootdir</name>
                    <value>hdfs://namenode01:9000/hbase</value>
            </property>
            
            <!--本地文件系统的临时文件夹,可以修改为一个更为持久的目录-->
            <property>
                    <name>hbase.tmp.dir</name>
                    <value>/home/hbase/tmp</value>
            </property>
    
            <!--HBase集群的运行模式,false表示单机模式,true表示集群模式-->
            <property>
                    <name>hbase.cluster.distributed</name>
                    <value>true</value>
            </property>
    
            <!--HBase Master应该绑定的端口-->
            <property>
                    <name>hbase.master.port</name>
                    <value>60000</value>
            </property>
        
            <!--HBase Master的Web UI服务端口-->
            <property>
                    <name>hbase.master.info.port</name>
                    <value>60010</value>
            </property>
    
            <!--HBase RegionServer绑定的端口-->
            <property>
                    <name>hbase.regionserver.port</name>
                    <value>60020</value>
            </property>
    
            <!--HBase RegionServer的Web UI服务端口-->
            <property>
                    <name>hbase.regionserver.info.port</name>
                    <value>60030</value>
            </property>
    
            <!--ZooKeeper的zoo.cfg配置文件中的属性,ZooKeeper面向客户端服务的端口-->
            <property>
                    <name>hbase.zookeeper.property.clientPort</name>
                    <value>2181</value>
            </property>
    
            <!--ZooKeeper会话超期时间-->
            <property>
                    <name>zookeeper.session.timeout</name>
                    <value>120000</value>
            </property>
    
            <!--ZooKeeper Quorum中的服务器列表,使用逗号分隔-->
            <property>
                    <name>hbase.zookeeper.quorum</name>
                    <value>zk01:2181,zk02:2181,zk03:2181</value>
            </property>
    
            <!--ZooKeeper的zoo.cfg配置文件中的属性,ZooKeeper集群中单个节点接收的单个客户端请求的并发数-->
            <property>
                    <name>hbase.zookeeper.property.maxClientCnxns</name>
                    <value>300</value>
            </property>
    </configuration>
    

    4、将配置文件复制到其他节点

    cd /usr/local/hbase/conf
    scp * datanode01:/usr/local/hbase/conf 
    scp * datanode02:/usr/local/hbase/conf
    scp * datanode03:/usr/local/hbase/conf
    

    四、HBase 启动

    1、在namenode01执行

    start-hbase.sh
    

    2、检查 HBase

    [root@namenode01 conf]# jps
    14512 NameNode
    14786 ResourceManager
    15204 HMaster
    15405 Jps
    
    [root@datanode01 ~]# jps
    3509 DataNode
    3621 NodeManager
    3238 HRegionServer
    1097 QuorumPeerMain
    3839 Jps
    
    
    [root@datanode02 ~]# jps
    3668 Jps
    3048 HRegionServer
    3322 DataNode
    3434 NodeManager
    1101 QuorumPeerMain
    
    
    [root@datanode03 ~]# jps
    3922 DataNode
    4034 NodeManager
    4235 Jps
    1102 QuorumPeerMain
    3614 HRegionServer
    

    3、HBase 的 WEB 界面

    访问 http://192.168.1.200:60010/master-status

    访问 http://192.168.1.201:60030/rs-status

    4、进入 hbase shell 验证

    [root@namenode01 ~]# hbase shell
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/usr/local/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    Version 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017
    
    hbase(main):001:0> list
    TABLE                                                                                                                                                        
    0 row(s) in 0.2210 seconds
    
    => []
    hbase(main):002:0> status
    1 active master, 0 backup masters, 3 servers, 0 dead, 0.6667 average load
    
  • 相关阅读:
    C系统,操作符和词法元素
    值类型和引用类型
    WPF
    C#版本进化
    快速排序
    C语言字符串
    查找
    简单快速排序
    PHP运行出现Notice : Use of undefined constant 的解决办法
    vs2010 修改注释模板
  • 原文地址:https://www.cnblogs.com/wzlinux/p/10183322.html
Copyright © 2011-2022 走看看