Hadoop分布式集群环境搭建二

xxx could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.

在操作hive表的时候,报出了这样一个错误
在这里插入图片描述

查阅资料后说,是hdfs的容量不足了导致的,可是自己的虚拟机容量几十G只用了十几G,不可能不足啊。然后根据网上各种方法各种删/tmp目录各种格式化重启之后还是不行,不管是通过访问localhost:50070页面还是通过hadoop dfsadmin -report命令都发现显示容量为0,更诡异的是显示Configured Capacity: 0 (0 B),不是容量用完了,而是根本就没有容量。
在这里插入图片描述

尝试put一个文件到hdfs上,报错“xxx could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.” 跟hive报的错一模一样。

愚钝如我,n久之后才想起来查看hadoop的日志,在密密麻麻的日志中注意到这样的信息“Access denied for user kevin. Superuser privilege is required” 这个是hdfs的安全检查检查到你的用户权限不足导致的,hdfs的用户权限是与本地系统的用户权限绑定在一起的。

有几种方法可以解决这个问题,由于我的是实验环境,所以选择了最暴力的一种,也就是将hdfs的安全检查关掉。(但是这种做法极其不安全!!除练习实验外强烈不建议这样做!!!)
在hdfs-site.xml中加入

<property>
         <name>dfs.permissions.enabled</name>
         <value>false</value>
</property>

重启hadoop,可以看到正常了
在这里插入图片描述

“org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool (Datanode Uuid unassigned) service to APPlog01/192.168.x.x:9000. Exiting. ”

今天为了解决HBase的问题,格式化了NameNode,谁知道重启hadoop的时候突然发现datanode启动不起来了,查看日志发现在这里插入图片描述

其实datanode和namenode都保存有一个clusterID,当hadoop启动时,datanode就会进行匹配检查,当两者不匹配时,就会报这个错并且datanode进程挂掉。当格式化namenode之后,namenode会产生一个新的clusterID,这也就导致了两个clusterID不一样。

解决方法:首先查看你的hadoop hdfs-site.xml文件中dfs.namenode.name.dir这个属性配置的目录,以及 dfs.datanode.data.dir 这个属性配置的目录,到namenode的这个目录下的current/VERSION文件里面,找到clusterID,然后复制粘贴到datanode对应文件就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值