CDH 运行Spark 应用程序

翻译: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_running_spark_apps.html
版本: 5.14.2

您可以在本地运行Spark应用程序,也可以通过使用交互式shell或通过提交应用程序在集群中分布运行Spark应用程序。以交互方式运行Spark应用程序通常在数据探索阶段和临时分析期间执行。

由于Scala编译代码的方式存在限制,因此在交互式shell中运行嵌套定义的应用程序可能会遇到 Task not serializable 异常。Cloudera建议提交运行这些应用程序。

要运行分布在集群中的应用程序,Spark需要一个集群管理器。Cloudera支持两个群集管理器:YARN和Spark Standalone。当在YARN上运行时,Spark应用程序进程由YARN ResourceManager和NodeManager角色管理。当在Spark Standalone上运行时,Spark应用程序进程由Spark Master和Worker角色管理。

在CDH 5中,Cloudera建议在YARN群集管理器上而不是在Spark Standalone群集管理器上运行Spark应用程序,以获得以下好处:

  • 您可以在YARN上运行的所有框架之间动态共享和集中配置相同的群集资源池。
  • 您可以使用YARN调度程序的所有功能对工作负载进行分类,隔离和优先化。
  • 您选择要使用的执行程序的数量; 相反,Spark Standalone需要每个应用程序在集群中的每个主机上运行一个执行程序。
  • Spark可以针对启用了Kerberos的Hadoop集群运行,并在其进程之间使用安全身份验证

有关监视Spark应用程序的信息,请参阅监视Spark应用程序

继续阅读:

提交Spark应用程序

要提交由Python文件或已编译和打包的Java或Spark JAR组成的应用程序,请使用 spark-submit 。

spark-submit语法

spark-submit --option value \
  application jar | python file [application arguments]

例子:在YARN上运行SparkPi演示了如何运行一个示例应用程序, SparkPi,与Spark包装在一起。它计算出pi的近似值。

spark-submit参数

选项描述
application jar包含Spark应用程序的JAR文件的路径。对于客户端 部署模式,路径必须指向本地文件。对于集群部署模式,路径可以是本地文件,也可以是集群内全局可见的URL; 请参阅高级依赖关系管理
python file包含Spark应用程序的Python文件的路径。对于客户端 部署模式,路径必须指向本地文件。对于集群部署模式,路径可以是本地文件,也可以是集群内全局可见的URL; 请参阅高级依赖关系管理
application arguments参数传递给你的应用程序的主要方法。

spark-submit选项

你指定 spark-submit 参数, 使用–optionvalue 的形式,而不是 –option=value. (使用空格而不是等号。)

选项描述
class对于Java和Scala应用程序,包含应用程序main方法的类的完全限定类名。例如,org.apache.spark.examples.SparkPi。
confspark配置属性 以key=value的格式。对于包含空格的值,用引号括起“key=value ”(如所示)。
deploy-mode部署模式:cluster、client 。在集群模式下,dirver在工作主机上运行。在客户端模式下,driver作为外部客户端在本地运行。对生产作业使用群集模式; 客户端模式更适用于交互和调试用途,希望立即看到您的应用程序输出。要查看在YARN上运行的部署效果 ,请参阅部署模式。默认:client。
driver-class-path传递给驱动程序的配置和类路径 。添加了–jar的JAR自动包含在类路径中。
driver-cores集群模式下驱动程序使用的内核数量。默认值:1。
driver-memory分配给驱动程序的最大堆大小(表示为JVM字符串;例如1024m,2g等)。或者,您可以使用spark.driver.memory 属性。
files逗号分隔的文件列表将放置在每个执行程序的工作目录中。对于 客户端部署模式,路径必须指向本地文件。对于集群部署模式,路径可以是本地文件,也可以是集群内全局可见的URL; 请参阅高级依赖关系管理
jars在集群模式下或在客户端模式下 加载到类路径中其他JAR。对于客户端部署模式,路径必须指向本地文件。对于集群部署模式,路径可以是本地文件,也可以是集群内全局可见的URL; 请参阅高级依赖关系管理
master运行应用程序的位置
packages包含在驱动程序和执行程序类路径中的JAR,以Maven坐标表示的使用逗号分隔的列表。本地Maven,Maven中心和远程存储库在中指定repositories 都被按照顺序进行搜索。坐标的格式是 groupId:artifactId:version.
py-files逗号分隔的.zip,.egg或.py文件的列表 ,在PYTHONPATH下。对于客户端部署模式,路径必须指向本地文件。对于集群部署模式,路径可以是本地文件,也可以是集群内全局可见的URL; 请参阅高级依赖关系管理
repositories以逗号分隔的远程仓库列表,用来搜索中指定的Maven坐标包。

Master Values

Master描述
local使用一个工作线程在本地运行Spark(即,无并行)。
local[K]使用 K 工作线程在本地运行Spark 。(理想情况下,将其设置为主机上的核心数量。)
local[*]使用与主机上的逻辑内核一样多的工作线程在本地运行Spark。
spark://host:port在指定的主机和端口上使用Spark Standalone群集管理器和Spark Master(默认情况下为7077)运行。
yarn使用YARN集群管理器运行。群集位置由HADOOP_CONF_DIR or YARN_CONF_DIR. 确定。请参阅配置环境

群集执行概述

Spark通过驱动程序编排其操作。当驱动程序运行时,Spark框架将初始化用于处理数据的集群主机上的执行程序进程。将Spark应用程序提交到群集时会发生以下情况:

  1. 驱动程序启动并调用main方法在Spark应用程序中。
  2. 驱动程序向集群管理器请求资源以启动执行程序。
  3. 集群管理器代表驱动程序启动执行程序。
  4. 驱动程序运行该应用程序。基于应用程序中的转换和操作,驱动程序将任务发送给执行者。
  5. 任务在执行程序上运行以计算并保存结果。
  6. 如果启用动态分配,则在执行程序空闲指定的时间段后,它们将被释放。
  7. 当driver的 main方法退出或调用 SparkContext.stop 它会终止任何未完成的执行程序并从集群管理器释放资源。
    原文作者:金刚_30bf
    原文地址: https://www.jianshu.com/p/07212e000a4b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞