首页 文章

在分布式cassandra DSE spark集群上执行作业

提问于
浏览
1

我有三个节点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字节) . 我缺少任何性能调整参数吗?

1 回答

  • 2

    你可能想要改变一些事情 . 阻止你在多台机器上运行的主要原因是

    .setMaster("local")

    它指示应用程序不应使用分布式资源管理器,而应在应用程序进程中本地运行所有内容 . 使用DSE,您应该遵循relevant documentation或以Spark Build Examples开头 .

    此外,你很可能永远不想设置

    .set("spark.driver.allowMultipleContexts", "true")

    在一个JVM中有多个Spark上下文是有问题的,通常意味着事情没有正确设置 .

相关问题