美文网首页
HBase单机环境搭建

HBase单机环境搭建

作者: analanxingde | 来源:发表于2019-02-01 17:09 被阅读86次

    在之前进行了单机版Hadoop安装之后,本文在之前的基础上进行Hbase单机环境的搭建:主要参考大神的博客和《HBase不睡觉书》

    1. 服务器选择

    阿里云服务器基本信息
    注意本文中的系统是centos 7.3, 与centos7之前的版本可能有所不同。

    2. 软件安装版本

    2.1. 安装包下载

    软件下载地址(各自官网):Hbase
    对应的stable文件夹下的稳定版,本文选择hbase-1.4.9-bin.tar.gz(编译好不加密的包)

    Hbase版本下载

    2.2 安装包上传到服务器

    rz名命令上传。如果显示不存在这个命令,则说明未安装rz,执行yum -y install lrzsz安装后,上传Hbase安装包到服务器, rz 命令选择要上传的安装包即可。解压tar -zxvf hbase-1.4.9-bin.tar.gz
    本课题中,解压后的目录为:/usr/local/hbase-1.4.9

    2.3 环境配置

    配置profile文件
    执行vim /etc/profile,打开profile文件,在文件中添加:

    export HBASE_HOME=/usr/local/hbase-1.4.9
    export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HBASE_HOME}/bin:$PATH
    

    执行source /etc/profile使文件修改生效。输入hbase version查看配置状态,如下所示则代表配置成功。

    配置成功标志

    3. 修改配置文件

    进入/usr/local/hbase-1.4.9/conf文件夹下,对Hbase配置文件进行修改,包括了hbase-env.shhbase-site.xml

    3.1 建立相应的运行文件夹

    为了方便后续的hbase环境配置,此处对后续配置中需要用的的文件夹进行组织,分别执行如下命令:

    mkdir  /root/hbase  
    mkdir  /root/hbase/tmp  
    mkdir  /root/hbase/pids
    

    3.2 修改hbase-env.sh

    对hbase的环境进行配置,执行vim hbase-env.sh命令,在原有的hbase-env.sh文件中添加如下配置:

    export JAVA_HOME=/usr/local/jdk1.8.0_201
    export HADOOP_HOME=/usr/local/hadoop-2.8.4
    export HBASE_HOME=/usr/local/hbase-1.4.9
    export HBASE_CLASSPATH=/usr/local/hadoop-2.8.4/etc/hadoop
    export HBASE_PID_DIR=/root/hbase/pids
    export HBASE_MANAGES_ZK=false //HBASE_MANAGES_ZK=false 是不启用HBase自带的Zookeeper集群。
    

    3.3 修改hbase-env.sh

    对hbase-env.sh文件进行配置,执行vim hbase-env.sh命令,在原有的hbase-env.sh文件中添加如下配置:

    <property>
     <name>hbase.rootdir</name>
     <value>hdfs://test01:9000/hbase</value>
     <description>The directory shared byregion servers.</description>
    </property>
    <!-- hbase的端口 -->
    <property>
     <name>hbase.zookeeper.property.clientPort</name>
     <value>2181</value>
     <description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
     </description>
    </property>
    <!--  超时时间 -->
    <property>
     <name>zookeeper.session.timeout</name>
     <value>120000</value>
    </property>
    <!--  zookeeper 集群配置。如果是集群,则添加其它的主机地址 -->
    <property>
     <name>hbase.zookeeper.quorum</name>
     <value>test01</value>
    </property>
    <property>
     <name>hbase.tmp.dir</name>
     <value>/root/hbase/tmp</value>
    </property>
    <!-- false是单机模式,true是分布式模式  -->
    <property>
     <name>hbase.cluster.distributed</name>
     <value>false</value>
     
    

    说明:hbase.rootdir:这个目录是region server的共享目录,用来持久化Hbase 。hbase.cluster.distributed :Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面

    3.4 启动查看结果

    进入Hbase安装目录下的bin目录下,本文中指的是:``/usr/local/hbase-1.4.9/bin````下,执行./start-hbase.sh启动hbase后,如果输入jps,得到如下信息,则说明Hbase成功启动。

    成功启动
    至此,单机版Hbase安装成功。

    4. 安装遇到的问题

    4.1 警告:某些配置选项在java8中不存在

    如下图所示:显示某些配置选项不存在Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0

    配置文件
    解决方案:如报错所示,在hbase-env.sh配置文件中存在某些在jdk8中不存在命令,查看配置文件发现如下场景:
    内存配置部分jdk8不兼容
    如注释所说,将这里的两行配置信息export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m" export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"注释掉即可。

    4.2 jar包冲突

    当上述警告解决后,我还遇到了无法启动HBase的情况,``/usr/local/hbase-1.4.9/bin````下,执行./start-hbase.sh启动hbase后,执行jps没有出现HMaster进程,查看相应的日志(./start-hbase.sh命令执行后会在命令行给出log日志所在目录),发现如下报错信息:

    jar包冲突
    可以看出问及在于此处发生了jar包冲突,冲突的两个jar包分别为:
    file:/usr/hbase/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.classfile:/usr/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class,移除其中一个jar包即可。
    解决方案:进入其中一个jar包的目录下,移除相应jar包即可。分别执行下面命令:
    cd /usr/local/hbase-1.4.9/lib/ 
    rm slf4j-log4j12-1.7.10.jar
    

    4.3 绑定端口错误

    之后,我还遇到了无法启动HBase的情况,关于绑定端口错误,查看4.2中所示的日志文件,发现如下报错:

    2019-02-01 12:47:42,613 ERROR [main] master.HMasterCommandLine: Master exiting
            at org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:143)
            at org.apache.hadoop.hbase.LocalHBaseCluster.addMaster(LocalHBaseCluster.java:227)
            at org.apache.hadoop.hbase.LocalHBaseCluster.<init>(LocalHBaseCluster.java:162)
            at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:225)
            at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:138)
            at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
            at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:127)
            at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2821)
            at org.apache.hadoop.hbase.LocalHBaseCluster.addMaster(LocalHBaseCluster.java:227)
            at org.apache.hadoop.hbase.LocalHBaseCluster.<init>(LocalHBaseCluster.java:162)
            at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:225)
            at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:138)
            at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
            at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:127)
            at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2821)
    Caused by: java.io.IOException: Problem binding to test01/47.106.221.38:0 : Cannot assign requested address. To switch ports use the 'hbase.master.port' configuration property.
            at org.apache.hadoop.hbase.regionserver.RSRpcServices.<init>(RSRpcServices.java:1130)
            at org.apache.hadoop.hbase.regionserver.RSRpcServices.<init>(RSRpcServices.java:1078)
            at org.apache.hadoop.hbase.master.MasterRpcServices.<init>(MasterRpcServices.java:243)
            at org.apache.hadoop.hbase.master.HMaster.createRpcServices(HMaster.java:614)
            at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:561)
            at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:449)
            at org.apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster.<init>(HMasterCommandLine.java:315)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:139)
            ... 7 more
    Caused by: java.net.BindException: Cannot assign requested address
            at sun.nio.ch.Net.bind0(Native Method)
            at sun.nio.ch.Net.bind(Net.java:433)
            at sun.nio.ch.Net.bind(Net.java:425)
    

    仔细分析,发现是端口错误。debug分为两步:

    • 1.检查ip主机映射文件sudo vi /etc/hosts查看映射master对应的ip是否正确
      1. 我的解决方案:按照提示所建议的设置master端口即可,在hbase-site.xml文件中添加如下配置:
    </property>
    <!-- 设置master端口号 -->
    <property>
        <name>hbase.master.port</name>
        <value>60010</value>
    </property>
    

    相关文章

      网友评论

          本文标题:HBase单机环境搭建

          本文链接:https://www.haomeiwen.com/subject/hcclsqtx.html