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
    
  • 相关阅读:
    奇数阶魔方问题
    《DSP using MATLAB》示例9.3
    《DSP using MATLAB》示例9.2
    《DSP using MATLAB》示例9.1
    找个目标很重要
    《DSP using MATLAB》示例Example 8.30
    《DSP using MATLAB》示例Example 8.29
    《DSP using MATLAB》示例Example 8.28
    《DSP using MATLAB》示例Example 8.27
    《DSP using MATLAB》示例Example 8.26
  • 原文地址:https://www.cnblogs.com/wzlinux/p/10183322.html
Copyright © 2011-2022 走看看