我在YARN上运行ApacheSpark(1.3.0)。YARN_CONF_DIR指向YARN配置。core-site.xml从该目录加载。它包括io.compression.codecs的设置,此列表包括com.hadoop.compression.lzo.LzoCodec,它不包含在预构建的Spark中。这会在启动时导致ClassNotFoundException。作为解决方法,我们可以使用修改后的core-site.xml运行,或者我们可以使用--jars包含所需的Jar文件。这些解决方法都不是很可靠。我不是YARN集群的管理员。集群管理员可以在我不知情的情况下对core-sit
我觉得能够以编程方式向yarn提交spark应用程序正在成为一个非常普遍的需求。但是在apachespark文档中没有关于它的引用。是否有可能,如果有,是否有直接的方法来实现它。请指教。 最佳答案 正确的做法是将您的驱动程序应用程序变成一个RPC服务器。这样,您只启动一个SparkContext。您传入的RPC请求全部重新使用您现有的SparkContext。我相信文档顺便提到了这个策略,但除此之外这确实超出了Spark文档的范围。我最近使用http4s做了这个,一个可嵌入的功能性HTTP服务器。这是微不足道的。但是选择您选择的RP
我正在运行以下代码(a包含大约10000行):IndexedRowMatrixqTmp=newIndexedRowMatrix(a.rows());IndexedRowMatrixqTmpT=qTmp.toCoordinateMatrix().transpose().toIndexedRowMatrix();我收到以下错误:15/06/1910:08:52INFOExternalAppendOnlyMap:Thread66spillingin-memorymapof24.8MBtodisk(1timesofar)15/06/1910:08:54INFOExternalAppendOnl
我在对hdfs上的大约55个文件和总共1B条记录进行简单计数操作时遇到了很多麻烦。spark-shell和PySpark都因OOM错误而失败。我正在使用yarn、MapR、Spark1.3.1和hdfs2.4.1。(它在本地模式下也失败了。)我尝试遵循调整和配置建议,向执行程序投入越来越多的内存。我的配置是conf=(SparkConf().setMaster("yarn-client").setAppName("pyspark-testing").set("spark.executor.memory","6g").set("spark.driver.memory","6g").set
Oozie4.2.0版支持作为Spark作业运行的Spark操作,是否可以在操作之间共享RDD,例如我的一个操作将读取文件并执行一些转换并创建一个RDD,比如rdd1,然后将(Spark操作)保存到HDFS,现在另一个oozie操作可能会采用rdd1并执行一些转换和操作。以上可以通过单个Spark驱动程序类实现,但我正在研究oozie解决方案,因为Spark驱动程序类对于复杂的工作流来说会非常复杂。预先感谢您的回答。问候,古兰加巴萨克 最佳答案 一个解决方案可能是使用sparkjobserver在多个作业中使用相同的spark上下文
我是Hadoop的新手,我正在使用单节点集群(用于开发)从关系数据库中提取一些数据。具体来说,我正在使用JavaAPISpark(1.4.1版)来提取查询数据并写入Hive。我遇到了各种问题(并阅读了手册并尝试在线搜索)但我认为我可能误解了其中的一些基本部分,因为我遇到了问题。首先,我认为我能够将数据读入Spark,可选择运行一些Spark方法来操作数据,然后通过HiveContext对象将其写入Hive。但是,似乎没有任何方法可以直接从Spark写入Hive。是真的吗?所以我需要一个中间步骤。在写入Hive之前,我尝试了几种不同的存储数据的方法,并决定编写HDFS文本文件,因为它似乎
对于在YARN(yarn-client)上运行的Spark作业,是否可以使用位于HDFS中的jars指定类路径有点像MapReduce作业是可能的:DistributedCache.addFileToClassPath(Pathfile,Configurationconf,FileSystemfs) 最佳答案 来自SparkContext文档:defaddJar(path:String):UnitAddsaJARdependencyforalltaskstobeexecutedonthisSparkContextinthefutur
当我尝试从配置单元表中获取一些产品并在spark中处理/应用rools时,我遇到了问题。//functionwhichreturnproductsfromHivetabledefgetProductsList(hiveContext:org.apache.spark.sql.hive.HiveContext):scala.collection.mutable.MutableList[Product]={valproducts=scala.collection.mutable.MutableList[Product]()valresults=hiveContext.sql("select
使用配置有Yarn的Spark(在client模式下,虽然与问题关系不大),我发现我的一些Executors失败。Executor是一个Yarn-Container,它的日志文件位于:/var/log/hadoop-yarn/containers/containerID。容器生成的一些(关键)事件/日志渗透到驱动程序,但不是全部。据观察,当一个Executor失败时,它的logfile会在它死后立即被清除。有什么方法可以防止这些日志因调试目的而被删除吗? 最佳答案 既然,你的yarn上有Spark,我希望这有助于收集所有日志yarn
我们有一个运行Spark的小型集群,用于从面向公众的Web应用程序执行作业。此处使用Spark的目的是为Web应用程序提供高效的延迟,因此当提交作业时,它需要集群尽快做出响应。不管它有多少时间是空闲的。因此,在需要时,Spark需要快速,但在不需要时,我们希望以其他方式使用这些计算资源。例如,我们要运行一些模拟,使用OpenMP进行本地线程处理,使用OpenMPI在集群中分配处理。这些需要一些时间来运行,我们希望仅在Spark不需要时才使用集群。是否可以将Spark配置为具有非常高的优先级并淘汰或饿死其他程序?来自Spark的configuration我看到了几个关于限制内存和内核使用