【问题标题】:Run Spark in IntelliJ Idea on Standalone Cluster with Master on same Windows Machine在同一台 Windows 机器上使用 Master 在独立集群上的 IntelliJ Idea 中运行 Spark
【发布时间】:2016-07-14 21:04:54
【问题描述】:

在将 master 设置为本地 [*] 时,我已经能够在 IntelliJ Idea 中成功运行 Spark 应用程序。但是,当我将 master 设置为 Spark 的单独实例时,会发生异常。

我正在尝试执行的 SparkPi 应用程序如下。

import scala.math.random

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf

/** Computes an approximation to pi */
object SparkPi {
  def main(args: Array[String]) {
    val conf = new SparkConf().setMaster("spark tjvrlaptop:7077").setAppName("Spark Pi") //.set("spark.scheduler.mode", "FIFO").set("spark.cores.max", "8")
    val spark = new SparkContext(conf)
    val slices = if (args.length > 0) args(0).toInt else 20
    val n = math.max(100000000L * slices, Int.MaxValue).toInt // avoid overflow

    for(j <- 1 to 1000000) {
      val count = spark.parallelize(1 until n, slices).map { i =>
        val x = random * 2 - 1
        val y = random * 2 - 1
        if (x * x + y * y < 1) 1 else 0
      }.reduce(_ + _)
      println("Pi is roughly " + 4.0 * count / n)
    }
    spark.stop()
  }
}

这是我的 build.sbt 内容:

name := "SBTScalaSparkPi"

version := "1.0"

scalaVersion := "2.10.6"

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"

这是我的 plugins.sbt 内容:

logLevel := Level.Warn

我通过在同一台机器上的不同命令提示符中使用以下命令来执行 Spark Master 和一个 worker。

spark-1.6.1-bin-hadoop2.6\bin>spark-class org.apache.spark.deploy.master.Master --host tjvrlaptop

spark-1.6.1-bin-hadoop2.6\bin>spark-class org.apache.spark.deploy.worker.Worker spark tjvrlaptop:7077

[Master 和 Worker 似乎启动并运行没有任何问题][1]

[1]:http i.stack.imgur.com/B3BDZ.png

接下来我尝试在 IntelliJ 中运行该程序。一段时间后它失败并出现以下错误:

Master 正在运行的命令提示符

16/03/27 14:44:33 INFO Master: Registering app Spark Pi
16/03/27 14:44:33 INFO Master: Registered app Spark Pi with ID app-20160327144433-0000
16/03/27 14:44:33 INFO Master: Launching executor app-20160327144433-0000/0 on worker

worker-20160327140440-192.168.56.1-52701 16/03/27 14:44:38 INFO Master:收到来自应用程序 app-20160327144433-0000 的注销请求 16/03/27 14:44:38 INFO Master:删除应用程序 app-20160327144433-0000 16/03/27 14:44:38 INFO Master:TJVRLAPTOP:55368 已解除关联,将其删除。 16/03/27 14:44:38 INFO Master: 192.168.56.1:55350 已解除关联,将其删除。 27 年 16 月 3 日 14:44:38 WARN Master:得到未知执行者 app-20160327144433-0000/0 的状态更新

Worker 正在运行的命令提示符

16/03/27 14:44:34 INFO Worker:要求启动执行器 适用于 Spark Pi 的 app-20160327144433-0000/0 16/03/27 14:44:34 信息 SecurityManager:将视图 acls 更改为:tjoha 16/03/27 14:44:34 INFO SecurityManager:将修改 acls 更改为:tjoha 16/03/27 14:44:34 INFO SecurityManager:SecurityManager:禁用身份验证;用户界面 acl 禁用;具有查看权限的用户:Set(tjoha);有修改的用户 权限:设置(tjoha)16/03/27 14:44:34 INFO ExecutorRunner:启动 命令:“C 程序文件\Java\jre1.8.0_77\bin\java”“-cp” "C 用户\tjoha\Documents\spark-1.6.1-bin-hadoop2.6\bin..\conf\;C 用户\tjoha\Documents\spark-1.6.1-bin-hadoop2.6\bin..\ lib\spark-assembly-1.6.1-hadoop2.6.0.jar;C 用户\tjoha\Documents\spark-1.6.1-bin-hadoop2.6\bin..\lib\datanucleus-api-jdo-3.2.6 .jar;C 用户\tjoha\Documents\spark-1.6.1-bin-hadoop2.6\bin..\lib\datanucleus-core-3.2.10.jar;C 用户\tjoha\Documents\spark-1.6.1 -bin-hadoop2.6\bin..\lib\datanucleus-rdbms-3.2.9.jar" “-Xms1024M” “-Xmx1024M” “-Dspark.driver.port=55350” “org.apache.spark.executor.CoarseGrainedExecutorBackend” "--driver-url" "spark CoarseGrainedScheduler@192.168.56.1:55350" “--executor-id” “0” “--hostname” “192.168.56.1” “--cores” “8” “--app-id” “app-20160327144433-0000” “--worker-url” “spark Worker@192.168.56.1:52701” 16/03/27 14:44:38 信息工作者: 要求杀死执行者 app-20160327144433-0000/0 16/03/27 14:44:38 INFO ExecutorRunner:执行器的运行线程 app-20160327144433-0000/0 中断 16/03/27 14:44:38 信息 ExecutorRunner:杀死进程! 16/03/27 14:44:38 信息工作者: 执行程序 app-20160327144433-0000/0 完成状态为 KILLED exitStatus 1 16/03/27 14:44:38 INFO Worker:清理本地 应用程序 app-20160327144433-0000 16/03/27 14:44:38 的目录 信息 ExternalShuffleBlockResolver:应用程序 app-20160327144433-0000 移除,cleanupLocalDirs = true

IntelliJ 创意输出

使用 Spark 的默认 log4j 配置文件: org/apache/spark/log4j-defaults.properties 16/03/27 15:06:04 信息 SparkContext:运行 Spark 版本 1.6.1 16/03/27 15:06:05 WARN NativeCodeLoader:无法为您的本地 Hadoop 库加载 平台...在适用的情况下使用内置 java 类 16/03/27 15:06:05 INFO SecurityManager:将视图 acls 更改为:tjoha 16/03/27 15:06:05 INFO SecurityManager:将修改 acls 更改为:tjoha 16/03/27 15:06:05 INFO SecurityManager:SecurityManager:身份验证 禁用; ui acls 禁用;具有查看权限的用户:Set(tjoha); 具有修改权限的用户:Set(tjoha) 16/03/27 15:06:06 INFO 实用程序:在端口 56183 上成功启动服务“sparkDriver”。 16/03/27 15:06:07 信息 Slf4jLogger:Slf4jLogger 于 16/03/27 开始 15:06:07 INFO 远程处理:开始远程处理 16/03/27 15:06:07 INFO 远程处理:远程处理开始;监听地址 :[akka tcp sparkDriverActorSystem@192.168.56.1:56196] 16/03/27 15:06:07 INFO Utils: 成功启动服务 端口 56196 上的“sparkDriverActorSystem”。27 年 16 月 3 日 15:06:07 信息 SparkEnv:注册 MapOutputTracker 16/03/27 15:06:07 INFO SparkEnv:注册 BlockManagerMaster 16/03/27 15:06:07 INFO DiskBlockManager:在 C 用户\tjoha\AppData\Local\Temp\blockmgr-9623b0f9-81f5-4a10-bbc7-ba077d53a2e5 16/03/27 15:06:07 INFO MemoryStore: MemoryStore 以容量启动 2.4 GB 16/03/27 15:06:07 信息 SparkEnv:注册 OutputCommitCoordinator 16/03/27 15:06:07 WARN Utils:服务 “SparkUI”无法绑定端口 4040。尝试端口 4041。27 年 3 月 16 日 15:06:07 INFO Utils:在端口上成功启动服务“SparkUI” 4041. 16/03/27 15:06:07 信息 SparkUI:在 http 192.168.56.1:4041 16/03/27 15:06:08 信息处启动 SparkUI AppClient$ClientEndpoint:连接到 master 火花 tjvrlaptop:7077... 16/03/27 15:06:09 信息 SparkDeploySchedulerBackend:使用应用 ID 连接到 Spark 集群 app-20160327150608-0002 16/03/27 15:06:09 信息 AppClient$ClientEndpoint:执行者添加:app-20160327150608-0002/0 on 工人 20160327150550-192.168.56.1-56057 (192.168.56.1:56057) 与 8 核心 16/03/27 15:06:09 信息 SparkDeploySchedulerBackend:授予 hostPort 192.168.56.1:56057 上的执行程序 ID app-20160327150608-0002/0 8 核,1024.0 MB RAM 16/03/27 15:06:09 信息 AppClient$ClientEndpoint:执行程序更新:app-20160327150608-0002/0 is now RUNNING 16/03/27 15:06:09 INFO Utils: 成功启动 服务 'org.apache.spark.network.netty.NettyBlockTransferService' 开启 端口 56234。16/03/27 15:06:09 信息 NettyBlockTransferService:服务器 创建于 56234 16/03/27 15:06:09 信息 BlockManagerMaster:正在尝试 注册 BlockManager 16/03/27 15:06:09 INFO BlockManagerMasterEndpoint:注册块管理器 192.168.56.1:56234,2.4 GB RAM,BlockManagerId(驱动程序,192.168.56.1,56234)16/03/27 15:06:09 信息 BlockManagerMaster:已注册 BlockManager 16/03/27 15:06:09 信息 SparkDeploySchedulerBackend:SchedulerBackend 准备好调度 在达到 minRegisteredResourcesRatio 后开始:0.0 16/03/27 15:06:10 信息 SparkContext:开始工作:SparkPi.scala:37 的减少 16/03/27 15:06:10 INFO DAGScheduler:得到工作 0(减少在 SparkPi.scala:37) 具有 20 个输出分区 16/03/27 15:06:10 INFO DAGScheduler:最后阶段:ResultStage 0(在 SparkPi.scala:37 处减少) 16/03/27 15:06:10 INFO DAGScheduler: 最后阶段的父母: List() 16/03/27 15:06:10 信息 DAGScheduler:失踪父母:List() 16/03/27 15:06:10 INFO DAGScheduler:提交结果阶段 0 (MapPartitionsRDD[1] at map at SparkPi.scala:33),没有遗漏 父母 16/03/27 15:06:10 INFO MemoryStore: 块广播_0 已存储 作为内存中的值(估计大小 1880.0 B,空闲 1880.0 B)16/03/27 15:06:10 INFO MemoryStore:块 broadcast_0_piece0 存储为字节 内存(估计大小 1212.0 B,可用 3.0 KB) 16/03/27 15:06:10 INFO BlockManagerInfo:在内存中添加了 broadcast_0_piece0 192.168.56.1:56234(大小:1212.0 B,免费:2.4 GB)16/03/27 15:06:10 INFO SparkContext:从广播创建广播 0 DAGScheduler.scala:1006 16/03/27 15:06:10 信息 DAGScheduler: 从 ResultStage 0 (MapPartitionsRDD[1] at 地图 SparkPi.scala:33) 16/03/27 15:06:10 INFO TaskSchedulerImpl: 添加任务集 0.0 和 20 个任务 16/03/27 15:06:14 INFO SparkDeploySchedulerBackend:注册的执行者 NettyRpcEndpointRef(null) (TJVRLAPTOP:56281) 与 ID 0 16/03/27 15:06:14 INFO TaskSetManager:在阶段 0.0(TID 0, TJVRLAPTOP,分区 0,PROCESS_LOCAL,2078 字节)16/03/27 15:06:14

...

TJVRLAPTOP,分区 6,PROCESS_LOCAL,2078 字节)16/03/27 15:06:14 INFO TaskSetManager:在阶段 0.0(TID 7, TJVRLAPTOP,分区 7,PROCESS_LOCAL,2078 字节)16/03/27 15:06:14 INFO BlockManagerMasterEndpoint:注册块管理器 TJVRLAPTOP:56319 具有 511.1 MB RAM, BlockManagerId(0, TJVRLAPTOP, 56319) 16/03/27 15:06:15 信息 BlockManagerInfo:已添加 内存中的广播_0_piece0 TJVRLAPTOP:56319(大小:1212.0 B, 免费:511.1 MB)16/03/27 15:06:15 信息 TaskSetManager:开始任务 阶段 0.0 中的 8.0(TID 8,TJVRLAPTOP,分区 8,PROCESS_LOCAL,2078 字节) 16/03/27 15:06:15 INFO TaskSetManager:在启​​动任务 9.0 阶段 0.0(TID 9,TJVRLAPTOP,分区 9,PROCESS_LOCAL,2078 字节) 16/03/27 15:06:15 INFO TaskSetManager:在阶段 0.0 启动任务 10.0 (TID 10,TJVRLAPTOP,分区 10,PROCESS_LOCAL,2078 字节)16/03/27 15:06:15 INFO TaskSetManager:在阶段 0.0 启动任务 11.0(TID 11, TJVRLAPTOP,分区 11,PROCESS_LOCAL,2078 字节)16/03/27 15:06:15

...

java.lang.ClassNotFoundException: SparkPi$$anonfun$main$1$$anonfun$1 在 java.net.URLClassLoader.findClass(Unknown Source) 在 java.lang.ClassLoader.loadClass(Unknown Source) 在 java.lang.ClassLoader.loadClass(Unknown Source) 在 java.lang.Class.forName0(本机方法)在 java.lang.Class.forName(未知来源)在 org.apache.spark.serializer.JavaDeserializationStream$$anon$1.resolveClass(JavaSerializer.scala:68) 在 java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) 在 java.io.ObjectInputStream.readClassDesc(Unknown Source) 在 java.io.ObjectInputStream.readOrdinaryObject(未知来源)在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.defaultReadFields(未知来源)在 java.io.ObjectInputStream.readSerialData(未知来源)在 java.io.ObjectInputStream.readOrdinaryObject(未知来源)在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.defaultReadFields(未知来源)在 java.io.ObjectInputStream.readSerialData(未知来源)在 java.io.ObjectInputStream.readOrdinaryObject(未知来源)在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.defaultReadFields(未知来源)在 java.io.ObjectInputStream.readSerialData(未知来源)在 java.io.ObjectInputStream.readOrdinaryObject(未知来源)在 java.io.ObjectInputStream.readObject0(未知来源)在 java.io.ObjectInputStream.readObject(Unknown Source) 在 org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:76) 在 org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:115) 在 org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61) 在 org.apache.spark.scheduler.Task.run(Task.scala:89) 在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(Unknown Source) 16/03/27 15:06:15 信息 TaskSetManager:在执行程序的阶段 0.0 (TID 5) 中丢失任务 5.0 TJVRLAPTOP:java.lang.ClassNotFoundException (SparkPi$$anonfun$main$1$$anonfun$1) [重复 1] 16/03/27 15:06:15 INFO TaskSetManager:在执行程序的阶段 0.0 (TID 3) 中丢失任务 3.0 TJVRLAPTOP: java.lang.ClassNotFoundException

...

INFO TaskSetManager:在阶段 0.0 启动任务 10.1(TID 20, TJVRLAPTOP,分区 10,PROCESS_LOCAL,2078 字节)16/03/27 15:06:15

...

TJVRLAPTOP,分区 3,PROCESS_LOCAL,2078 字节)16/03/27 15:06:15 信息 TaskSetManager:在执行程序的阶段 0.0 (TID 4) 中丢失任务 4.0 TJVRLAPTOP:java.lang.ClassNotFoundException (SparkPi$$anonfun$main$1$$anonfun$1) [重复 8] 16/03/27 15:06:15 信息 TaskSetManager:在执行程序的阶段 0.0 (TID 12) 中丢失任务 12.0 TJVRLAPTOP: java.lang.ClassNotFoundException

...

INFO TaskSetManager:在阶段 0.0 启动任务 2.3(TID 39, TJVRLAPTOP,分区 2,PROCESS_LOCAL,2078 字节)16/03/27 15:06:16 MapOutputTrackerMasterEndpoint 停止! 16/03/27 15:06:16 警告 TransportChannelHandler:连接异常 TJVRLAPTOP/192.168.56.1:56281 java.io.IOException:一个现有的 连接被远程主机强行关闭 16/03/27 15:06:17 信息 MemoryStore:MemoryStore 已清除 16/03/27 15:06:17 信息 BlockManager:BlockManager 停止 16/03/27 15:06:17 信息 BlockManagerMaster:BlockManagerMaster 停止 16/03/27 15:06:17 信息 OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator 停止了! 16/03/27 15:06:17 信息 SparkContext: 成功停止 SparkContext 16/03/27 15:06:17 INFO ShutdownHookManager:称为 16/03/27 15:06:17 的关闭挂钩 RemoteActorRefProvider$RemotingTerminator:关闭远程 守护进程。 16/03/27 15:06:17 INFO ShutdownHookManager: 删除目录 C 用户\tjoha\AppData\Local\Temp\spark-11f8184f-23fb-43be-91bb-113fb74aa8b9

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    当您在嵌入式模式下运行时(本地[*]),Spark 在类路径中有所有必需的代码。

    当您在独立模式下运行时,您必须通过将 jar 复制到 lib 文件夹来使其对 Spark 明确可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 2012-10-26
      • 1970-01-01
      相关资源
      最近更新 更多