Tag: apache spark

如何在具有桥接模式的docker容器中运行Apache Spark 2.1驱动程序

我正尝试使用带有阴影的jar的客户端模式从dockerized Apache Spark应用程序连接到独立的Apache Spark群集。 我已经设置了以下属性 – spark.driver.port – spark.driver.blockManager.port – spark.driver.bindAddress with Docker Host's IP – SPARK_PUBLIC_DNS environment variable with Docker Host's IP. 我已经公开和映射设置端口与主机端口。 该应用程序显示在Spark Master上运行,但是没有任何响应正在从工作人员返回。 之前没有设置这些属性,它在火花大师处于等待状态时显示,设置它们显示为正在运行,但是没有响应从动作返回,则挂起。 如果我不将spark.driver.bindAddress设置为Docker主机的IP,则在检查工作人员的日志时,生成的驱动程序url是 – –driver-url spark://CoarseGrainedScheduler@XXXX:7000 The XXXX is the container IP. All workers binds to container's IP (like 172.17.0.45), which cannot be connected to and from master or driver. […]

Docker组合将Spark Worker UI端口dynamic地扩展为主机

我有Apache Spark在通过Docker Compose创build的容器中运行。 当我创buildworker时,我指定主机(我的笔记本电脑)上的哪个端口映射到worker上的Web UI端口8081 。 有了1个容器,这个工作正常,因为我可以绑定8081:8081和集装箱式的Spark Master Web UI正确链接到localhost:8081 。 问题是当我通过docker-compose scale worker=3的数量时,我无法在docker-compose.yml的主机上指定端口,因为缩放会发生冲突。 我已经尝试过使用dynamic端口映射,但是这会导致主机端口被转发到工作端口8081将是类似于32XXX但Spark Master WebUI链接将仍然假定工作者WebUI是在端口8081意味着没有链接工作。 有没有一种方法来扩大我的容器没有港口冲突 我docker-compose.yml的相关部分: worker: image: gettyimages/spark command: bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077 hostname: worker environment: SPARK_CONF_DIR: /conf SPARK_WORKER_CORES: 2 SPARK_WORKER_MEMORY: 1g SPARK_WORKER_PORT: 8881 SPARK_WORKER_WEBUI_PORT: 8081 SPARK_PUBLIC_DNS: localhost links: – master – cassandra – kafka expose: – 7012 – 7013 – 7014 […]

在Java中通过spark连接到Cassandra时出现问题

我有服务器与docker,并创build3 Cassandra节点,2个工人火花节点和一个主火花节点。 现在我想通过Java应用程序连接到我的笔记本电脑的火花。 我的java代码是: public SparkTestPanel(String id, User user) { super(id); form = new Form("form"); form.setOutputMarkupId(true); this.add(form); SparkConf conf = new SparkConf(true); conf.setAppName("Spark Test"); conf.setMaster("spark://172.11.100.156:9050"); conf.set("spark.cassandra.connection.host", "cassandra-0"); conf.set("spark.cassandra.connection.port", "9042"); conf.set("spark.cassandra.auth.username", "cassandra"); conf.set("spark.cassandra.auth.password", "cassandra"); JavaSparkContext sc = null; try { sc = new JavaSparkContext(conf); CassandraTableScanJavaRDD<com.datastax.spark.connector.japi.CassandraRow> cassandraTable = javaFunctions(sc).cassandraTable("test", "test_table"); List<com.datastax.spark.connector.japi.CassandraRow> collect = cassandraTable.collect(); for(com.datastax.spark.connector.japi.CassandraRow cassandraRow : […]

缓冲区/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中使用。 有没有人有一个想法,我可能做错了/这是怎么回事? 非常感谢提前任何帮助!

将spark-jobserver部署到BlueMix Spark节点

我正在尝试在Docker容器中将Spark spark-jobserver实例部署并连接到BlueMix Spark服务。 在本地,容器可以使用命令docker -d -p 8090:8090 {image-name}完美启动,但看起来像BlueMix ice -p命令的工作方式不同,只允许指定BlueMix端口。 如何从BlueMix提供此容器?

使用来自私有registry的自定义Docker镜像的Spark作业

我想build立一个自定义的Docker镜像,可以使用Spark的spark.mess.executor.docker.imageconfiguration选项。 这个图像将包含私人信息,所以它需要保存在一个私人的registry。 这可能吗? 我没有看到任何书面的方式来指定login凭证作为spark-submit命令的一部分。

Spark应用程序无法写入docker中运行的elasticsearch集群

我有一个在127.0.0.1:9200上收听的elasticsearch docker镜像,我使用sense和kibana进行了testing,工作正常,我能够索引和查询文档。 现在,当我尝试从火花App写入它 val sparkConf = new SparkConf().setAppName("ES").setMaster("local") sparkConf.set("es.index.auto.create", "true") sparkConf.set("es.nodes", "127.0.0.1") sparkConf.set("es.port", "9200") sparkConf.set("es.resource", "spark/docs") val sc = new SparkContext(sparkConf) val sqlContext = new SQLContext(sc) val numbers = Map("one" -> 1, "two" -> 2, "three" -> 3) val airports = Map("arrival" -> "Otopeni", "SFO" -> "San Fran") val rdd = sc.parallelize(Seq(numbers, airports)) rdd.saveToEs("spark/docs") 它无法连接,并继续重试 […]

如何configurationSpark和OpenMPI在集群上共存的优先级?

我们有一个运行Spark的小群集来执行面向公众的Web应用程序的作业。 这里使用Spark的目标是为Web应用程序提供一个高效的延迟,因此提交作业时,需要尽快从集群中进行响应。 但是大部分时间都是空闲的。 所以当需要的时候,Spark需要很快,但是当不需要的时候,我们想要使用这些计算资源。 例如,我们有一些模拟运行使用OpenMP进行本地线程和OpenMPI来在整个集群中分配处理。 这需要一些时间来运行,我们只想在Spark不需要的时候使用集群。 是否有可能configurationSpark具有非常高的优先级和淘汰或饿死其他程序? 从Spark的configuration中,我可以看到有关限制内存和内核使用的几个选项,但与赋予Spark更高的优先级没有多大关系。 我们正在考虑使用Torque来控制OpenMPI模拟的作业队列。 我们正在考虑在Docker容器中运行它们,以便更新它们,因为它们正在开发中。 这个想法是发出一个Torque命令,它将基本上拖动一个Docker镜像,在每台机器上启动它,并触发OpenMPI应用程序。 这太复杂吗? 任何其他build议? 我们可以放弃Torque并直接使用Spark来控制OpenMPI作业吗? 如果一个Spark工作具有更高的优先级,可以打断另一个工作吗 目前一切正在运行在Fedora上。 TL;博士 更大的问题在于,如何在群集上启动长时间运行的计算密集型分布式作业,同时仍然能够确保在同一硬件上共存的Spark实例的良好延迟? **这篇文章可能会背叛我对Spark的相对陌生。

火花提交pipe道模型

我有一个在Docker上运行的Apache Spark集群(1 master + 1 worker),我可以使用spark-submit一个适合pipe道的作业,然后保存(PipelineModel.save(path)). 该文件完全保存在我的本地机器上,执行spark-submit命令的地方。 当我想要加载PipelineModel并将其用于预测时,尝试部署生产代码时出现问题。 我无法传递包含已保存文件的文件夹。 这是我用来提交作业的代码: spark-submit –class ch.supsi.isteps.Main –master spark://172.17.0.1:7077 –packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.2.0 –files=test/aFolder ./STR-0.1-alpha.jar –mode=production –file=test/aFolder where –mode=production –file=test/aFolder是我的程序的参数 我已经尝试使用 – –files ,但它不接受文件夹。 我想避免在所有工作节点中复制模型。 编辑 这个问题与HDFS和Docker有关。 作为备份解决scheme,我们避免了在Docker中使用spark-cluster并在Docker中切换到本地模式。 这允许保存和检索文件没有问题。 如果您映射文件夹(docker-compose – > volumes),您甚至不需要传递已经映射到您的容器的文件

Spark挂在Docker Mesos集群的身份validation上

我试图模拟使用Docker和Zookeeper的多节点Mesos集群,并试图在其上运行一个简单的(py)Spark作业。 这些Docker容器和pyspark脚本都在同一台机器上运行。 但是,当我执行我的Spark脚本,它挂在: No credentials provided. Attempting to register without authentication Mesos从站不断输出: I0929 14:59:32.925915 62 slave.cpp:1959] Asked to shut down framework 20150929-143802-1224741292-5050-33-0060 by master@172.17.0.73:5050 W0929 14:59:32.926035 62 slave.cpp:1974] Cannot shut down unknown framework 20150929-143802-1224741292-5050-33-0060 Mesos大师不断输出: I0929 14:38:15.169683 39 master.cpp:2094] Received SUBSCRIBE call for framework 'test' at scheduler-2f4e1e52-a04a-401f-b9aa-1253554fe73b@127.0.1.1:46693 I0929 14:38:15.169845 39 master.cpp:2164] Subscribing framework test with […]