zoukankan      html  css  js  c++  java
  • HBase 0.98 分布式集群安装详解

    概述

    HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。


    前言

    这篇博客应该很早就发表了,只是当时环境搭建好了之后没有及时做笔记,后来又不想重新搭建,所以才拖到今天。还有就是这篇博客安装的是 Hbase-0.98 的版本,与之前说要安装 0.96 的说明不吻合,这里统一说明,之前的博客就不更改了。还有一点就是,本文的安装过程很顺,没有出现什么启动不了,或是运行异常的行为。如果你在安装的过程出现了一些不好的事情,那么你可能会在本文中找到一些蛛丝马迹,也可能一无所获。只是我希望你可以理解到,本文并非胡编乱邹。


    版权说明

    著作权归作者所有。
    商业转载请联系作者获得授权,非商业转载请注明出处。
    本文作者:Q-WHai
    发表日期: 2016年6月8日
    本文链接:http://blog.csdn.net/lemon_tree12138/article/details/51607646
    来源:CSDN
    更多内容:分类 >> 大数据之 Hadoop


    环境说明

    1. CentOS release 6.5 (Final) ( master )
    2. CentOS release 6.5 (Final) ( slave1 )
    3. CentOS release 6.5 (Final) ( slave2 )
    4. JDK-1.8.0_92 ( Oracle )
    5. Hadoop-2.2.0
    6. Zookeeper-3.4.5
    7. 虚拟机环境: VMware® Workstation 12 Pro

    序号 虚拟机 IP hostname
    1 172.16.2.117 master
    2 172.16.2.115 slave1
    3 172.16.2.116 slave2

    HBase 环境搭建

    下载

    $ tar -zxvf hbase-0.98.18-hadoop2-bin.tar.gz
    $ mv hbase-0.98.18-hadoop2-bin ~/hbase

    配置环境变量

    $ sudo vim /etc/profile
    export HBASE_HOME=/home/hadoop/hbase
    export PATH=$PATH:${HBASE_HOME}/bin
    $ source /etc/profile

    同步集群时间

    查看各台机器的时间

    $ date

    如果时间是一致的,下面的这一步就不用进行了。如果时间不一致可通过下面的步骤将时间统一。

    $ sudo ntpdate cn.pool.ntp.org

    若没有安装ntpdate;先安装ntpdate工具。机器之间的时间如果不统一,后果就是 HMaster 进程起不起来(未测试过)。

    修改配置文件

    这里主要需要修改的文件有如下几个

    序号 文件名 上层路径
    1 hbase-env.sh ${HBASE_HOME}/conf/
    2 hbase-site.xml ${HBASE_HOME}/conf/
    3 regionservers ${HBASE_HOME}/conf/

    hbase-env.sh

    添加如下内容

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_92
    export HBASE_CLASSPATH=/home/hadoop/hadoop/etc/hadoop
    export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
    export HBASE_MANAGES_ZK=false

    HBASE_MANAGES_ZK默认是true,说明是让Hbase 单独管理 zookeeper。如果你机器上已经安装好了分布式Zookeeper,那么可以设定为fals;否则就不需要修改。

    hbase-site.xml

    $ vim hbase-site.xml
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    
        <!-- 指定 hbase 在 HDFS 上存储的路径,保持与 core-site.xml 中的 hdfs 路径一致 -->
        <property>
             <name>hbase.rootdir</name>
             <value>hdfs://master:9000/hbase</value>
        </property>
    
        <!-- 指定 hbase 是分布式的 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
    
        <!-- 指定 zk 的地址,多个用“,”分割 ,hbase.zookeeper.quorum 的个数必须是奇数,至少是3个-->
        <property>
                <name>hbase.zookeeper.quorum</name><!-- quorum : 法定人数 -->
                <value>master:2181,slave1:2181,slave2:2181</value>
        </property>
    
    </configuration>

    regionservers

    $ vim regionservers
    master
    slave1
    slave2

    下发

    $ scp -r ~/hbase/ slave1:~/hbase
    $ scp -r ~/hbase/ slave2:~/hbase

    并修改各节点的 /etc/profile 文件内容。

    启动

    在 master 中启动 master 进程

    $ hbase-daemon.sh start master
    starting master, logging to /home/hadoop/hbase/logs/hbase-hadoop-master-master.out

    在两个 slaves 中启动 master 进程

    [hadoop@slave1 ~]$ hbase-daemon.sh start regionserver
    starting regionserver, logging to /home/hadoop/hbase/logs/hbase-hadoop-regionserver-slave1.out
    [hadoop@slave2 ~]$ hbase-daemon.sh start regionserver
    starting regionserver, logging to /home/hadoop/hbase/logs/hbase-hadoop-regionserver-slave2.out

    或者直接使用

    $ start-hbase.sh
    starting master, logging to /home/hadoop/hbase/logs/hbase-hadoop-master-master.out
    slave2: starting regionserver, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-regionserver-slave2.out
    slave1: starting regionserver, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-regionserver-slave1.out
    master: starting regionserver, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-regionserver-master.out

    验证

    方式一:jps
    如果你使用 jps 命令可以查看到如下的这些进程,那么 ok, 你的配置基本没啥问题了。

    [hadoop@master conf]$ jps
    4273 QuorumPeerMain
    3875 SecondaryNameNode
    4614 HMaster
    4824 Jps
    4011 ResourceManager
    3709 NameNode
    4734 HRegionServer
    [hadoop@slave1 ~]$ jps
    3122 HRegionServer
    2948 QuorumPeerMain
    2824 NodeManager
    3273 Jps
    2731 DataNode
    [hadoop@slave2 ~]$ jps
    2818 NodeManager
    2948 QuorumPeerMain
    2724 DataNode
    3501 Jps
    3358 HRegionServer

    方式二:网页验证
    你也可以在节点主机的 web 浏览器里输入 master:60010 进行验证
    这里写图片描述
    如果你的界面里也有类似的界面,那么就说明 hbase 已经成功安装了。

    方式三:Shell
    上面的两种还都只是验证了你的 Hbase 是否安装成功,却不能说明它一定可用。这时需要进行 Shell 验证。主要验证步骤参见下面。

    shell

    可以使用 hbase shell 进入

    $ hbase shell
    2016-06-07 16:25:07,525 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    Version 0.98.18-hadoop2, rc26c554ab3a8deecf890873bf6b1b4c90fa001dc, Fri Mar 18 19:19:59 PDT 2016
    
    hbase(main):001:0>

    检查状态

    hbase(main):001:0> status
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/home/hadoop/hbase/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/home/hadoop/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    1 active master, 0 backup masters, 3 servers, 0 dead, 0.6667 average load

    创建数据表

    hbase(main):002:0> create 'student', 'name', 'sex', 'age'
    0 row(s) in 0.8520 seconds
    
    => Hbase::Table - student

    查看数据表

    hbase(main):003:0> list
    TABLE
    student
    1 row(s) in 0.0450 seconds
    
    => ["student"]

    Ref


  • 相关阅读:
    原创 | 我被面试官给虐懵了,竟然是因为我不懂Spring中的@Configuration
    vavr:让你像写Scala一样写Java
    Java黑科技之源:JVMTI完全解读
    JVM 源码解读之 CMS 何时会进行 Full GC
    MySQL 如何优化大分页查询?
    025:为什么需要将Logger对象声明为private static final类型的
    酷家乐一面二面
    趋势科技面试
    生活就是好好经历,无问西东----三月份总结
    30号快手笔试(三道ac两道半)————-历史上最大的网络失误orz
  • 原文地址:https://www.cnblogs.com/fengju/p/6335982.html
Copyright © 2011-2022 走看看