Spark大数据处理

第1章 spark 简介

spark相比于hadoop,spark是计算框架,hadoop包含计算框架mapreduce,分布式文件系统hdfs,还包括Hbase,Hive
spark优势:中间结果输出(spark将执行模型抽象成DAG,将多stage任务串联或者并行执行,无须将stage中间结果输出到HDFS中,类似引擎包括Dryad,Tez),数据格式和内存布局(RDD),执行策略,任务调度的开销(采用时间驱动来启动任务,通过线程池复用)


image.png

1.1 生态系统

Spark:大数据分布式编程框架,不仅实现了mapreduce的算子map和reduce及计算模型,还提供更丰富的算子,filter,join,groupByKey等。并将分布式数据抽象为弹性分布式数据集(rdd),实现了应用任务调度,RPC,序列化和压缩,并为运行在其上的上层组件提供API。将数据在分布式环境下分区,将作业转化为DAG,并分阶段进行DAG的调度和任务的分布式并行处理
Shark:在Spark和Hive基础之上的数据仓库。
Spark SQL
spark streaming:指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。
GraphX:基于BSP模型,在spark上封装pregel的接口,进行大规模同步全局的图计算
Tachyon:分布式内存文件系统,可以理解为内存中HDFS。
Mesos,BlinkDB

1.2 spark架构

image.png

dirver程序是应用逻辑执行的起点,负责作业的调度,即task任务的分发,而多个worker用来管理计算节点和创建executor并行处理任务。在执行阶段,driver会将task和task所依赖的file和jar序列化后传递给对应的worker机器,同时executor对相应的数据分区的任务进行处理

spark整体流程:client提交应用,master找到worker启动driver,driver向master或者资源管理器申请,之后将应用转化为RDD Graph,再由DAGSheduler将RDD Graph转化为stage的提交给taskScheduler,再由taskScheduler提交任务给executor执行。


image.png

第2章 spark集群的安装与部署

在win上运行spark,需要先安装cygwin来模拟linux环境,才能安装spark;另外由于spark主要使用hdfs当持久层,需要完整安装hadoop。
预先安装JDK,scala的依赖,hadoop

2.1 linux上安装

1.安装jdk配置JAVA_HOME
2.安装hadoop
下载解压,配置环境变量,hadoop-env.sh, core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml
启动hadoop:hadoop namenode -format sbin下bash start-dfs.sh
http://x.x.x.x:50070
3.安装spark
下载解压,然后配置各种文件,最终start-all.sh
http://x.x.x.x:8098/

第3章 spark计算模型

3.1 spark程序模型

RDD在代码中相当于数据的一个元数据结构,存储着分区及其逻辑结构的映射关系

3.2 弹性分布式数据集

RDD与分布式共享内存的异同
两种创建方式:1从hdfs等直接输入创建2从父RDD转换得到新的RDD
两种操作算子:Transformation和action
RDD内部的重要属性:分区列表,计算每个分片的函数,父RDD的依赖列表,对kv的RDD的分区器,控制分区策略和分区数,每个数据分区的地址列表
spark数据存储:抽象理解为一个大数组array,但是这个数组是分布在集群上的。逻辑上每个RDD分区叫一个partition

3.3 spark算子分类和功能

value型的transformation算子:输入和输出一对一(map,flatmap,mappartition,glom),多对一(union,cartesian),多对多(groupby),输出为输入子集(filter,distinct,subtract,sample,takesample),Cache型(cache,persist)
kv型transformation算子:一对一(mapValues),聚集(单个RDD【combineByKey, reduceByKey,partitionby】两个RDD【cogroup,】),连接(join,leftoutjoin,rightoutjoin)
actions算子:无输出(foreach),Hdfs(saveastextfile, saveasobjectfile,),scala集合(collect, collectasmap, reducebykeylocally, lookup, count, top, reduce, fold, aggregate, )和数据类型(broadcast, accumulator)

第4章 spark工作机制详解

4.1 spark应用执行机制

执行机制总览


image.png

image.png

应用提交与执行方式

4.2 spark调度与任务分配模块

spark应用程序之间的调度
spark应用程序内job的调度
stage和tasksetmanager调度方式
task调度

4.3 spark I/O机制

通过序列化将链式分布的数据转化为连续分布的数据,这样可以进行分布式的进程间通信
压缩,能够减少数据的内存使用,以及IO和网络数据传输开销
spark块管理:RDD在逻辑上是按照partition来分块的,是数据项的分布式数组。物理存储的RDD以block为单位的。一个partition对应一个block

4.4 spark通信模块

通信框架AKKA
client,master和worker间的通信

4.5 容错机制

lineage机制:相比其他系统的细颗粒度的内存数据更新级别的备份或者LOG机制,RDD的Lineage记录的是粗颗粒度的特定数据Transformation操作(如filter、map、join等)行为
窄依赖如果出现节点宕机重算,没有冗余计算;宽依赖就会出现冗余,这种情况用checkpoint机制
checkpoint机制:将RDD写入disk做检查点

4.6 suffle机制

spark的shuffle分为两种实现,分别为HashShuffle和SortShuffle,
HashShuffle又分为普通机制和合并机制,普通机制因为其会产生MR个数的巨量磁盘小文件而产生大量性能低下的Io操作,从而性能较低,因为其巨量的磁盘小文件还可能导致OOM,HashShuffle的合并机制通过重复利用buffer从而将磁盘小文件的数量降低到CoreR个,但是当Reducer 端的并行任务或者是数据分片过多的时候,依然会产生大量的磁盘小文件。
SortShuffle也分为普通机制和bypass机制,普通机制在内存数据结构(默认为5M)完成排序,会产生2M个磁盘小文件。而当shuffle map task数量小于spark.shuffle.sort.bypassMergeThreshold参数的值。或者算子不是聚合类的shuffle算子(比如reduceByKey)的时候会触发SortShuffle的bypass机制,SortShuffle的bypass机制不会进行排序,极大的提高了其性能
SortShuffleManager相较于HashShuffleManager来说,有了一定的改进。主要就在于,每个Task在进行shuffle操作时,虽然也会产生较多的临时磁盘文件,但是最后会将所有的临时文件合并(merge)成一个磁盘文件,因此每个Task就只有一个磁盘文件。在下一个stage的shuffle read task拉取自己的数据时,只要根据索引读取每个磁盘文件中的部分数据即可

第5章 spark开发环境配置及流程

5.1 spark应用开发环境配置

spark shell开发

5.2 远程调试spark程序

5.3 spark编译

5.4 配置spark源码阅读环境

第6章 spark实战

第7章 benchmark详解

benchmark是一种评价方式,测试负载的执行时间,传输速度,吞吐量,资源占用率等
bigbench

第8章 BDAS简介

8.1 SQL on spark

spark sql架构

8.2 Spark Streaming

架构
原理剖析
调优

8.3 GraphX

架构

8.4 MLlib

MLlib的数据存储
数据转换为向量(向量空间模型VSM)
MLlib中聚类和分类

第9章 spark性能调优

配置参数
如何观察,通过webui,driver程序控制台日志,logs文件夹下日志,work文件夹下日志,profiler工具
调优技巧:调度与分区优化(小分区合并【通过coalesce来减少分区,repartition也可以本质也是调用coalesce,可能是扩大】,倾斜【数据倾斜,任务倾斜,将spark.speculation=true中把执行时间长的节点去掉】
解决:增大任务数,减少每个分区的数据量;特殊key处理,空值映射为特殊key,然后分发到不同节点,对空值不做处理;广播(数据量大还可以切分为小表,map side join),聚集,拆分RDD),并行度(parallelism配置suffule过程的默认任务数量),DAG调度执行优化(减少shuffle发生,使用cache和persisit将数据缓存在内存)
内存存储优化:调整数据结构,减少对象嵌套,序列化存储RDD,临时目录空间的优化(中间结果会临时写入)
网络传输优化:
序列化与压缩:
其他:批量写

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349