spark02(spark-shell使用,scala开发spark)

Spark角色介绍

Spark是基于内存计算的大数据并行计算框架。因为其基于内存计算,比Hadoop中MapReduce计算框架具有更高的实时性,同时保证了高效容错性和可伸缩性。从2009年诞生于AMPLab到现在已经成为Apache顶级开源项目,并成功应用于商业集群中,学习Spark就需要了解其架构。
Spark架构图如下:
在这里插入图片描述
Spark架构使用了分布式计算中master-slave模型,master是集群中含有master进程的节点,slave是集群中含有worker进程的节点。
 Driver Program :运⾏main函数并且新建SparkContext的程序。
 Application:基于Spark的应用程序,包含了driver程序和集群上的executor。
 Cluster Manager:指的是在集群上获取资源的外部服务。目前有三种类型
(1)Standalone: spark原生的资源管理,由Master负责资源的分配
(2)Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架
(3)Hadoop Yarn: 主要是指Yarn中的ResourceManager
 Worker Node: 集群中任何可以运行Application代码的节点,在Standalone模式中指的是通过slaves文件配置的Worker节点,在Spark on Yarn模式下就是NodeManager节点
 Executor:是在一个worker node上为某应⽤启动的⼀个进程,该进程负责运⾏任务,并且负责将数据存在内存或者磁盘上。每个应⽤都有各自独立的executor。
 Task :被送到某个executor上的工作单元。

spark任务提交以及spark-shell使用

spark任务提交说明
一旦打包好,就可以使用bin/spark-submit脚本启动应用了. 这个脚本负责设置spark使用的classpath和依赖,支持不同类型的集群管理器和发布模式:

bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

一些常用选项:
–class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)

  1. –master: 集群的master URL (如 spark://node01:7077)
  2. –deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*
  3. –conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value”. 缺省的Spark配置
  4. application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar.
  5. application-arguments: 传给main()方法的参数
    Master URL 可以是以下格式:
    查看Spark-submit全部参数:
    在这里插入图片描述
    更多参数提交说明:
–master MASTER_URL 
可以是spark://host:port, mesos://host:port, yarn, yarn-cluster,yarn-client, local 
–deploy-mode DEPLOY_MODE 
Driver程序运行的地方,client或者cluster 
–class CLASS_NAME 
主类名称,含包名 
–name NAME 
Application名称 
–jars JARS 
Driver依赖的第三方jar包 
–py-files PY_FILES 
用逗号隔开的放置在Python应用程序PYTHONPATH上的.zip, .egg, .py文件列表 
–files FILES 
用逗号隔开的要放置在每个executor工作目录的文件列表 
–properties-file FILE 
设置应用程序属性的文件路径,默认是conf/spark-defaults.conf 
–driver-memory MEM 
Driver程序使用内存大小 
–driver-java-options 
–driver-library-path 
Driver程序的库路径 
–driver-class-path 
Driver程序的类路径 
–executor-memory MEM 
executor内存大小,默认1G 
–driver-cores NUM 
Driver程序的使用CPU个数,仅限于Spark Alone模式 
–supervise 
失败后是否重启Driver,仅限于Spark Alone模式 
–total-executor-cores NUM 
executor使用的总核数,仅限于Spark Alone、Spark on Mesos模式 
–executor-cores NUM 
每个executor使用的内核数,默认为1,仅限于Spark on Yarn模式 
–queue QUEUE_NAME 
提交应用程序给哪个YARN的队列,默认是default队列,仅限于Spark on Yarn模式 
–num-executors NUM 
启动的executor数量,默认是2个,仅限于Spark on Yarn模式 
–archives ARCHIVES 
仅限于Spark on Yarn模式

启动Spark Shell
运行spark-shell --master local[N] 读取本地文件

单机模式:通过本地N个线程跑任务,只运行一个SparkSubmit进程。
创建本地文件,使用spark程序实现单词计数统计
第一步:准备本地文件
node01服务器执行以下命令准备数据文件

mkdir -p /export/servers/sparkdatas
cd /export/servers/sparkdatas/
vim wordcount.txt

hello me
hello you
hello her

第二步:通 --master启动本地模式
node01执行以下命令进入spark-shell

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

第三步:开发scala单词统计代码
使用这种方式

sc.textFile("file:///export/servers/sparkdatas/wordcount.txt").flatMap(x => x.split(" ")).map(x => (x,1)).reduceByKey((x,y) => x + y).collect

或者使用以下这种方式,通过下划线来进行替代

sc.textFile("file:///export/servers/sparkdatas/wordcount.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).collect

代码说明:
sc:Spark-Shell中已

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值