Windows安装HBase,本地模式,无需HDFS

本文介绍了一种在Windows环境下简单安装HBase的方法,适用于学习和测试场景。文章详细介绍了所需软件及配置步骤,并提供了常见问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Windows上装hadoop生态组件是一件麻烦事,但是HBase的安装却可以非常简单。目前主流的安装文档都需要装Hadoop,这里介绍一个简单的单机版安装方法,适合用来学习。

1. 下载HBASE,以及Hadoop模拟工具winutils.exe

HBASE地址自己搜索吧。winutils.exe是用来模拟Hadoop的,只要有这个文件就可以了,这个也可以找得到,例如这个博客下面的留言就有。或者

GitHub - cdarlint/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows

注意要把winutils.exe和dll放在bin目录里。后面HADOOP_HOME不要指向bin,而是指向bin的上一层。

最后需要注意的是HBASE和Hadoop的版本对应关系,也很容找到,或者可以看这里。我用的是HBASE-1.2.6 和 Hadoop-2.7.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个项,个人猜测是HBASE的版本问题吧。

参考资料:

http://www.voidcn.com/article/p-mvlopatx-bus.html

Windows搭建HBase 2.0.2 - 简书

HBase之——部署经验与坑总结_冰 河的博客-优快云博客

http://www.voidcn.com/article/p-mvlopatx-bus.html

### 解决HBase在Hadoop环境中设置HDFS安全模式时遇到的连接拒绝异常问题 当面对HBase启动过程中由于HDFS处于安全模式而导致`Connection refused`异常的情况,可以从以下几个方面着手解决问题。 #### 配置一致性校验 确保HBase和Hadoop配置文件之间的端口一致。如果发现`core-site.xml`中定义的NameNode通信端口与`hbase-site.xml`内的设定不符,则应统一这两个文件中的端口号[^1]。对于大多数情况,默认情况下Hadoop NameNode监听的是8020端口而非9000;因此建议确认并调整至正确值。 #### 版本兼容性检查 考虑到所使用的Hadoop版本为2.7.4以及HBase版本为1.6,在安装之初就应当注意两者间的兼容关系。尽管这可能并非直接引发当前错误的主要因素,但仍需保证二者能够协同工作以避免潜在冲突[^2]。 #### 主机名解析验证 针对网络层面可能出现的问题,务必核实集群内部各节点间能否通过主机名相互访问,并且这些主机名应在所有机器上的`/etc/hosts`文件中有正确的映射记录。此外,还需检验SSH无密码登录功能是否正常运作,因为这是分布式计算框架之间交互的基础条件之一[^3][^4]。 #### 安全模式处理策略 一旦确定问题是源于HDFS的安全模式状态阻止了外部请求接入,则可以通过如下命令让Namenode退出该保护机制: ```bash $ hdfs dfsadmin -safemode leave ``` 此操作会解除对整个文件系统的写入限制,允许其他服务组件(如HBase)建立必要的联系[^5]。 #### 日志审查指导 最后但同样重要的一点是深入研究相关日志信息来获取更多线索。通常来说,详细的报错提示可以帮助更精准地定位故障根源所在。关注HMaster的日志输出,特别是那些涉及RPC调用失败的部分,往往能提供有价值的诊断依据。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值