Mac下Hbase伪分布安装和使用,machbase分布安装
Hbase是一个分布式的、面向列的开源数据库,是构建在HDFS分布式文件系统上的分布式存储系统。
1.下载安装
官网下载地址apache.fayea.com/hbase/,这里选择1.1.9版本hbase-1.1.9-bin.tar.gz。
1.1 abase-site.xml
解压文件到文件夹,进入/conf文件夹,打开hbase-site.xml,加入以下配置:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///Users/kangkang/hadoop/hbase-1.1.9</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/Users/kangkang/hadoop/hbase-1.1.9/zookeeper</value>
</property>
<property>
<name>hbase.table.sanity.checks</name>
<value>false</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>
1.2 hbase-env.sh
编辑/conf文件夹下的hbase-env.sh文件,修改以下的配置(可能是注释掉的,需把注释去掉):
集群pid存放目录配置:
# The directory where pid files are stored. /tmp by default.
export HBASE_PID_DIR=/Users/kangkang/hadoop/pids
Zookeeper管理界面激活:
# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=true
Jdk配置(1.1.9版本对应的jdk版本要求是1.7以上):
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
安装配置完毕。
2.启动Hbase
命令:bin/start-hbase.sh
进入shell操作hbase命令:bin/hbase shell,进入shell命令行后可以通过shell命令操作hbase,实现对数据的操作。
3.关闭Hbase
命令:bin/stop-hbase.sh
4.遇到的问题
4.1在启动Hbase之后,在浏览器中输入localhost:60010不能显示Hbase的运行状态
解决办法:
conf->hbase-site.xml配置中添加以下配置:
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
在conf->hbase-env.sh中的配置
#Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=true
设置为true,默认是注释掉的,把注释去掉即可,调试可以通过Zookeeper对象来管理Hbase自己的实例。
4.2 在启动的时候提示以下警告
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
错误表示在Java8版本中MaxPermSize=128m;这个配置信息已经被移除了,所以不需要再配置,但是配置了并不报错,而是警告。
解决办法:在conf->hbase-env.sh中更改配置(表示只有在JDK7中需要)
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+ -XX:MaxPermSize=128m
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
将配置中的两行注释即可。结果:
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+ -XX:MaxPermSize=128m
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
4.3 使用Phoenix操作Hbase时报错
1.在使用Phoenix进行Hbase数据库的操作时,出现如下错误,错误显示了找不到ImmutableMap这个类。
java.lang.NullPointerException
at vbap_hbase_test.hbase.ConnHbase.main(ConnHbase.java:29)
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
at org.apache.phoenix.util.ReadOnlyProps.<init>(ReadOnlyProps.java:68)
at org.apache.phoenix.util.ReadOnlyProps.<clinit>(ReadOnlyProps.java:47)
at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.<clinit>(PhoenixEmbeddedDriver.java:82)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at vbap_hbase_test.hbase.ConnHbase.main(ConnHbase.java:15)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ImmutableMap
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
很奇怪,而我在Maven依赖里面看到的却有这个类。但是却不能点进这个类去看具体的内容,而且报错:
invalid LOC header
于是网上搜了一下,将maven库中的该jar包删除,重新让maven下载一下就可以了。
具体操作:
1.删除com/google文件夹下的所有内容。
2.Maven—>update project