2017-10-25 10 views
2

私が達成しようとしているのは、スマートコネクタモードに似ていますが、スマートコネクタの例はSpark-Shellをベースにしているため、スタンドアロンのScalaアプリケーションを実行しようとしています。したがって、私はSpark-Shellに--conf引数を使用することはできません。SnappyData:組み込みクラスタにスタンドアロンスパークジョブを接続

私のスパークマスターを探してみると、私はSnappyDataウェブインターフェイスを調べました。私は、次を発見した:

host-data="false" 
locators="xxx.xxx.xxx.xxx:10334" 
log-file="snappyleader.log" 
mcast-port="0" 
member-timeout="30000" 
persist-dd="false" 
route-query="false" 
server-groups="IMPLICIT_LEADER_SERVERGROUP" 
snappydata.embedded="true" 
spark.app.name="SnappyData" 
spark.closure.serializer="org.apache.spark.serializer.PooledKryoSerializer" 
spark.driver.host="xxx.xxx.xxx.xxx" 
spark.driver.port="37838" 
spark.executor.id="driver" 
spark.local.dir="/var/opt/snappydata/lead1/scratch" 
spark.master="snappydata://xxx.xxx.xxx.xxx:10334" 
spark.memory.manager="org.apache.spark.memory.SnappyUnifiedMemoryManager" 
spark.memory.storageFraction="0.5" 
spark.scheduler.mode="FAIR" 
spark.serializer="org.apache.spark.serializer.PooledKryoSerializer" 
spark.ui.port="5050" 
statistic-archive-file="snappyleader.gfs" 
--- end -- 

(IPアドレスは今のところ、一つのホスト上のすべてです。)

私はちょうど私のクラスタの作業を取得しテストするために、簡単な例のスパーク仕事をしている:

import org.apache.spark.sql.SparkSession 
import org.apache.spark.sql.SnappySession 
import org.apache.spark.sql.Dataset 

object snappytest{ 
    case class Person(name: String, age: Long) 

    def main(args: Array[String]): Unit = { 
    val spark: SparkSession = SparkSession 
     .builder() 
     .appName("SnappyTest") 
     .master("snappydata://xxx.xxx.xxx.xxx:10334") 
     .getOrCreate() 
    val snappy = new SnappySession(spark.sparkContext) 

    import spark.implicits._ 

    val caseClassDS = Seq(Person("Andy", 35)).toDS() 
    println(Person) 
    println(snappy) 
    println(spark) 
    } 
} 

そして私、このエラーを得た:

17/10/25 14:44:57 INFO ServerConnector: Started [email protected]{HTTP/1.1}{0.0.0.0:4040} 
17/10/25 14:44:57 INFO Server: Started @2743ms 
17/10/25 14:44:57 INFO Utils: Successfully started service 'SparkUI' on port 4040. 
17/10/25 14:44:57 INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://xxx.xxx.xxx.xxx:4040 
17/10/25 14:44:57 INFO SnappyEmbeddedModeClusterManager: setting from url snappydata.store.locators with xxx.xxx.xxx.xxx:10334 
17/10/25 14:44:58 INFO LeadImpl: cluster configuration after overriding certain properties 
jobserver.enabled=false 
snappydata.embedded=true 
snappydata.store.host-data=false 
snappydata.store.locators=xxx.xxx.xxx.xxx:10334 
snappydata.store.persist-dd=false 
snappydata.store.server-groups=IMPLICIT_LEADER_SERVERGROUP 
spark.app.name=SnappyTest 
spark.driver.host=xxx.xxx.xxx.xxx 
spark.driver.port=35602 
spark.executor.id=driver 
spark.master=snappydata://xxx.xxx.xxx.xxx:10334 
17/10/25 14:44:58 INFO LeadImpl: passing store properties as {spark.driver.host=xxx.xxx.xxx.xxx, snappydata.embedded=true, spark.executor.id=driver, persist-dd=false, spark.app.name=SnappyTest, spark.driver.port=35602, spark.master=snappydata://xxx.xxx.xxx.xxx:10334, member-timeout=30000, host-data=false, default-startup-recovery-delay=120000, server-groups=IMPLICIT_LEADER_SERVERGROUP, locators=xxx.xxx.xxx.xxx:10334} 
NanoTimer::Problem loading library from URL path: /home/jpride/.ivy2/cache/io.snappydata/gemfire-core/jars/libgemfirexd64.so: java.lang.UnsatisfiedLinkError: no gemfirexd64 in java.library.path 
NanoTimer::Problem loading library from URL path: /home/jpride/.ivy2/cache/io.snappydata/gemfire-core/jars/libgemfirexd64.so: java.lang.UnsatisfiedLinkError: no gemfirexd64 in java.library.path 
Exception in thread "main" org.apache.spark.SparkException: Primary Lead node (Spark Driver) is already running in the system. You may use smart connector mode to connect to SnappyData cluster. 

それでは、どのように私は(?私は必要があります)、この場合、スマートコネクタモードを使用していますか?

答えて

2

あなたはあなたの例のスパークジョブに次のように指定する必要があります -

走っ
.master("local[*]") 
.config("snappydata.connection", "xxx.xxx.xxx.xxx:1527") 
+0

、感謝を!あなたはそれがポート1527であることをどのように知っていましたか?デフォルト?どこで見つけることができますか? しかし、それは意図を完全に満たしていませんでした。スマートコネクタモードで別のSparkクラスタを実行するのではなく、SnappyDataクラスターに接続してジョブを実行しますが、Snappy-Submitは使用しません。そうすれば、私はアプリケーションをローカルでデバッグできますが、クラスタの動作を観察できます。 エラーメッセージ "...(スパークドライバ)が既にシステムで実行中です。" "local [*]"を使用する代わりに、そのドライバーをマスターとして接続するにはどうすればよいですか? –

+1

したがって、ある種のデバッグ環境(IDE)でジョブを実行したいのに、組み込みモードで動作させたいのですか?これが可能だとは思わないでください。今日、埋め込みモードを使用するには、ジョブをRestエンドポイント(鉛)に提出する必要があります。 – jagsr

+1

あなたは何を理解しようとしていますか?スニッピージョブを実行すると、ダッシュボードの[Spark(スパーク)]タブには、ジョブを実行するための詳細が十分に表示されます。また、ローカルモードで実行している場合でも、内部の動作を理解するためにデバッガをステップ実行することができます。 – jagsr

関連する問題