快速入⻔
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集群即可.
~/infra-client/bin/spark-submit --cluster c3prc-hadoop-spark2.1 --confspark.yarn.job.owners=zhoukang --master yarn-cluster --driver-memory 2g --executor-memory 2g --queue root.development.cloud_group.hadoop.sparksql --classRemoteDebugDemo sparkassembly/spark-sqltest-1.0-SNAPSHOT.jar
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>
