在Windows上装hadoop生态组件是一件麻烦事,但是HBase的安装却可以非常简单。目前主流的安装文档都需要装Hadoop,这里介绍一个简单的单机版安装方法,适合用来学习。
1. 下载HBASE,以及Hadoop模拟工具winutils.exe
下载地址都不发了,还是很容易找到的,而winutils.exe是用来模拟Hadoop的,只要有这个文件就可以了,这个也可以找得到,例如这个博客下面的留言就有。注意要把winutils.exe放在bin目录里。后面HADOOP_HOME不要指向bin,而是指向bin的上一层。
最后需要注意的是HBASE和Hadoop的版本对应关系,也很容找到,或者可以看这里。我用的是HBASE-1.2.6和Hadoop-2.5.1
2. 修改两个配置:hbase.cmd和hbase-site.xml
前者是环境信息,加入JAVA_HOME, HADOOP_HOME, HBASE_MANAGES_ZK。 前两个是Java地址和Hadoop地址,路径可以直接用\ ,也无需配到环境变量里。例如下面的:
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_121
set HADOOP_HOME=D:\hadoop-2.7.1
set HBASE_MANAGES_ZK=false
后者是HBASE服务的信息,这里尽量少配,其实甚至数据目录可以不配,它会自己找用户目录某个位置存。配了5个:
<property>
<name>hbase.tmp.dir</name>
<value>/D:/hbase-1.2.6/data/tmp</value>
</property>
<!-- hdfs URI 要使用localhost, 不能使用127.0.0.1 -->
<property>
<name>hbase.rootdir</name>
<value>file:///D:/hbase-1.2.6/root</value>
</property>
<!-- Windows不支持true, 只能填写false,设置成false之后, HBase将启动内置Zookeeper
填写true => error message: This is not implemented yet. Stay tuned. -->
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/D:/hbase-1.2.6/data/zoo</value>
</property>
3. 启动HBASE:运行start-hbase.cmd
执行以后,会弹出一个框,分别启动HMaster,RegionServer,Zookeeper三个服务,大概也要10多秒才能启动好。用jps查看,只有一个HMaster进程,说明另外两个服务并不是独立启动的,也就是伪分布式。
关闭HBASE直接运行stop-hbase.cmd即可,原来弹出的命令行会不断打印出关闭信息。
4. 验证安装成功
可以通过web查看HBASE信息,http://localhost:16010/master-status, 即可看到
另外通过shell操作一下HBASE,命令:hbase.cmd shell
5. 踩坑处理
本来上面三步在我自己电脑就成功了,但是我在某个机房里hbase-site配成那样无法启动HBASE,错误显示HMaster无法bind端口。但是一看IP明显获取不对,于是找了很半天,找到了2个配置来解决,显然是指定HMaster和RegionServer的绑定IP:
<property>
<name>hbase.master.ipc.address</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.regionserver.ipc.address</name>
<value>0.0.0.0</value>
</property>
但是依旧报了另外的错误,大意是RegionServer上报HMaster状态时候,没连上HMaster。这不合理啊不是已经指定了HMaster启动地址了吗,但是错误信息里显示RegionServer去连的IP确又是个错误的IP。后来又找了半天,抱着尝试的心态试了一下居然成功了:
<property>
<name>hbase.master.hostname</name>
<value>localhost</value>
</property>
<property>
<name>hbase.regionserver.hostname</name>
<value>localhost</value>
</property>
从查到的各种资料综合看,应该是HBASE启动获取主机名和IP地址问题,两个组件因此要配4个项,也许是1.2.6版本的问题吧。
参考资料:
http://www.voidcn.com/article/p-mvlopatx-bus.html
https://www.jianshu.com/p/dae6337790da
https://blog.csdn.net/l1028386804/article/details/88696276
http://www.voidcn.com/article/p-mvlopatx-bus.html