Hadoop安装Hbase启动失败报错解决方法

文章详细介绍了在HBase运行中遇到的常见错误及其解决方法,包括权限异常AccessControlException的三种解决策略,HMaster无法成为activemaster的网络连接问题,以及ZooKeeper连接丢失的故障排查,强调了时间同步和正确配置的重要性。

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

先进入hbase文件目录里看日志文件看看报什么错再具体解决:

vim /opt/module/hbase-1.3.3/logs/hbase-root-master-hadoop-single.log

 1.报错org.apache.hadoop.security.AccessControlException: Permission denied: user异常解决方法

1、第一种

在hdfs的配置文件中,将dfs.permissions修改为False(不推荐)

2、第二种

执行这样的操作,使用hdfs用户(最高权限)

hadoop dfs -mkdir -p /user/root(如果路径存在可不执行)

hadoop dfs -chown root:hdfs /user/root(如果所属用户一致可不执行)
hadoop dfs -chmod 777 /user/root(如果执行上面操作已解决可不执行,我没有走)

3.第三种 

vim /etc/profile

 

添加:export HADOOP_USER_NAME=hdfs(hdfs为最高权限)
source /etc/profile(记得执行,以保证立即生效)

也可以执行 sed -i '$a export HADOOP_USER_NAME=hdfs' ,记得也要source一下

注意:root可以是其他的用户(路径),如报错是/user/xxx,将root换成xxx即可。

第二种与第三种区别

第二种    第三种
host    全集群的hosts都可以访问没有问题    只有做了环境变量配置的主机可用
root用户调用资源    root用户可以调用hdfs资源    root不能调用资源,如果计算是出现需要使用root用户调用的资源一样会报错
root执行hdfs命令    不能    能
 

2.FATAL [hadoop1:16000.activeMasterManager] master.HMaster: Failed to become active master
java.net.ConnectException: Call From hadoop-single/192.168.136.111 to hadoop-single:9000解决方法

 

错误分析:
从上面的日志可以看出,在连接hadoop-single:8020时出错,我们知道8020是hdfs的默认端口,但是我们在配置hadoop集群时在core-site.xml中将hdfs的默认端口改为了9000:

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop-single:9000/</value>
</property>

再观察我们的hbase-site.xml文件:

<configuration>
    <!-- 指定hbase在HDFS上存储的路径 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop-single/hbase</value>
    </property>
</configuration>

不难发现,这时候我们并没有指定hdfs的端口,因此,在hbase启动后它会去找hdfs的默认端口8020,于是就导致了上面的错误。

解决方案:
在配置hbase.rootdir属性时显式指定hdfs的端口为9000,配置文件修改如下:

<configuration>
    <!-- 指定hbase在HDFS上存储的路径 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop-single:9000/hbase</value>
    </property>
</configuration>

只要你在这个节点启动了hbase,那么这个节点就默认为master节点

3.INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server sdw2/192.168.10.202:2181. Will not attempt to authenticate using SASL
 

解决方法:

1、同步hbase集群和ZooKeeper集群主机的时间,确保误差在30秒以内。

2、关闭ipv6,并修改/etc/hosts,注释掉以"::1"开头的那行代码

 产生错误的原因:zookeeper 链接信息过期了

解决办法:
进入zookeeper 删除hbase (rmr /hbase )重启zookeeper即可

具体步骤: 1、停止hbase(./stop-hbase.sh)

                   2、运行如下代码

                         hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair

                   3、运行如下代码

                        /opt/module/hadoop/app/zookeeper/bin/zkCli.sh

                   4、使用  ls / 来扫描zookeeper中的数据

                   5、使用 rmr / hbase删除zookeeper中的hbase数据

                   6、重新启动hbase即可
 

 

 

主要错误:ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster. 

Caused by: org.apache.hadoop.hbase.ZooKeeperConnectionException: master:160000x0, quorum=hadoop1:2181,hadoop2:2181,hadoop3:2181, baseZNode=/hbase Unexpected KeeperException creating base node

Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase

解决方法:说明Hbase没有连接上Zookeeper,我们知道,HBase可以使用内置的Zookeeper,也可以使用外部的Zookeeper,通过在配置文件hbase-env.sh将 export HBASE_MANAGES_ZK 属性设置为false ,设置为外部的Zookeeper(这个没有问题)

export HBASE_MANAGES_ZK=false

 所有的节点时间误差不能大于30s,需要同步,安装时hadoop和hbase应该使用同一套域名。/etc/hosts中映射必须要是自己主节点的namenode的名字与hbase和hadoop文件配置中保存一致。

 

 

<think>好的,我现在需要帮助用户了解HBaseHadoop环境下的安装与配置方法。首先,我需要回顾一下用户提供的引用资料,确保信息准确且版本兼容性正确。 根据引用[1]、[2]和[3],HBase安装必须注意与Hadoop版本的兼容性。用户提到他们参考的教程中使用了Hadoop 3.3.4和HBase 2.5.5,这是一个兼容的组合。首先,我应该确认用户是否已经安装了正确版本的Hadoop,并配置好了HDFS和YARN。如果用户是新手,可能需要详细步骤,比如如何下载和解压软件包,如何设置环境变量。 接下来,引用[3]特别提到即使单节点也需要配置SSH免密登录,这点很重要。我需要确保用户生成SSH密钥并配置到authorized_keys中,这样HadoopHBase才能顺利启动。这部分可能对于新手来说容易忽略,所以需要详细说明步骤。 然后是Hadoop的配置,引用[2]中的core-site.xml、hdfs-site.xml和mapred-site.xml的配置示例。需要指导用户正确编辑这些文件,特别是HDFS的地址和路径设置。对于单机模式,可能需要简化配置,但分布式模式则需要更多细节,比如副本数设置。 在HBase的配置部分,引用[4]提到需要注释掉hbase-env.sh中的某些行以避免错误。需要指出具体哪些行需要注释,通常是关于JAVA_HOME和HBASE_MANAGES_ZK的设置。同时,hbase-site.xml的配置需要指向Hadoop的HDFS作为存储,所以需要设置hbase.rootdir和集群模式。 最后,启动顺序和验证步骤是关键。用户需要按顺序启动Hadoop,然后启动HBase,并通过jps命令检查进程是否正常运行。还要提到通过HBase Shell执行基本命令来验证安装是否成功。 可能遇到的问题包括版本不兼容、SSH配置错误、配置文件格式错误或路径不正确。需要提醒用户仔细检查每一步,特别是环境变量和文件路径是否正确。此外,建议用户查阅官方文档或社区资源,如引用[3]中的链接,以解决特定版本的问题。 现在需要将以上思考整理成结构清晰的步骤,确保用户能逐步跟随操作,同时强调版本兼容性和关键配置点。最后生成相关问题,帮助用户深入理解可能遇到的后续问题。</think>### HBaseHadoop环境下的安装与配置方法 #### 一、版本兼容性验证 1. **确认HadoopHBase版本** HBase依赖Hadoop的HDFS和YARN,必须选择兼容的版本组合。例如: - Hadoop 3.3.4 + HBase 2.5.5(兼容) - 具体版本对应关系可参考[官方文档](https://hbase.apache.org/book.html#hadoop)或社区资源[^3]。 2. **环境依赖** - 安装JDK 8或更高版本,并配置`JAVA_HOME`环境变量[^2][^4]。 - 确保所有节点时间同步(NTP服务)。 --- #### 二、Hadoop基础配置 1. **SSH免密登录配置** 即使是单节点,也需配置SSH密钥: ```bash ssh-keygen -t rsa # 生成密钥 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 添加公钥 ssh localhost # 测试免密登录 ``` 2. **Hadoop核心配置** 编辑`$HADOOP_HOME/etc/hadoop/`下的配置文件: - **core-site.xml**(定义HDFS地址): ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> ``` - **hdfs-site.xml**(定义副本数,单机设为1): ```xml <property> <name>dfs.replication</name> <value>1</value> </property> ``` - **mapred-site.xml**(启用YARN): ```xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> ``` 3. **启动Hadoop** ```bash hadoop namenode -format # 格式化HDFS start-dfs.sh && start-yarn.sh # 启动服务 jps # 验证进程(应有NameNode、DataNode等) ``` --- #### 三、HBase配置与启动 1. **环境变量配置** 编辑`$HBASE_HOME/conf/hbase-env.sh`: ```bash export JAVA_HOME=/export/server/jdk # 取消注释并修改路径[^4] export HBASE_MANAGES_ZK=true # 使用内置ZooKeeper ``` 2. **核心配置文件** 编辑`$HBASE_HOME/conf/hbase-site.xml`: ```xml <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> # 指向HDFS路径 </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> # 分布式模式 </property> </configuration> ``` 3. **启动HBase** ```bash start-hbase.sh # 启动服务 jps # 验证进程(应有HMaster、HRegionServer) ``` --- #### 四、验证安装 1. **访问HBase Shell** ```bash hbase shell > create 'test_table', 'cf' # 创建测试表 > list # 查看表列表 ``` 2. **Web UI检查** - HBase Master UI:`http://localhost:16010` - HDFS Web UI:`http://localhost:9870` --- #### 常见问题 - **版本不兼容**:若启动报错,检查HadoopHBase版本是否匹配[^1][^3]。 - **SSH配置失败**:确保`~/.ssh/authorized_keys`权限为600。 - **端口冲突**:确认HadoopHBase端口未被占用(如9000、16010)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值