千家信息网

Standalone client模式下怎么提交spark程序

发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,这篇文章主要讲解了"Standalone client模式下怎么提交spark程序",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Standalone
千家信息网最后更新 2025年12月04日Standalone client模式下怎么提交spark程序

这篇文章主要讲解了"Standalone client模式下怎么提交spark程序",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Standalone client模式下怎么提交spark程序"吧!

standalone client模式下,使用ClientApp提交spark程序。

此类在deploy/Client.scala文件中。

private[spark] class ClientApp extends SparkApplication {  override def start(args: Array[String], conf: SparkConf): Unit = {    val driverArgs = new ClientArguments(args)    val rpcEnv =      RpcEnv.create("driverClient", Utils.localHostName(), 0, conf, new SecurityManager(conf))    val masterEndpoints = driverArgs.masters.map(RpcAddress.fromSparkURL).      map(rpcEnv.setupEndpointRef(_, Master.ENDPOINT_NAME))    rpcEnv.setupEndpoint("client", new ClientEndpoint(rpcEnv, driverArgs, masterEndpoints, conf))    rpcEnv.awaitTermination()  }}

代码很简单。start方法就是创建一个ClientEndpoint,然后与Master交互。

ClientEndpoint的主要功能和方法:

override def onStart(): Unit = {    driverArgs.cmd match {      case "launch" =>        // TODO: We could add an env variable here and intercept it in `sc.addJar` that would        //       truncate filesystem paths similar to what YARN does. For now, we just require        //       people call `addJar` assuming the jar is in the same directory.        val mainClass = "org.apache.spark.deploy.worker.DriverWrapper"        val classPathConf = config.DRIVER_CLASS_PATH.key        val classPathEntries = getProperty(classPathConf, conf).toSeq.flatMap { cp =>          cp.split(java.io.File.pathSeparator)        }        val libraryPathConf = config.DRIVER_LIBRARY_PATH.key        val libraryPathEntries = getProperty(libraryPathConf, conf).toSeq.flatMap { cp =>          cp.split(java.io.File.pathSeparator)        }        val extraJavaOptsConf = config.DRIVER_JAVA_OPTIONS.key        val extraJavaOpts = getProperty(extraJavaOptsConf, conf)          .map(Utils.splitCommandString).getOrElse(Seq.empty)        val sparkJavaOpts = Utils.sparkJavaOpts(conf)        val javaOpts = sparkJavaOpts ++ extraJavaOpts        val command = new Command(mainClass,          Seq("{{WORKER_URL}}", "{{USER_JAR}}", driverArgs.mainClass) ++ driverArgs.driverOptions,          sys.env, classPathEntries, libraryPathEntries, javaOpts)        val driverResourceReqs = ResourceUtils.parseResourceRequirements(conf,          config.SPARK_DRIVER_PREFIX)        val driverDescription = new DriverDescription(          driverArgs.jarUrl,          driverArgs.memory,          driverArgs.cores,          driverArgs.supervise,          command,          driverResourceReqs)        asyncSendToMasterAndForwardReply[SubmitDriverResponse](          RequestSubmitDriver(driverDescription))      case "kill" =>        val driverId = driverArgs.driverId        asyncSendToMasterAndForwardReply[KillDriverResponse](RequestKillDriver(driverId))    }

封装一个org.apache.spark.deploy.worker.DriverWrapper类,然后将DriverDescription消息发送给Master,在Master上启动这个DriverWrapper。DriverWrapper很简单了,这里就不细说了,作用就是起一个线程,执行我们的spark程序的main方法。

感谢各位的阅读,以上就是"Standalone client模式下怎么提交spark程序"的内容了,经过本文的学习后,相信大家对Standalone client模式下怎么提交spark程序这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

程序 模式 就是 方法 学习 内容 代码 作用 功能 思路 情况 文件 文章 更多 消息 知识 知识点 篇文章 线程 跟着 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 和利时m6服务器离线是怎么回事 单片机软件开发软件 大连鸿科软件开发 medoo 连接数据库 修改服务器的安全认证模式 配置mysql数据库 邮件收发服务器设置 数据库中前景色为红色是多少 个人的发展离不开网络安全作文 街道奥运会期间网络安全保障工作总结 王者一直转圈服务器未响应 网络安全技术与实践第三版 问道手游最老的服务器 思科网络技术学院资料 网络安全管理思想 国外服务器优惠码 阿里巴巴软件开发工作时间 2017互联网大会科技 新疆首届网络安全知识竞赛 软件开发需求和管理表格 天津网络技术分类服务标准 网络安全专业是什么时候上的 软件开发与网络有关吗 徐汇区企业数据库研发诚信服务 地理信息系统软件开发 邢台企业软件开发费用 管理服务器和网络工作 软件开发转行做数据分析师 浙江软件开发者攻略 打开一个文件用于只读数据库
0