单机版以及伪分布式版Hbase配置及常见问题解决办法
Posted Software_E
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单机版以及伪分布式版Hbase配置及常见问题解决办法相关的知识,希望对你有一定的参考价值。
单机版以及伪分布式版Hbase配置及常见问题解决办法
下载Hbase
笔者使用的Hbase版本是2.3.7,适用于hadoop-2.10.x以及hadoop-3.x版本。以下为镜像下载网址:
下载 -bin 的压缩包。
配置以及测试Hbase
-
首先,使用tar命令将Hbase解压到任意目录(推荐主目录下:容易查找),放在 /usr/local 目录下会产生权限问题,下文会对其进行阐述。如果解压到非当前目录的时候记得加一个参数 -C,例如:
tar -zxf Hbase-2.3.7.tar.gz -C ~
-
解压完成后,配置环境变量。/etc/profile 或者 ~/.bashrc 任选其一。例如:
# 在/etc/profile 或者 ~/.bashrc 中 export HBASE_HOME=~/hbase-2.3.7 export PATH=$PATH:${HBASE_HOME}/bin
-
使用source命令生效刚刚配置的配置文件。
source /etc/profile source ~/.bashrc
-
此时,如果想使用单机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"
解除他的注释状态。
-
此时就可以执行如下代码启动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
-
以下是伪分布式的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"
-
按 esc 之后输入 :wq 退出并保存编辑。
-
之后打开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>
-
设置完成之后,保存并退出编辑。
-
之后切换到对应的hadoop文件夹下启动hdfs集群:
cd ~/hadoop-2.10.1 ./sbin/start-dfs.sh # 使用jps查看对应的namenode以及datanode是否启动成功 jps
-
hdfs伪分布式集群启动成功之后,切换到对应的Hbase文件夹下:
cd ~/hbase-2.3.7 ./bin/start-hbase.sh ./bin/hbase shell # 进入到hbase shell界面之后还是进行测试是否可以正常进行操作 >create 'tablename','info' >list
报错总结
-
变量名报错:HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_USER:无效的变量名
解决方法:
打开 ~/hbase-2.3.7/conf (目录根据自己的目录进行修改)目录下的hbase-env.sh文件中进行编辑:
找到最后几行的如下代码:
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=“true”
解除他的注释状态。
-
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
-
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
-
在执行 ./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文件有时候也会出现权限问题。所以建议解压到主目录或者改变解压后文件的拥有者为当前用户。
其他的问题欢迎提出,笔者努力解决
以上是关于单机版以及伪分布式版Hbase配置及常见问题解决办法的主要内容,如果未能解决你的问题,请参考以下文章
HBase入门基础教程 HBase之单机模式与伪分布式模式安装