当前位置: 首页 > 知识库问答 >
问题:

Kubernetes上的Hadoop数据节点路由问题

刘修能
2023-03-14

我试图建立一个示例Hadoop集群在OpenShift/Kuberentes/Docker(OpenShift 3.5),我遇到了以下问题:

一次只能在Namenode上注册一个Datanode,因为Namenode可以看到同一IP(192.168.20.1)下的所有Datanode。这显然是由于集群中的网络路由

实际示例配置:

名称节点

192.168.20.119  hadoop-namenode-10-qp83z

数据阳极

192.168.20.132  hadoop-slave-0.hadoop-slave.my-project.svc.cluster.local  hadoop-slave-0
192.168.20.133  hadoop-slave-1.hadoop-slave.my-project.svc.cluster.local  hadoop-slave-1
192.168.20.134  hadoop-slave-2.hadoop-slave.my-project.svc.cluster.local  hadoop-slave-2

Namenode日志:

17/12/05 22:11:21 INFO net.NetworkTopology: Removing a node: /default-rack/192.168.20.1:50010
17/12/05 22:11:21 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.20.1:50010
17/12/05 22:11:21 INFO blockmanagement.BlockReportLeaseManager: Registered DN f3c22144-f9cf-47dc-b0b7-bf946121ee81 (192.168.20.1:50010).
17/12/05 22:11:21 INFO blockmanagement.DatanodeDescriptor: Adding new storage ID DS-6f7b2565-1e85-491a-ab04-69a7ffa25d5c for DN 192.168.20.1:50010
17/12/05 22:11:21 INFO BlockStateChange: BLOCK* processReport 0x9c1289bc1f9f766f: Processing first storage report for DS-6f7b2565-1e85-491a-ab04-69a7ffa25d5c from datanode f3c22144-f9cf-47dc-b0b7-bf946121ee81
17/12/05 22:11:21 INFO BlockStateChange: BLOCK* processReport 0x9c1289bc1f9f766f: from storage DS-6f7b2565-1e85-491a-ab04-69a7ffa25d5c node DatanodeRegistration(192.168.20.1, datanodeUuid=f3c22144-f9cf-47dc-b0b7-bf946121ee81, infoPort=50075, infoSecurePort=0, ipcPort=50020, storageInfo=lv=-56;cid=CID-6b84af8f-fe9a-465a-840e-6acb0fe5f8d9;nsid=399770301;c=0), blocks: 0, hasStaleStorage: false, processing time: 0 msecs, invalidatedBlocks: 0
17/12/05 22:11:21 INFO hdfs.StateChange: BLOCK* registerDatanode: from DatanodeRegistration(192.168.20.1, datanodeUuid=2bd926b9-b00e-4eb6-858d-3e90fa6b3ef8, infoPort=50075, infoSecurePort=0, ipcPort=50020, storageInfo=lv=-56;cid=CID-6b84af8f-fe9a-465a-840e-6acb0fe5f8d9;nsid=399770301;c=0) storage 2bd926b9-b00e-4eb6-858d-3e90fa6b3ef8
17/12/05 22:11:21 INFO namenode.NameNode: BLOCK* registerDatanode: 192.168.20.1:50010

配置(hdfs site.xml):

    <property>
        <name>dfs.datanode.use.datanode.hostname</name>
        <value>true</value> <!-- same result with false -->
    </property>   
    <property>
        <name>dfs.client.use.datanode.hostname</name>
        <value>true</value> <!-- same result with false -->
    </property>

    <property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
    </property>

所有吊舱上的ip路由输出:

ip route                                                                                                                                                                                                                                     
default via 192.168.20.1 dev eth0                                                                                                                                                                                                                    
192.168.0.0/16 dev eth0                                                                                                                                                                                                                              
192.168.20.0/24 dev eth0 proto kernel scope link src 192.168.20.134                                                                                                                                                                                  
224.0.0.0/4 dev eth0

该问题与“为什么停靠的Hadoop datanode使用错误的IP地址注册?”中描述的问题惊人地相似?,但现在在Kubernetes星系团的背景下

有什么想法吗?

共有1个答案

柴岳
2023-03-14

这有用吗?

“在缩小datanode状态集之前,您需要告诉Hadoop一个datanode将消失;)”

看见http://b4mad.net/datenbrei/openshift/hadoop-hdfs/另见https://gitlab.com/goern/hdfs-openshift

 类似资料:
  • 我有一个Kubernetes集群。这些节点位于具有IPs的内部网中,pod网络范围为。 问题是,一些工作节点在其他节点上有无法到达的pod网络路由,例如: 我尝试重新启动一个中断的节点,将其从集群中删除,运行,然后重新加入它。但一切都保持不变。 可能的原因是什么?我应该如何解决这个问题?提前多谢。

  • 问题内容: 因此,我的目标是以分布式方式建立一个由多个kafka经纪人组成的集群。但是我看不出让经纪人彼此了解的方法。 据我了解,每个代理在其配置中都需要一个单独的ID,如果我从Kubernetes启动容器,我不能保证或配置该ID吗? 他们还需要具有相同的advertised_host吗? 是否有我需要更改的参数才能使节点相互发现? 在Dockerfile的末尾使用脚本进行这样的配置是否可行?和/

  • 我试图处理来自hadoop的XML文件,在调用XML文件上的单词计数作业时出现以下错误。 我在hadoop hduser tasktracker localhost上发现以下错误。本地域。从机上的日志文件。 当我运行文本文件时,这工作正常

  • 这些是我机器里的端口。tcp 0 0 0.0.0.0:8088 0.0.0.0:*侦听1001 50434 5765/Java tcp 0 0 0.0.0.0:*侦听1001 45587 5461/Java tcp 0 0 0.0.0.0:*侦听1001 45594 5461/Java tcp 0 0 0.0.0.0:*侦听1001 47365 5765/Java tcp 0 0 0.0.0.0:

  • 需要一些帮助。虽然有很多不同的答案可用,我也尝试了他们,但不能使它工作。我在mac os中本地插入了hadoop,当我尝试编译java程序时,我得到了以下错误。我知道问题出在设置正确的类路径上,但在五月的情况下,提供类路径并没有使其工作。我已经在/usr/local/cellar/hadoop/1.2.1/libexec下安装了hadoop lineindexer.java:6:包org.apac

  • 我正在搜索如何将多播udp数据包发送到我的kubernetes集群中的吊舱 我希望有人能帮助我,如果我应该配置vpn在gcp或其他东西。