我现在有一个spark工作,它从HDFS中提取数据,并将数据转换为平面文件,以加载到Cassandra中。
我的spark-streaming应用程序有以下几行: 我试图将一系列对象写入cassandra中的表(以及文本文件)。我有以下代码: 此外,此异常: 错误QueryExecutor:执行失败:com.datastax.spark.connector.writer.richboundStatement@4892f8c2 com.datastax.driver.core.exceptions.noH
谢谢。
spark文档中有以下段落描述了yarn客户机和yarn集群之间的区别: 有两种部署模式可用于在Yarn上启动Spark应用程序。在集群模式下,Spark驱动程序运行在由集群上的YARN管理的应用程序主进程中,客户端可以在启动应用程序后离开。在客户端模式下,驱动程序在客户端进程中运行,应用程序主程序仅用于从YARN请求资源。
我有一个Spark集群运行在hdfs之上的纱线模式。我启动了一个带有2个内核和2G内存的worker。然后我提交了一个具有3个核心的1个执行器动态配置的作业。不过,我的工作还能运转。有人能解释启动worker的内核数量和为执行者请求的内核数量之间的差异吗。我的理解是,由于执行者在工人内部运行,他们无法获得比工人可用的资源更多的资源。
我读到过,太多的小分区会因为开销而损害性能,例如,向执行器发送大量任务。 使用最大的分区的缺点是什么?例如,为什么我会看到100s的MB范围内的建议? 如果丢失了一个分区,则需要进行大量的重新计算。对于许多较小的分区,您可能会更经常地丢失分区,但在运行时中的差异会更小。 如果在大分区上执行的少数任务中有一个任务的计算时间比其他任务长,这将使其他核心未被利用,但使用较小的分区,可以更好地在集群中分配
spark.executor.cores=2 spark.executor.memory=10GB 现在Spark在每个worker节点上启动一个Executor的JVM,对吗? 然后,在第一个会话使用configs进行之前,启动另一个Spark应用程序/会话 JVM的开销有多大?我的意思是,在用例2中,节点的RAM被分成7个JVM时,有多少RAM不会用于计算目的?
您从哪里开始调优上面提到的params。我们是从执行器内存开始,得到执行器的数目,还是从核心开始,得到执行器的数目。我跟踪了链接。然而得到了一个高水平的想法,但仍然不确定如何或从哪里开始并得出最终结论。
我正在从我的开发机器上启动spark-submit。 根据在YARN文档上运行Spark,我应该在env var或上为hadoop集群配置提供一个路径。这就是它变得棘手的地方:如果我将任务发送到远程YARN服务,为什么这些文件夹必须存在于我的本地机器上?这是否意味着spark-submit必须位于集群内部,因此我不能远程启动spark任务?如果没有,我应该用什么填充这些文件夹?我应该从任务管理器服
在yarn-cluster模式下,驱动程序在应用程序主程序中运行(在YARN集群内)。在yarn-client模式下,它在提交作业的client节点中运行 我想知道使用一种模式比使用另一种模式有什么好处?我们在什么情况下应该使用哪种模式。
我已经在一个15节点的Hadoop集群上安装了。所有节点都运行和最新版本的Hadoop。Hadoop集群本身是功能性的,例如,YARN可以成功地运行各种MapReduce作业。 我可以使用以下命令在节点上本地运行Spark Shell,而不会出现任何问题:。 你知道为什么我不能用客户端模式在纱线上运行Spark Shell吗?
然而,我不知道我是否真的需要一个插件,如果需要,是哪一个,以及如何去做它。我尝试使用'build/mvn'和'build/sbt'直接编译github源代码,但是'spark-assembly2.11-2.0.2.jar'文件只有283字节。 我的目标是使用较新版本的fat jar运行pyspark shell,其方式与这里提到的类似。
在Spark独立集群中,主节点是否也运行任务?我不确定是否有Executors进程在主节点上旋转并与工作节点一起工作。 谢了!
如果我们以RDD的形式处理存储在Spark本地磁盘中的一个大CSV文件(大小为1 GB),并将其重新划分到4个不同的分区,执行器会并行处理每个分区吗?如果我们不将RDD重新划分为4个不同的分区,执行器会怎么做?如果不使用HDFS,我们是否会失去分布式计算和并行性的能力?