单机版以及伪分布式版Hbase配置及常见问题解决办法

单机版以及伪分布式版Hbase配置及常见问题解决办法

下载Hbase

笔者使用的Hbase版本是2.3.7,适用于hadoop-2.10.x以及hadoop-3.x版本。以下为镜像下载网址:

点击此处跳转到Hbase-2.3.7版本下载镜像网址

下载 -bin 的压缩包。

配置以及测试Hbase

  1. 首先,使用tar命令将Hbase解压到任意目录(推荐主目录下:容易查找),放在 /usr/local 目录下会产生权限问题,下文会对其进行阐述。如果解压到非当前目录的时候记得加一个参数 -C,例如:

    tar -zxf Hbase-2.3.7.tar.gz -C ~
    
  2. 解压完成后,配置环境变量。/etc/profile 或者 ~/.bashrc 任选其一。例如:

    # 在/etc/profile 或者 ~/.bashrc 中
    export HBASE_HOME=~/hbase-2.3.7
    export PATH=$PATH:${HBASE_HOME}/bin
    
  3. 使用source命令生效刚刚配置的配置文件。

    source /etc/profile
    source ~/.bashrc
    
  4. 此时,如果想使用单机Hbase,配置就到此结束了。可以使用如下命令查看Hbase版本:

    cd ~/hbase-2.3.7
    ./bin/hbase version
    

    如果查看版本的过程中前两行有如下报错(或者称其为警告):

    /usr/local/hadoop/libexec/hadoop-functions.sh: 行 2366: HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_USER:无效的变量名
    /usr/local/hadoop/libexec/hadoop-functions.sh: 行 2461: HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_OPTS:无效的变量名

    !!!!不要慌!!!!

    解决方法

    ​ 打开 ~/hbase-2.3.7/conf (目录根据自己的目录进行修改)目录下的hbase-env.sh文件中进行编辑:

    ​ 找到最后几行的如下代码:

    export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"

    ​ 解除他的注释状态。

  5. 此时就可以执行如下代码启动HMaster了:

    cd ~/hbase-2.3.7
    ./bin/start-hbase.sh
    # 然后使用jps命令看看是否成功启动HMaster
    jps
    # 如果HMaster正常启动的话,单机Hbase就可以进入到shell中进行操作了
    ./bin/hbase shell
    # 进入到hbase shell中可以使用以下语句查看是否可以正常进行操作
    >create 'tablename','info'
    >list
    

  6. 以下是伪分布式的Hbase的配置:

    # 打开 对应 hbase目录下的conf文件夹
    cd ~/hbase-2.3.7/conf
    # 对hbase-env.sh 文件进行编辑
    sudo vim hbase-env.sh
    # 在首部添加以下三行代码,JAVA_HOME 以及 Hadoop的路径根据自己的位置进行设置
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    export HBASE_CLASSPATH=~/hadoop-2.10.1/etc/hadoop
    export HBASE_MANAGES_ZK=true
    # 同样建议将文件末尾的以下代码取消他的注释状态,以免报无效变量名的错误
    export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
    
  7. esc 之后输入 :wq 退出并保存编辑。

  8. 之后打开hbase-site.xml文件进行编辑:

    # 在configuration参数中添加如下代码
    <property>
    	<name>hbase.rootdir</name>
    	# 因为是伪分布式的hbase,所以需要放置到对应的hdfs伪分布集群中
    	# 需要hdfs的端口号设置为为9000
    	<value>hdfs://localhost:9000/hbase</value>
    </property>
    <property>
    	<name>hbase.cluster.distributed</name>
    	<value>true</value>
    </property>
    
  9. 设置完成之后,保存并退出编辑。

  10. 之后切换到对应的hadoop文件夹下启动hdfs集群:

    cd ~/hadoop-2.10.1
    ./sbin/start-dfs.sh
    # 使用jps查看对应的namenode以及datanode是否启动成功
    jps
    
  11. hdfs伪分布式集群启动成功之后,切换到对应的Hbase文件夹下:

    cd ~/hbase-2.3.7
    ./bin/start-hbase.sh
    ./bin/hbase shell
    # 进入到hbase shell界面之后还是进行测试是否可以正常进行操作
    >create 'tablename','info'
    >list
    

报错总结

  1. 变量名报错:HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_USER:无效的变量名

    解决方法:

    ​ 打开 ~/hbase-2.3.7/conf (目录根据自己的目录进行修改)目录下的hbase-env.sh文件中进行编辑:

    ​ 找到最后几行的如下代码:

    ​ export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=“true”

    ​ 解除他的注释状态。

  2. port 22:connection refused 报错:

    解决方法:安装设置ssh免密登录

    sudo apt-get install openssh-server
    # 输入以下命令,然后输入yes,再输入密码进行登录
    ssh localhost
    # 生成公钥私钥(一直默认回车就可以),将在~/.ssh文件夹下生成文件id_rsa:私钥,id_rsa.pub:公钥
    ssh-keygen -t rsa
    # 导入公钥到认证文件,导入本机
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
    
  3. NoNode /hbase/master 报错:

    解决方法:

    # 输入jps检查是否启动了HMaster节点,伪分布式是否启动了hdfs伪分布式集群
    jps
    # 启动HMaster
    cd ~/hbase-2.3.7
    ./bin/start-hbase.sh
    jps # 查看是否成功启动HMaster
    # 启动hdfs伪分布式集群
    cd ~/hadoop-2.10.1
    ./sbin/start-dfs.sh
    jps # 查看是否成功启动hdfs伪分布式集群
    # 最后进入hbase shell中进行测试,就可以正常操作了
    cd ~/hbase-2.3.7
    ./bin/hbase shell
    >create 'tablename','info'
    >list
    
  4. 在执行 ./bin/start-hbase.sh 的时候遇到权限不够的问题:

    # 原因就是把hbase解压在/usr/local文件夹下,而且该文件夹的拥有者是root
    # 可以使用以下命令解决
    cd /usr/local
    # 这里的yourname是当前用户名
    sudo chown -R yourname hbase-2.3.7/
    

    然后去hbase文件夹下执行./bin/start-hbase.sh就不会有权限问题了。这个方法比较简单且有效,切换为root用户执行start-hbase.sh文件有时候也会出现权限问题。所以建议解压到主目录或者改变解压后文件的拥有者为当前用户。

其他的问题欢迎提出,笔者努力解决

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>