【发布时间】:2019-04-07 14:29:24
【问题描述】:
我正在尝试在 minikube(现在)上设置 HDFS,稍后在 DEV kubernetes 集群上设置,以便可以将它与 Spark 一起使用。我希望 Spark 在我的机器上本地运行,这样我就可以在开发期间以调试模式运行,因此它应该可以访问我在 K8s 上的 HDFS。
我已经设置了 1 个 namenode 部署和一个 datanode statefulset(3 个副本),当我在集群中使用 HDFS 时,它们工作正常。我为数据节点使用无头服务,为名称节点使用集群 IP 服务。
当我尝试公开 hdfs 时,问题就开始了。我正在考虑为此使用入口,但这只会将端口 80 暴露在集群外部,并将路径映射到集群内的不同服务,这不是我想要的。据我了解,我的本地 spark 作业(或 hdfs 客户端)与 namenode 对话,namenode 回复每个数据块的地址。该地址虽然类似于172.17.0.x:50010,但我的本地计算机当然看不到这些。
我有什么方法可以完成这项工作吗?提前致谢!
【问题讨论】:
-
如果您将
dfs.client.use.datanode.hostname设置为true,可能会有所帮助。那么你至少可能会得到一个命名的 pod 地址,而不是一些浮动 IP -
已经设置好了,但我仍然获得了集群外部的 IP。但即使我得到了主机名,知道如何在集群之外使用它吗?我仍然无法访问
hostname:50010 -
您需要一些入口/负载均衡器代理,并设置外部客户端以了解如何解析内部 pod 地址。这不是一个 Hadoop 问题
标签: hadoop kubernetes hdfs