gpt4 book ai didi

docker - Hadoop Spark docker swarm 其中 pyspark 给出 BlockMissingException 但文件很好

转载 作者:可可西里 更新时间:2023-11-01 14:50:57 24 4
gpt4 key购买 nike

基于 https://github.com/gotthardsen/docker-hadoop-spark-workbench/tree/master/swarm我有一个带有 hadoop、spark、hue 和 jupyter notebook 设置的 docker swarm 设置。

我使用 Hue 将文件上传到 hdfs,从 hue 或名称节点上的 hdfs 下载或查看文件没有问题。没有丢失 block ,文件检查表明一切正常。

但是当我尝试在 jupyter 中使用 pyspark 访问它时,我得到:

org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-296583215-10.0.0.6-1542473394293:blk_1073741833_1009 file=/20170930.csv

我知道这与缺少 block 无关,而更有可能是其他原因。但我不知道为什么。使用 python2 内核的工作簿中的代码 python 代码是:

from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName('hello').setMaster('spark://spark-master:7077')
sc = SparkContext(conf=conf)

from pyspark.sql import SparkSession
# Read from HDFS
sparkSession = SparkSession(sc)
df_load = sparkSession.read.csv('hdfs://namenode:9000/20170930.csv')
df_load.show()

问题出在:

df_load = sparkSession.read.csv('hdfs://namenode:9000/20170930.csv')

我在不同的日志中看不到任何给我线索的东西。只有信息行

任何人都可以提供线索寻找什么?

最佳答案

重点是,如果我们使用 endpoint-mode=dnsrr,我们将无法发布端口(我们必须使用 dnsrr,否则 Hadoop 会出现一些问题)。

因此,为了公开端口,我们可以启动另一个容器来发布端口并将流量路由到 HDFS 节点。一种可用的工具是 socat。

当然,您仍然需要在该节点上设置主机。

参见 https://blog.newnius.com/setup-distributed-hadoop-cluster-with-docker-step-by-step.html

关于docker - Hadoop Spark docker swarm 其中 pyspark 给出 BlockMissingException 但文件很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53359692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com