更改hadoop hdfs数据节点服务器的ip地址并避免块池错误

x6492ojm  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(845)

我正在使用hadoop的cloudera发行版,最近不得不更改集群中几个节点的ip地址。更改后,在其中一个节点(旧ip:10.88.76.223,新ip:10.88.69.31)上,当我尝试启动数据节点服务时出现以下错误。

Initialization failed for block pool Block pool BP-77624948-10.88.65.174-13492342342 (storage id DS-820323624-10.88.76.223-50010-142302323234) service to hadoop-name-node-01/10.88.65.174:6666
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException): Datanode denied communication with namenode: DatanodeRegistration(10.88.69.31, storageID=DS-820323624-10.88.76.223-50010-142302323234, infoPort=50075, ipcPort=50020, storageInfo=lv=-40;cid=cluster25;nsid=1486084428;c=0)
    at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:656)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:3593)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:899)
    at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:91), I was unable to start the datanode service due to the following error:

有没有人成功地更改了hadoop数据节点的ip地址并将其加入集群而不丢失数据?

qnzebej0

qnzebej01#

最好是:
从群集中解除服务器的运行,以确保所有块都复制到群集中的其他节点。
从群集中删除服务器
连接到服务器并更改ip地址,然后重新启动cloudera代理
注意,cloudera管理器现在显示了这个服务器的两个条目。删除旧ip和最长心跳时间的条目
将服务器添加到所需集群,并将所需角色添加回服务器(例如hdfs datanode、hbase rs、yarn)
hdfs将读取所有数据磁盘并识别块池和集群id,然后注册datanode。
所有的数据都将是可用的,过程对任何客户都是透明的。
注意:如果遇到hdfs客户机的名称解析错误,应用程序很可能缓存了旧的ip,很可能需要重新启动。特别是以前引用此服务器的java客户端(例如hbase客户端),由于jvm缓存IP,必须重新启动。基于java的客户机可能会抛出与连接到具有更改的ip的服务器有关的错误,因为在重新启动之前,它们会缓存旧的ip。

6ovsh4lw

6ovsh4lw2#

在cloudera manager中更改主机ip
更改所有节点上的主机ip

sudo nano /etc/hosts

如果主节点ip发生更改,请在所有节点上编辑ipcloudera config.ini

sudo nano /etc/cloudera-scm-agent/config.ini

在postgresql数据库中更改ip
对于密码,请打开postgresql password

cat /etc/cloudera-scm-server/db.properties

查找密码行

Example. com.cloudera.cmf.db.password=gUHHwvJdoE

打开postgresql

psql -h localhost -p 7432 -U scm

postgresql中的select表

select name,host_id,ip_address from hosts;

更新表ip

update hosts set ip_address = 'xxx.xxx.xxx.xxx' where host_id=x;

退出工具

\q

在所有节点上重新启动服务

service cloudera-scm-agent restart

重新启动主节点上的服务

service cloudera-scm-server restart

相关问题