Spark用户文档.pdf

    快速入⻔
    Spark使用入⻔
    1. 入⻔资料:
    入⻔资料很重要,希望认真看一下.我们是精心挑选过,不会占用你过多时间.
    i. 阅读一下小米内部分享的Spark分享ppt精简版,了解Spark基本概念.(如果点击下载不了,可以
    右键然后新标签⻚打开即可下载)
    ii. 通过官方快速入⻔文档了解Spark的使用.(主要是下载一个tar包,然后执行一些示范命令)
    iii. 参考rdd编程官方文档学习RDD编程.这个文档RDDPersistence及之后的内容你可以先不
    看.
    iv. 参考官方例子学习如何完整的实现一个application(你可以先只看WordCount和Sparkpi
    这两个例子).更多例子参考⻚面最后的”AdditionalExamples”.这些例子在后续编写spark作
    业代码的时候也可以参考.
    v. 了解一下Spark在集群上的运行模式Sparkonclusters(只需要看一下Components)
    vi. 小米使用的是SparkonYARN模式,参考SparkonYARN学习一下这个概念(Preparations以
    及之后的内容可以先不看).如果你之前没接触过YARN,可以先看一下这个简短的文档YARN基
    本介绍.
    vii. (可选)对于SparkSQL用戶建议学习一下SparkSQL编程官方文档.
    入⻔资料的一些提问
    期望你能回答如下问题,如有问题请继续查看上面的文档:
    ▪ Spark有哪些基本组件?
    ▪ Spark中driver和executor分别是什么意思?
    ▪ 如何生成RDD?
    ▪ Spark中RDD,job,stage,task之间是什么关系?
    ▪ transformation和action的区别?
    ▪ 上面链接Sparkpi的例子中有几个rdd?几个stage?
    2. infra-client介绍
    看过上面的入⻔资料之后,会知道如何通过spark-submit提交作业(提交local模式作业),以及如何配
    置将作业提交到yarn(sparkonyarn提交作业).
    你一定觉得很麻烦!!
    但是小米通过infra-client解决了这个问题.infra-client的安装和使用参考infra-client使用(你只需
    要学习一下高级命令之前的内容)
    配置好infra-client之后,你不需要自己下载Spark包,不需要自己设置Hadoop配置.只需要类似下
    面的命令直接提交到你想要提交的Spark集群即可.

    1. ~/infra-client/bin/spark-submit --cluster c3prc-hadoop-spark2.1 --conf
    2. spark.yarn.job.owners=zhoukang --master yarn-cluster --driver-memory 2g --
    3. executor-memory 2g --queue root.development.cloud_group.hadoop.sparksql --class
    4. RemoteDebugDemo sparkassembly/spark-sqltest-1.0-SNAPSHOT.jar
    1. Spark on YARN
      前面提到,小米使用的是SparkonYARN模式.我们已经部署好了多个YARN集群.
      提交作业需要指定YARN的队列,否则会提交到默认队列,资源得不到保证.
      如果你们业务组还没有申请过队列,需要先到你想提交的集群对应的yarn集群申请队列.具体申请方
      法⻅YARNFAQ
      4. 编写Spark作业
      小米建议使用scala进行编写.参考如何使用scala和maven实现一个Spark作业
      5. 下一步
      如果上面的步骤都完成了,尝试提交一个作业到小米的Spark集群吧.
      Spark作业提交集群示例
      通过以下例子展示如何使用小米的spark执行任务.基本配置:
      ◦ Spark3.1/2.3版本
      ◦ zjyprc-hadoop-spark3.1/2.3集群
      ◦ Scala(我们推荐使用scala)
      ◦ 依赖SparkCore
      注意:依赖其他版本的spark;提交其他集群;使用spark其他模块等情况.作业的提交和执行都和以下
      流程类似.
      这个例子本身很精简,是统计数组奇偶数的个数,主要突出如何获取依赖,如何编码,提交作业到集群.
      完整代码在SparkAppDemo
      更多的实例在codelab中有:codelab.
      1. 编码
      ◦ 添加pom依赖

      <dependency>
      <groupId>org.apache.spark</groupId>
      
      <artifactId>spark-core_2.11</artifactId>
      <version>2.3.4-mdh1.0.0-SNAPSHOT</version>
      <scope>provided</scope>
      </dependency>