Tag: apache spark

使用Hadoop和Docker进行代码开发的过程

我在Hadoop学习了一段时间,并且安装了一切虚拟机,并且能够使用Intellij编写Java代码来执行MapReduce作业。 这一切都很棒,但是我想学习MapReduce,而且还有更多的细节,所以我有兴趣在自己的机器上设置一些东西来练习。 我看到Cloudera拥有Docker镜像,允许在某种Linux风格下安装Hadoop生态系统。 我是docker工人,但听起来不错,尤其是因为他们有一个伪集群的多节点选项,我不需要繁琐的虚拟机。 我的问题是,如何实际编写MapReduce,Spark或任何代码在容器中运行? 在我的主机上没有Hadoop / Spark / etc的jar或者库,这些都在图像中,而且在docker上看起来有些容器是命令行驱动的。 所以不知道如何在图像中使用IDE。 那么,当所有的依赖关系都在图像中的时候,如何开发代码呢?

spark-submit job.py不能使用sparkConf传递configuration参数

我使用bin / spark-submit脚本提交我的python作业。 我想通过SparkConf&SparkContext类在python代码中configuration参数。 我尝试在SparkConf对象中设置appName,master,spark.cores.max和spark.scheduler.mode,并将其作为参数(conf)传递给SparkContext。 事实certificate,这个工作并没有发送到我设置的独立集群(它只是在本地运行, 单击以查看localhost:4040 / environment /的截图 )的主服务器。 通过下面的打印语句,很明显看到我传递给SparkContext的SparkConf具有所有4个configuration(),但来自SparkContext对象的confvariables没有任何更新,尽pipe默认情况下是conf。 对于其他方法,我尝试使用conf/spark-defaults.conf或–properties-file my-spark.conf –master spark://spark-master:7077 。 它的工作原理。我也尝试使用主参数分别设置主 sc = pyspark.SparkContext(master="spark://spark-master:7077", conf=conf) 而且它也起作用: SparkContextConf: [ ('spark.app.name', 'test.py'), ('spark.rdd.compress', 'True'), ('spark.driver.port', '41147'), ('spark.app.id', 'app-20170403234627-0001'), ('spark.master','spark://spark-master:7077'), ('spark.serializer.objectStreamReset', '100'), ('spark.executor.id', 'driver'), ('spark.submit.deployMode', 'client'), ('spark.files', 'file:/mnt/scratch/yidi/docker-volume/test.py'), ('spark.driver.host', '10.0.0.5') ] 所以似乎只有conf参数不能正确地被SparkContext拥塞。 星火工作代码: import operator import pyspark def main(): '''Program entry […]

Spark如何限制CPU核心和内存的使用?

Spark如何限制cpu核心和内存的使用?它是否使用cgroups? 纱线怎么样?

在Mac上查找$ YOUR_DOCKER_HOST IP

我已经启动了一个容器(来自docker hub的公共图像之一)来运行我的火花程序。 要打开火花Web UI,我需要去http://:8080。 任何人都可以告诉我如何打开此webUI?

如何启用Spark-Mesos作业从Docker容器中启动?

概要: 是否有可能从一个Docker容器内的Mesos上提交一个Spark作业,这个容器有一个Mesos master(没有Zookeeper)和一个Mesos代理,每个都在单独的Docker容器中运行(现在在同一台主机上)? 在http://mesos.apache.org/documentation/latest/container-image/中描述的Mesos Containerizer似乎适用于Mesos应用程序简单地封装在Docker容器中并运行的情况。 我的Docker应用程序更具交互性,在运行时基于用户input实例化多个PySpark Mesos作业。 Docker容器中的驱动程序本身不是作为Mesos应用程序运行的。 只有用户发起的作业请求被作为PySpark Mesos应用程序处理。 具体细节: 我有3个基于centos:7 linux的Docker容器,现在在同一台主机上运行: 运行Mesos Master的容器“Master”。 运行Mesos Agent的容器“Agent”。 使用Spark和Mesos安装容器“testing”,在其中运行bash shell并从命令行启动以下PySparktesting程序。 from pyspark import SparkContext, SparkConf from operator import add # Configure Spark sp_conf = SparkConf() sp_conf.setAppName("spark_test") sp_conf.set("spark.scheduler.mode", "FAIR") sp_conf.set("spark.dynamicAllocation.enabled", "false") sp_conf.set("spark.driver.memory", "500m") sp_conf.set("spark.executor.memory", "500m") sp_conf.set("spark.executor.cores", 1) sp_conf.set("spark.cores.max", 1) sp_conf.set("spark.mesos.executor.home", "/usr/local/spark-2.1.0") sp_conf.set("spark.executor.uri", "file://usr/local/spark-2.1.0-bin-without-hadoop.tgz") sc = SparkContext(conf=sp_conf) # […]

连接齐柏林docker与蜂巢

嗨,我是相当新的docker和齐柏林飞艇。 我最近从这个链接创build了一个齐柏林docker。 我正尝试通过HiveContext与齐柏林笔记本上的configuration单元连接。 从解释器页面spark中将zeppelin.spark.useHiveContext设置为true。 当我尝试下面的代码: val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 正在给出以下错误: <console>:30: error: object hive is not a member of package org.apache.spark.sql val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 我是否仍然需要安assembly置单元解释器,甚至难以使用的UseContext是真实的? 现在我只想检查一下将来是否可以连接Hive数据库。

当部署模式是群集时,spark-submit代理主机/端口configuration不受尊重

我有一个Spark Streaming应用程序打包为Docker镜像,并通过Marathon部署在DC / OS中,如下所示: https://github.com/mesosphere/iot-demo 以下用于在马拉松中触发火花作业的命令完美地起作用: /opt/spark/dist/bin/spark-submit –master mesos://spark.marathon.mesos:8130 –deploy-mode client –driver-memory 4g –executor-memory 2g –conf "spark.driver.extraJavaOptions=-Dhttp.proxyHost=xx.yy.zz.aa -Dhttp.proxyPort=3128 -Dhttps.proxyHost=xx.yy.zz.aa -Dhttps.proxyPort=3128" –conf spark.mesos.executor.docker.image=private_registry/myimage-name:version –conf spark.mesos.executor.home=/opt/spark/dist –packages org.apache.spark:spark-streaming-kafka-0-10_2.11:2.0.1,com.datastax.spark:spark-cassandra-connector_2.11:2.0.1 –class app.MyApp file:///my.jar 但是,如果将部署模式从客户端更改为集群,则在尝试下载指定的软件包时,它不会识别代理设置,并会拒绝连接。 有人可以提出什么可能是错的? 提前致谢。 最好的祝福 Sriraman。

Spark Dockerconfiguration

我正在使用https://github.com/gettyimages/docker-spark/blob/master/docker-compose.yml来启动Docker组合来运行Spark环境。 它似乎成功开始 – 我可以连接到http:// master:8080 ,它说火花大师是spark:// master:7077。 'master'映射到Windows/System32/drivers/etc/hosts的Docker容器IP。 我有一个Java应用程序。 SparkSession spark = SparkSession .builder() .appName("Java Spark SQL basic example") .master("spark://master:7077") .getOrCreate(); 我得到的是以下错误: 19:20:18.240 [netty-rpc-connection-0] DEBUG oasncTransportClientFactory – 连接到master / 192.168.99.100:7077成功,运行bootstraps … 19:20:18.240 [netty-rpc-connection-0]信息oasncTransportClientFactory – 成功创build连接到master / 192.168.99.100:7077后18毫秒(在引导中花费0毫秒)19:20:18.244 [netty-rpc-connection-0] DEBUG inuRecycler – -Dio.netty.recycler.maxCapacity.default:32768 19:20:18.244 [netty-rpc-connection-0] DEBUG inuRecycler – -Dio.netty.recycler.maxSharedCapacityFactor:2 19:20:18.244 [netty-rpc-connection-0] DEBUG inuRecycler – -Dio.netty.recycler .linkCapacity:16 […]

使用Spark处理通过kafka进行的数据stream并使用Python进行编程

总而言之,我必须开始说它是一个旅程,这个问题可能需要你已经在我已经在哪里。 好吧,潜水 所以我做了一个docker容器,提供了所有我需要提交的作业来启动(安装在这个容器上),这是用python编写的。 我用监督员把他们踢出去,把控制台的输出连接到一个日志用于排除故障,基本上我想运行多个脚本来说明多个场景stream入一个单一的kafka话题。 我为什么要这样做? 我正在使用Telegraf来收集指标,并将来自多个实例的所有指标发送到名为“telegraf”的kafka中的单个主题。 我知道….它非常有创意。 此外,根据给定实例分割主题现在是不相关的,因为每个实例都有不同的度量标准,所以我仍然需要对它们进行不同的处理。 无论如何,给你一个例子,Telegraf收集我想要的一些docker统计,其中两个是“docker_container_cpu”和“docker_container_mem”。 现在,我现在的解决scheme是让我的脚本根据即将推出的指标以不同的方式处理指标数据。但是,我想要为每个帐户针对可能stream入卡夫卡的不同情况编写大量脚本。 所以一个docker_container_cpu的脚本和另一个docker_container_mem的脚本。 这两个都将听取卡夫卡的话题,既提交和同时运行的作业。 command=bash -c "spark-submit –jars $SPARK_HOME/jars/spark-streaming_2.11-$SPARK_VERSION.jar,$SPARK_HOME/jars/spark-streaming-kafka-0-8-assembly_2.11-$SPARK_VERSION.jar $SPARK_HOME/scripts/aggregateCPU.py localhost:32181 telegraf &> $SPARK_HOME/logs/cpu.log &" command=bash -c " sleep 30s; spark-submit –jars $SPARK_HOME/jars/spark-streaming_2.11-$SPARK_VERSION.jar,$SPARK_HOME/jars/spark-streaming-kafka-0-8-assembly_2.11-$SPARK_VERSION.jar $SPARK_HOME/scripts/aggregateMem.py localhost:32181 telegraf &> $SPARK_HOME/logs/mem.log &" 那么你问的问题是什么? 这个….. bash-4.3# cat logs/mem.log 17/08/02 19:31:59 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform… using […]

由于OOM,一小时后容器崩溃

我使用Docker在DC / OS上运行spark。 当我提交spark工作,使用下面的内存configuration 司机2 Gb 执行者2 Gb 执行者的数量是3。 火花提交工作正常,1小时后docker容器(工人容器)由于OOM(退出代码137)而崩溃。 但我的火花日志显示1Gb的内存是可用的。 奇怪的是在容器中运行的同一个jar子,在独立模式下正常运行了近20个小时。 这是火花炮的正常行为,还是在那里做错了,或者是否有任何额外的configuration,我需要用于docker集装箱。 谢谢