1 提交第一个spark 应用到集群中运行
语法:
./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
实际使用示例:
./spark-submit --class org.apache.spark.examples.SparkPi
--master spark://hadoop1:7077
--total-executor-cores 5
--executor-cores 1
--executor-memory 200mb
/opt/cloudera/parcels/CDH/lib/spark/examples/lib/spark-examples-1.6.0-cdh5.8.0-hadoop2.6.0-cdh5.8.0.jar 100
参数介绍:
–class: 业务运行代码class
–master: 提交到具体的master 地址 可以是 spark 的一个节点,可以是yarn
–total-executor-cores: 总核数
–executor-cores: 每个executor的核心数
–executor-memory: 每个executor使用的内存数
xxx.jar 为实际提交的jar 包
100 是业务运行代码class需要传入的参数
注意:jar 包的位置必须是位于Spark 的节点机器,或者是hdfs 文件目录上,必须对于Spark 来说是可见的。不然会报 ClassNotFoundException
有朋友使用Java代码提交任务时出现过这种问题,看图:
错误信息:
原因就是他在开发机上提交本地的包到spark 机器。但是spark 根本就拿不到这个包,才导致报错。把jar 包放到 hdfs 上去,解决问题。
关于参数的说明,官方文档说的非常明确。
更多详细查看官方文档:Launching Applications with spark-submit
2 使用spark-shell 接口运行spark 程序: 连接到yarn 上
[root@hadoop1 spark]# pwd
/opt/cloudera/parcels/CDH/lib/spark
[root@hadoop1 spark]# spark2-shell --master yarn
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://192.168.80.131:4040
Spark context available as 'sc' (master = yarn, app id = application_1548574542102_0002).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.0.cloudera4
/_/
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
执行一个 wordcount
scala> sc.textFile("hdfs://hadoop1:8020/user/admin/spark-test").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect
res0: Array[(String, Int)] = Array((hello,9), (zhouq,3), (wocao,2), (memeda,2), (hxt,1), (heyxyw,1))
在Spark webui 中查看: 会在 spark 集群中产生一个app id : application_1548574542102_0002
注意: 此 UI 界面是使用 CDH5 搭建的