Tag: apache spark sql

将包含fat jar的docker提交给Spark集群

我想提交一个包含'fat jar'的Docker容器到在DC / OS上运行的Spark群集。 这是我所做的。 mvn clean install ,所以jar驻留在这里/target/application.jar docker build -t <repo/image> . && docker push <repo/image> 现在我的DC / OS能够从我的私有存储库中获取图像 我的Dockerfile看起来像这样: FROM docker-release.com/spark:0.1.1-2.1.0-2.8.0 # I extended from this image to get all necessary components ADD target/application.jar /application.jar # just put fat jar under root dir of Docker image COPY bootstrap.sh /etc/bootstrap.sh ENTRYPOINT ["/etc/bootstrap.sh"] 以下是bootstrap.sh的样子: […]

缓冲区/caching耗尽Docker容器内的Spark独立

我有一个非常奇怪的内存问题(这是很多人最可能会说的;-))与在Docker容器内独立模式下运行的Spark。 我们的设置如下:我们有一个Docker容器,我们有一个Spring启动应用程序,以独立模式运行Spark。 这个Spring启动应用程序还包含一些计划任务(由Springpipe理)。 这些任务触发Spark作业。 Spark作业会抓取SQL数据库,将数据洗牌一下,然后将结果写入不同的SQL表(写入结果不经过Spark)。 我们目前的数据集非常小(该表包含几百万行)。 问题是运行Docker容器的Docker主机(CentOS VM)在一段时间后崩溃,因为内存耗尽。 我目前已经限制了512M的Spark内存使用(我已经设置了执行程序和驱动程序内存),在Spark UI中,我可以看到最大的作业只需要大约10 MB的内存。 我知道如果Spark有8GB内存或更多的可用空间,Spark运行得最好。 我也尝试过,但结果是一样的。 进一步挖掘之后,我注意到Spark消耗了机器上的所有缓冲区/caching。 通过强制Linux删除caching(echo 2> / proc / sys / vm / drop_caches)(清除dentries和inode),手动清除caching的使用率将大大降低,但如果我不经常这样做,我会发现caching使用缓慢持续上升,直到所有内存在缓冲区/caching中使用。 有没有人有一个想法,我可能做错了/这是怎么回事? 非常感谢提前任何帮助!