mou*_*usi 5 hadoop hdfs kubernetes
我正在尝试在minikube上(目前)以及以后在DEV kubernetes群集上设置HDFS,以便可以在Spark上使用它。我希望Spark在我的机器上本地运行,以便我可以在开发过程中以调试模式运行,因此它应该可以在K8s上访问我的HDFS。
我已经设置了1个namenode部署和一个datanode statefulset(3个副本),当我从群集中使用HDFS时,它们可以正常工作。我正在为数据节点使用无头服务,为名称节点使用cluster-ip服务。
当我尝试公开hdfs时,问题开始了。我当时正在考虑使用一个入口,但这只会将端口80暴露在集群外部,并将路径映射到集群内的其他服务,这不是我想要的。据我了解,我的本地Spark作业(或hdfs客户端)与namenode对话,该namenode为每个数据块提供一个地址。该地址虽然有点类似172.17.0.x:50010
,但是我的本地机器当然看不到这些地址。
有什么办法可以使我工作吗?提前致谢!
我知道这个问题是关于让它在开发环境中运行,但是 HDFS 在 K8s 上的工作正在进行中,所以我无论如何都不会在生产中运行它(在撰写本文时)。让它在容器编排系统上工作非常棘手,因为:
如果您查看DC/OS,他们能够使其在他们的平台上运行,因此可以为您提供一些指导。
在 K8s 中,您基本上需要为所有 namenode 端口和所有 datanode 端口创建服务。您的客户端需要能够找到每个 namenode 和 datanode,以便它可以读取/写入它们。此外,某些端口无法通过 Ingress,因为它们是第 4 层端口 (TCP),例如名称8020
节点和数据50020
节点上的IPC 端口。
希望能帮助到你!
归档时间: |
|
查看次数: |
662 次 |
最近记录: |