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

news2025/1/12 22:55:09

目录

  • 环境配置
  • 1. Windows安装Cygwin
  • 2. 安装ProtocolBuffers
  • 3. 启动zookeeper
  • 4. 搭建Hadoop环境
  • 5. 编译Hbase源码
  • 6. 启动HRegionServer
  • 7. 启动HMaster
  • 8. 启动HShell客户端

环境配置

系统: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/,即可看到新表创建成功了。

在这里插入图片描述

第一次接触大数据相关的知识,折腾了三个晚上终于搭好了本地环境,喜极而泣啊!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytest学习——pytest插件的7种用法

1.pytest-repeat 重复跑 安装包 pip install pytest-repeat第一种用法&#xff1a; 装饰器 pytest.mark.repeat(次数) 示例代码 import pytest pytest.mark.repeat(5) def test_001(): assert 12 if __name__ __main__: pytest.main([-sv,__file__])第二种用法&#xff1a…

[附源码]Python计算机毕业设计SSM基于数据挖掘的毕业生离校信息系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 Ma…

基于牛顿方法在直流微电网潮流研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;本科计算机专业&#xff0c;研究生电气学硕…

拆解理想汽车Q3财报:收入增速继续下滑,年内两次更换首席技术官

12月9日&#xff0c;理想汽车&#xff08;NASDAQ:LI、HK:02015&#xff09;发布截至2022年9月30日止季度&#xff08;即2022年第三季度&#xff09;的未经审计财务业绩。财报显示&#xff0c;理想汽车2022年第三季度的收入为93.42亿元&#xff0c;同比增加20.2%&#xff0c;低于…

(九)Vue之侦听/监听/监视属性

文章目录普通实现监视属性实现Vue里配置监视属性Vue外配置监视属性配置属性immediate配置deep&#xff08;深度监视&#xff09;配置普通监视监视多级结构中某个属性的变化监视多级结构中所有属性的变化监视属性简写watch配置简写$watch配置简写监视属性vs计算属性Vue学习目录上…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java农产品推广平台98966

对于计算机专业的学生最头疼的就是临近毕业时的毕业设计,对于如何选题,技术选型等这些问题,难道了大部分人,确实,还没毕业的学生对于这些问题还比较陌生,只有学习的理论知识,没有实战经验怎么能独自完成毕业设计这一系列的流程,今天我们就聊聊如何快速应对这一难题. 比较容易的…

ITK 形态学中的开运算和闭运算 腐蚀 膨胀

一. 图像形态学处理 —— 膨胀和腐蚀 腐蚀在二值图像的基础上做“收缩”或“细化”操作; 膨胀在二值图像的基础上做“加长”或“变粗”的操作。 什么是二值图像呢&#xff1f;把一幅图片看做成一个二维的数组&#xff0c;那么二值图像是一个只有0和1的逻辑数组&#xff0c;我们…

vertical-align属性

vertical-align属性 CSS的vertical-align属性使用场景&#xff0c;经常用于设置图片或者表单(行内块元素)和文字垂直对齐 用于设置一个元素的垂直对齐方式&#xff0c;但是它只针对于行内元素或者行内块元素有效 源代码 语法&#xff1a; vertical-align { baseline | top | …

序——在linux下学习C语言

目录 在Linux下学习C语言的前提。。。 一、Linux的一些常见命令 二、Linux中VI和VIM的一些命令操作 1、在VIM中控制光标 2、vim中的插入模式 3、退出插入模式的方法 4、在VIM模式中的删除命令 5、撤销命令 6、 粘贴和拷贝命令 7、查看文件信息和寻找另一半括号 8、缩…

十万部冷知识:日本国歌为什么像哀乐?

大家在世界杯上看日本队比赛的时候&#xff0c;有没有感觉他们的国歌跟哀乐似的&#xff0c;听着就跟在办葬礼一样。其实&#xff0c;这还真不是像与不像的问题&#xff0c;而是因为它确实是一首挽歌。 这首歌叫《君之代》&#xff0c;出自于《古今和歌集》&#xff0c;是在天皇…

关于Servlet编程(1)

1.Servlet编程中常见网页错误 404错误 : 访问不存在 一般都是路径出错. 405错误 : 请求方法不允许 使用访问的方法有误 只书写了接受Get方法的代码.却使用POST方法访问. 代码中忘记注释super()方法也会返回405 因为源码是直接返回405的 这里展示的两段代码都会引发上图的40…

[附源码]计算机毕业设计健康医疗体检Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

powershell实现发送win10系统通知

powershell实现发送win10系统通知 一、实现方式是使用系统自带的类NotifyIcon 关于Notify类的属性和使用方法可以查阅NotifyIcon官方文档&#xff0c;这主要讲一下用到的几个变量和方法。 1. Icon Icon只支持 .ico格式的图标&#xff0c;属于自定义图标&#xff0c;只有当 Ba…

PLC、运动控制卡、运动控制器,傻傻分不清

前言 最近有不少做PLC开发的小伙伴&#xff0c;在一些咨询运动控制卡、运动控制器相关的问题&#xff0c;很多人不清楚它们之间有什么区别和联系&#xff0c;今天跟大家就PLC、运动控制卡、运动控制器区别及选型做个分享。 背景 随着工业技术的发展&#xff0c;工业机器人应…

怎么调整视频画布?这些技巧你知道吗?

小伙伴们平时在制作视频时是否有遇到过这种情况&#xff1a;从网站下载的视频素材画面过大&#xff0c;两边还带有黑边&#xff0c;插入到自己的视频后&#xff0c;显得视频整体上很突兀&#xff0c;美观度也受到影响&#xff0c;没有达到自己预期的效果。 如果你们也有这样的烦…

什么是CodeArts?

什么是CodeArts 软件开发生产线&#xff08;CodeArts&#xff09;原名“软件开发平台&#xff08;DevCloud&#xff09;”是集华为近30年研发实践、前沿研发理念、先进研发工具为一体的一站式云端DevOps平台&#xff0c;面向开发者提供的云服务&#xff0c;即开即用&#xff0…

从开环到闭环的旅程-CoCube

差动驱动机器人轨迹-CoCube 迷宫逃离的问题-CoCube 自由运动和环境限制-CoCube 001&#xff0c;自由运动 002&#xff0c;引出环境 003&#xff0c;对比差异 ROS机器人从起点到终点&#xff08;四&#xff09;蓝桥云实践复现 cocube自由运动机器人也需要一个目标&#xff…

JSON数据交互方式

目录 一、JSON的特点 二、前后端开发推荐使用工具ApiPost 扩展&#xff1a;xml与json的区别 三、JSON语法格式 语法注意点&#xff1a; 四、在html中定义json数据类型 1.单个实体——>JSON数据 2.数组实体——>JSON数据 3.集合实体——>JSON数据 五、JSON数据…

Redis的缓存穿透

文章目录1. 缓存穿透的理解2. 常见的解决方案有两种&#xff1a;3. 布隆过滤&#xff1a;4. 编码解决查询的缓存穿透问题&#xff1a;1. 缓存穿透的理解 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到…

安科瑞企业微电网AcrelEMS-MED医院能效管理平台应用分析

安科瑞 李亚俊 平台概述 AcrelEMS-MED医院能效管理平台依据《医疗建筑电气设计规范》《绿色医院建筑评价标准》、《医院建筑能耗监管系统建设技术导则》等行业规范建设&#xff0c;由电力监控及能效管理系统组成&#xff0c;涵盖了医院中压变配电系统、应急电源、隔离电源、照…