当前位置: 首页 > 知识库问答 >
问题:

连接到远程Spark Master-Java/Scala

郑理
2023-03-14
/* 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()
  }
}
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)

因此,当我从本地计算机执行simpleapp.scala时,它无法连接到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]

但是,我知道如果我将主程序设置为local,它就会起作用,因为这样它就会在本地运行。但是,我想让我的客户端连接到这个远程主机。我怎么才能做到?Apache配置看起来是文件。我甚至可以远程登录到该公共DNS和端口,我还为每个EC2实例配置了/etc/hosts公共DNS和主机名。我希望能够向这个远程主机提交作业,我错过了什么?

共有1个答案

戚研
2023-03-14

要绑定主主机名/IP,请转到spark安装conf目录(spark-2.0.2-bin-hadoop2.7/conf),并使用以下命令创建spark-env.sh文件。

cp spark-env.sh.template spark-env.sh

在vi编辑器中打开spark-env.sh文件,并在下面添加主机名/ip。

SPARK_MASTER_HOST=ec2-54-245-111-320.compute-1.amazonaws.com

使用stop-all.sh和start-all.sh停止和启动Spark。现在您可以使用它连接远程主机,使用

val spark = SparkSession.builder()
  .appName("SparkSample")
  .master("spark://ec2-54-245-111-320.compute-1.amazonaws.com:7077")
  .getOrCreate()
 类似资料:
  • 问题内容: 我在AWS中创建了一个3节点(1个主节点,2个工作人员)集群。我可以将作业从主服务器提交到群集,但是我无法使其在远程工作。 我可以从主人那里看到: 因此,当我从本地计算机执行时,它无法连接到: 但是,我知道如果将master设置为,它会起作用,因为那样它将在本地运行。但是,我希望客户端连接到该远程主服务器。我该怎么做?Apache配置外观文件。我什至可以远程登录到该公共DNS和端口,还

  • 该应用程序有一个类,使用以下行创建上下文 其中这个IP是火花工作的机器的IP。

  • 问题内容: 我想在一台机器上运行一个IPython实例,并通过另一个进程(运行一些python命令)(通过LAN)连接到它。我了解zmq是可能的:http : //ipython.org/ipython- doc/dev/development/ipythonzmq.html 。 但是,我找不到有关如何执行操作以及是否可行的文档。 任何帮助,将不胜感激! 编辑 我希望能够连接到IPython内核实

  • 我已经创建了一个redis集群,它自己是工作的,但我不能连接我的客户到它。 我正在使用redisson连接到它,下面的代码 其中,redisURL是csv,格式为:,但包含集群中的所有6个节点。

  • 在我们的项目中实现MBean(以独立模式部署在JBoss AS 7.1.1上)后,我使用JConsole执行了一些测试并创建了一个“本地进程”连接(使用JBoss PID的连接),这工作正常。可以看到、到达并返回预期值的MBean。但是我无法使用“远程进程”进行连接。 这是JMX子系统配置: 这是套接字配置: 我在那里找到了几种URL使用方法,但我用不同的建议端口(9990959510904447

  • 我在A机上设置了伪分布式模式的Hadoop和Hbase,我正在B机上运行我的客户端(Java程序)(A机和B机可以互相通信)。但我这样做面临问题。 我的客户端代码如下所示: 配置config=HBaseConfiguration.create(); config.set(“HBase.ZookeePer.quorum”,zookeeperLocation);config.set(“hbase.zo