小言_互联网的博客

【HBase】【一】windows搭建源码开发环境

362人阅读  评论(0)

环境配置

系统:windows10

IDE: Eclipse

hadoop: 3.3.4

hbase: 2.4.15

java: 17

1. Windows安装Cygwin

  1. 下载Cygwin安装包:http://cygwin.com/install.html

  2. 安装Cygwin,CMake、zlib、Python都可以用Cygwin安装,详细步骤可参考这篇文章

  3. 设置Cygwin的安装目录到环境变量PATH

  4. 验证,cygcheck -c cygwin, 安装成功的话应该可以得到以下信息

2. 安装ProtocolBuffers

更详细的安装步骤参考此篇文章

  1. 下载安装包:https://github.com/protocolbuffers/protobuf/releases。

  2. 解压安装包到相应的位置

  3. 添加到系统变量PATH

  4. 验证:protoc --version

3. 启动zookeeper

这一步不一定需要,因为hbase有内部集成的,但是我本地启动hbase的时候老是失败,所以我在自己的虚机里面启了一个zookeeper,启动hbase的时候就使用这个外部的zk。可参考这篇文章搭建zookepper

4. 搭建Hadoop环境

因为hbase依赖hadoop环境,所以事先要搭建好本地hadoop环境,有两种方式:

  1. 自己编译hadoop源码,可参考这篇文章,里面讲的非常详细。几经周折,我的windows环境始终是问题,始终编译不成功,最后只能放弃。
  2. 这篇文章则不用自己编译,我也是使用这种方法搭建起来的hadoop环境。需要注意的是以下几点:
    1. 文中提到的winutils,虽然文中给的地址最新是3.2.2,但我用的是3.3.4,3.3.4使用3.2.2的winutils也是没有问题的。
    2. 如果使用这种方式在文中的第7步之后还需要执行hadoop namenode -format,不然namenode会启动失败。
    3. hadoop中会使用java环境,如果是高版本的话会报不兼容的错,我的电脑是java17,你可以下载java8的安装包安装后,修改%HADOOP_HOME%\etc\hadoop\hadoop-env.cmd这个文件,大概在第25行,将JAVA_HOME换成java8的安装目录,这样就不用换你电脑的java环境
    4. 跟着步骤如果能成功启动hadoop的话证明你的环境已经成功搭建,如果失败了一定要解决失败的问题,不然hbase也是启动不了的。

不管用的是哪一种方法,在启动hbase的时候都不需要启动hadoop,只要安装好就可以了。

5. 编译Hbase源码

  1. 下载源码: https://github.com/apache/hbase。源码下载后可以切换分支,本文用的2.4.15版本

  2. 编译:mvn package -DskipTests,如果java是11以上的版本则mvn package -DskipTests -Dhadoop.profile=3.0,我的电脑是java17,所以用的是后者

  3. 导入IDE,本文用的是Eclipse

  4. 修改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的过程中会不断等待,

好了,开始启动

  1. 按照前面4步配置好之后启动,出现下面的信息则证明启动成功了

7. 启动HMaster

如果你能成功启动HRegionServer那就容易了,直接复制HRegionServer的配置,然后做下面的修改就可以了

配置好后启HMaster,成功启动的话应该是这样的:

下面是我遇到的问题,供参考

  1. 如果你遇到Failed to create or set permission on staging directory file错误,如图:

则只要以admin身份启动你的IDE即可,如图

  1. 如果你遇到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客户端的启动:

  1. 如果你的hbase版本在2.4.0之前可以跟着这篇文章最后面关于HShell的配置启动
  2. 但如果是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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场