如何在没有dns的情况下运行hdfs集群

u91tlkcl  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(385)

我正在构建一个本地hdfs开发环境(实际上是hadoop+mesos+zk+kafka),以简化spark作业的开发并促进本地集成测试。所有其他组件工作正常,但我有hdfs的问题。当数据节点试图连接到name节点时,我得到一个 DisallowedDataNodeException :

org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException: Datanode denied communication with namenode

大多数与同一问题相关的问题归结为名称节点上数据节点的名称解析,或者通过 etc/hosts 文件或使用dns。静态解析不是docker的选项,因为创建名称节点容器时我不知道数据节点。我想避免创建和维护一个额外的dns服务。理想情况下,我想用 --link Docker 的特征。
有没有一种方法可以将hdfs配置为只使用ip地址工作?
我找到了这个属性并设置为false,但它没有起作用: dfs.namenode.datanode.registration.ip-hostname-check (默认值:true)
有没有办法让多节点本地hdfs集群只使用ip地址而不使用dns?

moiiocjp

moiiocjp1#

我将重新配置docker映像以使用不同的主机文件[1]。特别地:
在dockerfile中,执行switch-a-roo[1]
启动主节点
打开数据节点,链接
在启动datanode之前,通过/etc/hosts复制到新位置/tmp/hosts
将主节点的名称和主节点ip附加到新的主机文件中
希望这对你有用!
[1] https://github.com/dotcloud/docker/issues/2267#issuecomment-40364340

相关问题