环境配置
系统:windows10
IDE: Eclipse
hadoop: 3.3.4
hbase: 2.4.15
java: 17
1. Windows安装Cygwin
-
下载Cygwin安装包:http://cygwin.com/install.html
-
设置Cygwin的安装目录到环境变量PATH
-
验证,
cygcheck -c cygwin
, 安装成功的话应该可以得到以下信息
2. 安装ProtocolBuffers
更详细的安装步骤参考此篇文章
-
下载安装包:https://github.com/protocolbuffers/protobuf/releases。
-
解压安装包到相应的位置
-
添加到系统变量PATH
-
验证:protoc --version
3. 启动zookeeper
这一步不一定需要,因为hbase有内部集成的,但是我本地启动hbase的时候老是失败,所以我在自己的虚机里面启了一个zookeeper,启动hbase的时候就使用这个外部的zk。可参考这篇文章搭建zookepper
4. 搭建Hadoop环境
因为hbase依赖hadoop环境,所以事先要搭建好本地hadoop环境,有两种方式:
- 自己编译hadoop源码,可参考这篇文章,里面讲的非常详细。几经周折,我的windows环境始终是问题,始终编译不成功,最后只能放弃。
- 这篇文章则不用自己编译,我也是使用这种方法搭建起来的hadoop环境。需要注意的是以下几点:
- 文中提到的
winutils
,虽然文中给的地址最新是3.2.2,但我用的是3.3.4,3.3.4使用3.2.2的winutils也是没有问题的。 - 如果使用这种方式在文中的第7步之后还需要执行
hadoop namenode -format
,不然namenode会启动失败。 - hadoop中会使用java环境,如果是高版本的话会报不兼容的错,我的电脑是java17,你可以下载java8的安装包安装后,修改
%HADOOP_HOME%\etc\hadoop\hadoop-env.cmd
这个文件,大概在第25行,将JAVA_HOME
换成java8的安装目录,这样就不用换你电脑的java环境 - 跟着步骤如果能成功启动hadoop的话证明你的环境已经成功搭建,如果失败了一定要解决失败的问题,不然hbase也是启动不了的。
- 文中提到的
不管用的是哪一种方法,在启动hbase的时候都不需要启动hadoop,只要安装好就可以了。
5. 编译Hbase源码
-
下载源码: https://github.com/apache/hbase。源码下载后可以切换分支,本文用的2.4.15版本
-
编译:mvn package -DskipTests,如果java是11以上的版本则
mvn package -DskipTests -Dhadoop.profile=3.0
,我的电脑是java17,所以用的是后者 -
导入IDE,本文用的是Eclipse
-
修改
hbase/conf/hbase-site.xml
<configuration> <property> <name>hbase.defaults.for.version</name> <value>2.4.15</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.tmp.dir</name> <value>./tmp</value> </property> <property> <name>hbase.rootdir</name> <!-- 这个路径可以自己随意配置,方便学习的时候好找 --> <value>C:\Software\hadoop\data\datanode</value> </property> <!-- 这个属性一定要配,不然启动HMaster的时候会因没有权限写入而失败 --> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> <!-- 我用的是外部的zookepper,所以配的是自己环境的。hbase内部集成有,但是在启动的时候老是失败,所以就用了外部的 --> <property> <name>hbase.zookeeper.quorum</name> <value>zk.host</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2182</value> </property> </configuration>
这些工作准备完之后就可以开始启动源码了。
6. 启动HRegionServer
本文先启动HRegionServer是因为HMaster启动的时候会收集HRegionServer的信息,不然在becomeActiveMaster的过程中会不断等待,
好了,开始启动
- 按照前面4步配置好之后启动,出现下面的信息则证明启动成功了
7. 启动HMaster
如果你能成功启动HRegionServer那就容易了,直接复制HRegionServer的配置,然后做下面的修改就可以了
配置好后启HMaster,成功启动的话应该是这样的:
下面是我遇到的问题,供参考
- 如果你遇到
Failed to create or set permission on staging directory file
错误,如图:
则只要以admin身份启动你的IDE即可,如图
- 如果你遇到
Please check the config value of 'hbase.wal.dir' and ensure it points to a FileSystem mount that has suitable capabilities for output streams.
或者java.io.IOException: cannot get log writer
,如图:
请确保你的/conf/hbase-site.xml
配置了这个属性
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
8. 启动HShell客户端
对于shell客户端的启动:
- 如果你的hbase版本在2.4.0之前可以跟着这篇文章最后面关于HShell的配置启动
- 但如果是2.4.0版本之后,因为HBASE-14067的改动,启动后会报如下错误:
我的版本是2.4.15就报了上述错误,在网上查了很多文章,大多数都是说降版本就可以解决,但是我不想降,本来学习嘛,有困难就要迎难而上,最后经过一番碰壁后瞎猫捉耗子给蒙对了,具体步骤如下:
上面的配置都配置好后启动HShell,这个过程会有点长,成功的话应该会出现下面的界面
最后,为了验证启动的三个service是否能正常工作,我们在HShell的命令行输入create 'Lanna_Table','Lanna_Info','Lanna_Data'
,如下图:
在浏览器访问http://localhost:16010/,即可看到新表创建成功了。
第一次接触大数据相关的知识,折腾了三个晚上终于搭好了本地环境,喜极而泣啊!!!
转载:https://blog.csdn.net/Lanna_w/article/details/128259487