spark系列——运行模式(一)local模式配置(详解)

spark----local模式

1, 了解内容
1.Spark官网地址
http://spark.apache.org/
2.文档查看地址
https://spark.apache.org/docs/2.4.0/
3.下载地址
https://spark.apache.org/downloads.html

2 ,重要角色
2.1 Driver(驱动器)
Spark的驱动器是执行开发程序中的main方法的进程。它负责开发人员编写的用来创建SparkContext、创建RDD,以及进行RDD的转化操作和行动操作代码的执行。如果你是用spark shell,那么当你启动Spark shell的时候,系统后台自启了一个Spark驱动器程序,就是在Spark shell中预加载的一个叫作 sc的SparkContext对象。如果驱动器程序终止,那么Spark应用也就结束了。主要负责:
1)把用户程序转为作业(JOB)
2)跟踪Executor的运行状况
3)为执行器节点调度任务
4)UI展示应用运行状况
2.2 Executor(执行器)
Spark Executor是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。主要负责:
1)负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程;
2)通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

3,安装使用

Local模式就是运行在一台计算机上的模式,通常用于在本机上练手和测试。

3.1,上传,解压spark安装包,更名为spark-local

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz 
mv spark-2.4.0-bin-hadoop2.7 spark-local

3.2,例子,官方求PI

(1)基本语法
bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
(2)参数说明:
--master 指定Master的地址,默认为Local
--class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)
--deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*
--conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value” 
application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar
application-arguments: 传给main()方法的参数
--executor-memory 1G 指定每个executor可用内存为1G
--total-executor-cores 2 指定每个executor使用的cup核数为2个
例子:
[root@node1 spark-local]# bin/spark-submit \
> --master local[2] \
> --class org.apache.spark.examples.SparkPi \
> ./examples/jars/spark-examples_2.11-2.4.0.jar 100

3.3, local-shell模式下运行wordcount

(1)准备文件:
先在spark-local下创建一个input目录,然后建一个文件test1,随便输点东西,再给它复制一份
(2)启动spark-shell

bin/spark-shell --master local[2]

在这里插入图片描述
网页访问192.168.223.100:4040

在这里插入图片描述
在shell里写如下:

scala> sc.textFile("./input")
res0: org.apache.spark.rdd.RDD[String] = ./input MapPartitionsRDD[1] at textFile at <console>:25

scala> sc.textFile("./input").flatMap(_.split(""))
res1: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[4] at flatMap at <console>:25

scala> sc.textFile("./input").flatMap(_.split("")).map((_,1))
res2: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[8] at map at <console>:25
                                                        
scala> sc.textFile("./input").flatMap(_.split("")).map((_,1)).reduceByKey(_ + _)
res4: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[13] at reduceByKey at <console>:25

scala> sc.textFile("./input").flatMap(_.split("")).map((_,1)).reduceByKey(_ + _).collect 
res5: Array[(String, Int)] = Array((d,2), (p,2), (h,6), (" ",4), ("",2), (r,4), (l,14), (w,2), (s,2), (e,6), (a,2), (k,2), (o,8))

scala> :quit
#退出

可以看到统计的结果!
3.4,数据流分析:
textFile(“input”):读取本地文件input文件夹数据;
flatMap(.split(" ")):压平操作,按照空格分割符将一行数据映射成一个个单词;
map((
,1)):对每一个元素操作,将单词映射为元组;
reduceByKey(+):按照key将值进行聚合,相加;
collect:将数据收集到Driver端展示。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值