解决org.apache.hadoop.ipc.RenoteException(java.io.IOException)

前言:用VMware搭了一个spark 集群环境,练习spark-shell 因为懒一直没关虚拟机,一直卡到玩不了了,没关闭spark、hadoop集群,直接干掉了 虚拟机,

然后 网卡炸了,各种修修补补,master节点死活ping不通 子节点.......

于是重新搞个 虚拟机配置为 master,然后开启了本次踩坑之路

 

修虚拟机的网络,此环节省略,直接重建虚拟机,重启大法好 (因为花了3天没修好,吐了...)

https://blog.csdn.net/hzp666/article/details/109453172

 

 

部署hadoop集群以后,集群显示启动成功。

但是 在启动spark-shell时候报错,

org.apache.hadoop.ipc.RenoteException(java.io.IOException) file:************************************************can only write

使用  hdfs dfsadmin -report   命令检查 hdfs 存储,发现是 hdfs 存储问题,   

dfs启动后 所有储存节点 大小都是 0 

There are 0 datanode(s) running and no node(s) are excluded in this operation.

那么这里就有2种可能导致 该情况,

第1种,可能是使用hadoop namenode -format格式化时格式化了多次,造成spaceID不一致

解决方案:

1、停止集群(切换到/sbin目录下)
$./stop-all.sh

2、删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据;
$ rm -rf /home/hzp/software/hadoop/hadoop-3.2.1/tmp/*

 

3、重新格式化namenode(切换到hadoop目录下的bin目录下)
$ ./hadoop namenode -format

4、重新启动hadoop集群(切换到hadoop目录下的sbin目录下)
$./start-all.sh

 

第2种,可能datanode 节点没有启动

然后重新启动各个datanoede节点的   dfs, 

  start-dfs.sh

(内心戏,以上两种坑 我都踩了  我真的是*了)

 

然后去启动 start-dfs.sh 发现,报错 Attempting to operate on hdfs namenode as root  ERROR:but there is no HDFS_NAMENODE_USER defined

.........

hadoop子节点启动不了dfs 服务,

冷静分析了一下,原因是 当时只在 master 节点配置了 hadoop各个组件用户

(OK  这个bug 和我之间只能活一个)

解决方案:

1.   vim /etc/profile

文件中添加

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
 

ps: 注意 每个子节点都要配置一下

详细解决方案:https://blog.csdn.net/hzp666/article/details/117465157

 

解决完上个问题,下个问题成功到达,当我试图再次开启 dfs 服务时,SSH免密登录又报错了

SSH 免密登录 WARNING: POSSIBLE DNS SPOOFING DETECTED!    

先解释下,其实这是客户机问题,与SSH服务器无关,只需把.ssh目录下的文件删除即可。下次使用ssh时文件会重建的。
出现这问题的原因一般是同一主机使用了不同的用户名登陆。(如果多个域名和多个IP同时指向同一主机,ssh仍然视为不同主机。)

 

 

解决方案:

1.先清空 之前 ssh配置和文件

cd ~/.ssh

rm -rf ./*

 

重新部署 SSH 免密登录

  1. host配置

修改三台服务器的hosts文件

vim /etc/hosts

#添加下面内容,根据个人服务器IP配置

10.101.18.21 master
10.101.18.8 slave1
10.101.18.24 slave2

免密登陆配置

  1. 生产秘钥
ssh-keygen -t rsa
  1. master免密登录到slave中
ssh-copy-id -i ~/.ssh/id_rsa.pub master
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
  1. 测试免密登陆
ssh master 
ssh slave1
ssh slave2

ps:3台 主节点和子节点都要配置一遍ssh

 

(那么我这里就是重新开了一个虚拟机作为master节点,导致这里服务器IP重复 ssh登录不了的问题)

 

(好了,然后下个问题成功又出现了,吐血中。。。。。)

 

发现hadoop的 子节点 数据节点, 每次都DataNode  进程都不起来

启动了  start-all.sh  ,但是发现datanode进程不存在

一、原因

当我们使用hadoop namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致。

二、解决方法

  • 第一种:如果dfs文件夹中没有重要的数据,那么删除dfs文件夹,再重新运行下列指令: (删除节点下的dfs文件夹,为自己配置文件中dfs.name.dir的路径)

  • cat hdfs-site.xml

      可以看到datanode已经可以了:

  • 第二种:如果dfs文件中有重要的数据,那么在dfs/name目录下找到一个current/VERSION文件,记录clusterID并复制。然后dfs/data目录下找到一个current/VERSION文件,将其中clustreID的值替换成刚刚复制的clusterID的值即可;

  

三、总结

其实,每次运行结束Hadoop后,都应该关闭Hadoop.   stop-dfs.sh

下次想重新运行Hadoop,不用再格式化namenode,直接启动Hadoop即可  start-dfs.sh

 

 

然后发现,主节点 又不行了,我屮艸芔茻

master主节点上 namenode 进程起不来

原因是 刚才删除了子节点datanode上的hdfs操作导致的  namenode 和 datanode 不一致

刚才删除了,hdfs的目录导致的,那么我们就重新 初始化一下 hdfs

解决方案:

1、停止集群(切换到/sbin目录下)
$./stop-all.sh

2、删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据;
$ rm -rf /home/hzp/software/hadoop/hadoop-3.2.1/tmp/*

 

3、重新格式化namenode(切换到hadoop目录下的bin目录下)
$ ./hadoop namenode -format

4、重新启动hadoop集群(切换到hadoop目录下的sbin目录下)
$./start-all.sh
 

KO

 

 

 

终于看见这个spark 图标,至此终于 完结

 

总结,每次用完记得关集群,先关spark  再关hadoop,不要强行关闭。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值