基于https://github.com/gotthardsen/docker-hadoop-spark-workbench/tree/master/swarm我有一个带有hadoop,spark,hue和jupyter笔记本设置的docker swarm设置。
使用Hue我将文件上传到hdfs,我没有问题从hue或在namenode上的hdfs中下载或查看文件。没有丢失的块和文件检查说一切都很好。
但是当我尝试在jupyter中使用pyspark访问它时,我得到一个:
org.apache.hadoop.hdfs.BlockMissingException:无法获取块:BP-296583215-10.0.0.6-1542473394293:blk_1073741833_1009 file = / 20170930.csv
我知道这不是关于缺失块,但更可能是其他东西。但我无法弄清楚为什么。使用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')
我不能在不同的日志中看到任何能给我一些线索的东西。只有INFO线
由于Docker容器是短暂的,因此datanode容器可能会消失,因此其中的数据也会消失,但namenode仍然知道该文件曾经存在。
我不知道Swarm中的节点关联规则,但您应该尝试将卷挂载添加到namenode和datanode容器中,并确保它们只能在单个计算机上进行调度(假设您有多个,因为您是使用Swarm而不仅仅是Compose)
可能是一样的,但我用Hue,Juptyer,NameNode和Datanode 做了我自己的Docker Compose,我用PySpark测试了它
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。