Verbindung zu einem remote-Spark master - Java / Scala

Erstellte ich eine mit 3 Knoten (1 master, 2 Arbeiter) Apache Spark - cluster in der AWS. Ich bin in der Lage, Druckaufträge an den cluster aus dem master, aber ich kann es nicht aus der Ferne arbeiten.

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "/usr/local/spark/README.md" //Should be some file on your system
    val conf = new SparkConf().setAppName("Simple Application").setMaster("spark://ec2-54-245-111-320.compute-1.amazonaws.com:7077")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println(s"Lines with a: $numAs, Lines with b: $numBs")
    sc.stop()
  }
}

Kann ich sehen, von der master:

Spark Master at spark://ip-171-13-22-125.ec2.internal:7077
URL: spark://ip-171-13-22-125.ec2.internal:7077
REST URL: spark://ip-171-13-22-125.ec2.internal:6066 (cluster mode)

also wenn ich ausführen SimpleApp.scala von meiner lokalen Maschine, es nicht zu verbinden, die die Spark Master:

2017-02-04 19:59:44,074 INFO  [appclient-register-master-threadpool-0] client.StandaloneAppClient$ClientEndpoint (Logging.scala:54)  [] - Connecting to master spark://ec2-54-245-111-320.compute-1.amazonaws.com:7077...
2017-02-04 19:59:44,166 WARN  [appclient-register-master-threadpool-0] client.StandaloneAppClient$ClientEndpoint (Logging.scala:87)  [] - Failed to connect to spark://ec2-54-245-111-320.compute-1.amazonaws.com:7077
org.apache.spark.SparkException: Exception thrown in awaitResult
    at org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse(RpcTimeout.scala:77) ~[spark-core_2.10-2.0.2.jar:2.0.2]
    at org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse(RpcTimeout.scala:75) ~[spark-core_2.10-2.0.2.jar:2.0.2]
    at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) ~[scala-library-2.10.0.jar:?]
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:59) ~[spark-core_2.10-2.0.2.jar:2.0.2]

Aber ich weiß, es würde gearbeitet haben, wenn ich hatte den Meister zu local, denn dann würde es lokal laufen. Allerdings habe ich an meinem client die Verbindung zu dieser remote-master. Wie kann ich erreichen, dass? Die Apache-Konfiguration sieht-Datei. Ich kann auch mit telnet auf die public-DNS und port habe ich auch konfiguriert /etc/hosts mit dem öffentlichen DNS-und Hostnamen für jede der EC2 Instanzen.
Ich möchte in der Lage sein, um jobs zu dieser remote-master, was bin ich?

InformationsquelleAutor cybertextron | 2017-02-05
Schreibe einen Kommentar