声明:
1. 本文针对的是一个知识的梳理,自行整理以及方便记忆
2. 如有错误不当之处, 请指出
Scala是一种针对JVM 将面向函数和面向对象技能组合在一起的编程语言。Scala编程语言近来捉住了很多开辟者的眼球。它看起来像是一种纯粹的面向对象编程语言,而又无缝地联合了下令式和函数式的编程风格。
Scala官网6个特征:
1).Java和scala可以混编
2).范例推测(自动推测范例)
3).并发和分布式
4).特质,特征(类似java中interfaces 和 abstract联合)
5).模式匹配(类似java switch)
6).高阶函数
scala有个原则就是极简原则,不用写的东西一概不写。
Scala的根本操纵具体参考:Scala快速入门(实用于学习Spark)_scala spark-CSDN博客
Spark的特点:快速,易用,通用,随处运行
MapReduce和Spark的对比:
spark是内存盘算框架,mapreduce是磁盘盘算框架
这张图显而易见,性能高
Spark的生态体系良好,学习起来方便
根本概念与架构
driver作为管家结点,当执行一个Application时,Driver会向集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行效果会返回给Driver,或者写到HDFS或者其他数据库中
简述Spark集群的根本运行流程
1)spark集群启动后,Worker向Master注册信息,spark-submit下令提交程序后,driver和application也会向Master注册信息,创建SparkContext对象:主要的对象包罗DAGScheduler和TaskScheduler
2)Driver把Application信息注册给Master后,Master会根据App信息去Worker节点启动Executor
3)Executor内部会创建运行task的线程池,然后把启动的Executor反向注册给Dirver
4)DAGScheduler:负责把Spark作业转换成Stage的DAG(Directed Acyclic Graph有向无环图),根据宽窄依赖切分Stage,然后把Stage封装成TaskSet的情势发送个TaskScheduler;同时DAGScheduler还会处理惩罚由于Shuffle数据丢失导致的失败;
5)TaskScheduler:维护所有TaskSet,分发Task给各个节点的Executor(根据数据当地化策略分发Task),监控task的运行状态,负责重试失败的task;
6)所有task运行完成后,SparkContext向Master注销,释放资源;
1.为应用构建起根本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控(SparkContext构建起应用和集群直接的接洽,连接集群的通道)
2.资源管理器为Executor分配资源,并启动Executor进程
写入RDD的缘故原由
RDD提供了一组丰富的操纵以支持常见的数据运算,分为“动作”(Action)和“”(Transformation)两种范例,RDD提供的转换接口都非常简单,都是类似map、filter、groupBy、join等粗粒度的数据转换操纵,而不是针对某个数据项的细粒度修改(不得当网页爬虫)
执行过程
惰性机制,转换记载轨迹,到了动作的时候才会真正的盘算
RDD的依赖关系和分别
宽依赖和窄依赖
窄依赖
表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应
于一个子RDD的分区(一对一,多对一)
宽依赖
表现为存在一个父RDD的一个分区对应一个子RDD的多个分区(多对一)
碰到宽依赖断开,碰到窄依赖就把RDD加到阶段中,就可以生成多个阶段。每个阶段包罗很多任务,这些阶段派发给各个结点执行
看个例子:
先分别出stage2,然后碰到F到G断开,A-B断开...最终形成
所以RDD的运行流程就是:
(1)创建RDD对象
(2)SparkContext负责盘算RDD之间的依赖关系,构建DAG
(3)DAGScheduler负责把DAG图分解成多个Stage每个Stage中包罗了多个Task每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行
这张图能详细说明spark的核心原理
创建RDD的方式
1.文件体系创建
2.数组的方式创建
看个例子:
从文件体系创建RDD
通过数组读取
通过parallelize生成每个RDD
转换操纵
举措操纵
举措(Action)操纵是真正触发盘算的地方。Spark程序执行到举措操纵时,才会执行真正的盘算,从文件中加载数据,完成一次又一次转换操纵,最终,盘算得到效果
前两行不会真正执行,只会记载这个举措,第三行reduce操纵才会举措,第二活动求每行的长度。
第三行执行的时候会先求每行长度,然后做一个汇总
再来个例子:
切割每行,统计每行单词数,返回最大的
键值对RDD
pairRDD
文件数据读写
1.当地文件读写
把文件写归去
JSON数据读写
SparkSql简介
shark直接从hive内里搬过来的,只有蓝色部分,转换成spark,提升性能
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |