我正在使用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地址并将其加入群集而不会丢失数据?
答案 0 :(得分:3)
在CLOUDERA MANAGER中更改主机IP
更改所有节点上的主机IP
sudo nano /etc/hosts
如果主节点ip更改
,则在所有节点上编辑ip cloudera config.inisudo nano /etc/cloudera-scm-agent/config.ini
更改PostgreSQL数据库中的IP
密码打开PostgreSQL密码
cat /etc/cloudera-scm-server/db.properties
找到密码行
Example. com.cloudera.cmf.db.password=gUHHwvJdoE
打开PostgreSQL
psql -h localhost -p 7432 -U scm
在PostgreSQL中选择表格
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
答案 1 :(得分:2)
最好的结果是:
所有数据都可用,并且该流程对任何客户都是透明的。
注意: 如果您遇到来自HDFS客户端的名称解析错误,该应用程序可能已缓存旧IP并且最有可能需要重新启动。特别是以前引用此服务器的Java客户端,例由于JVM无限期地缓存IP,因此必须重新启动HBASE客户端。基于Java的客户端可能会抛出与更改IP的服务器连接相关的错误,因为它们在重新启动之前会缓存旧的IP。