我有三个节点Cassandra DSE集群和数据库模式,RF = 3。现在我正在创建一个要在DSE spark上执行的scala应用程序。 Scala代码如下: -
package com.spark
import com.datastax.spark.connector._
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.sql._
import org.apache.spark.sql.SQLContext
object sample {
def main(args: Array[String]) {
val conf = new SparkConf()
.setMaster("local")
.setAppName("testing")
.set("spark.cassandra.connection.host", "192.168.0.40")
.set("spark.driver.allowMultipleContexts", "true")
.set("spark.executor.memory", "1g")
.set("spark.driver.memory", "1g")
.set("spark.driver.maxResultSize", "500M")
.set("spark.executor.heartbeatInterval", "30s")
.set("spark.submit.deployMode", "cluster")
val sc = new SparkContext(conf)
val lRDD = sc.cassandraTable("dbname", "tablename")
lRDD.collect.foreach(println)
}}
我正在使用
运行脚本dse> bin/dse spark-submit --class com.spark.sample --total-executor-cores 4 /home/db-svr/sample.jar
所以,现在我想从1个节点执行我的spark应用程序,但是系统应该在内部对3个节点进行处理,并且我想监视它,以便我可以共同利用3个节点的RAM和处理器。我怎么能这样做?
此外,此当前脚本需要花费大量时间才能生成结果(表大小为100万行,每行128字节)。是否有我缺少的性能调整参数?
答案 0 :(得分:2)
您可能想要改变一些事情。停止在多台机器上运行的主要原因是
.setMaster("local")
它指示应用程序不应该使用分布式资源管理器,而应该在应用程序进程中本地运行所有内容。使用DSE,您应该关注relevant documentation或从Spark Build Examples开始。
此外,你很可能永远不想设置
.set("spark.driver.allowMultipleContexts", "true")
在一个JVM中有多个Spark上下文会出现问题,通常意味着事情没有正确设置。