【2020/1/18】寒假自学——学习进度报告2

  写博客是时隔两天,但学习并没有停止。



  这一篇博客还是写一下关于Spark基础知识的,上次只是总体名词的理解。

Spark的核心是建立在统一的抽象RDD之上,使得Spark的各个组件可以无缝进行集成,在同一个应用程序中完成大数据计算任务

  于是RDD——由DAG图帮助形成的分布式内存的数据集帮助Spark达成了能比Hadoop快100倍的成就。每个RDD可以分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算——这个便是RDD能实现分布的原理。RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,只能基于稳定的物理存储中的数据集来创建RDD,或者通过在其他RDD上执行确定的转换操作(如map、join和groupBy)而创建得到新的RDD。

  RDD运行于分布式内存中,这使得它拥有了相对的高速度,而它的高度受限使其保证了稳定性和可靠性。RDD的可靠性还包括了它极易恢复的特点,一系列RDD往往是具有生成的轨迹,记录下这个生产轨迹的就是DVG图,所以任何片段的遗失可以通过其“血缘关系(Lineage)”的前辈来重新生成。

  RDD典型的执行过程如下:

  1. RDD读入外部数据源(或者内存中的集合)进行创建;
  2. RDD经过一系列的“转换”操作,每一次都会产生不同的RDD,供给下一个“转换”使用;
  3. 最后一个RDD经“行动”操作进行处理,并输出到外部数据源(或者变成Scala集合或标量)。

  需要说明的是,RDD采用了惰性调用,即在RDD的执行过程中(如图9-8所示),真正的计算发生在RDD的“行动”操作,对于“行动”之前的所有“转换”操作,Spark只是记录下“转换”操作应用的一些基础数据集以及RDD生成的轨迹,即相互之间的依赖关系,而不会触发真正的计算。

  

  

  RDD之间的依赖关系

  (1)对输入进行协同划分,属于窄依赖(如图a所示)。所谓协同划分(co-partitioned)是指多个父RDD的某一分区的所有“键(key)”,落在子RDD的同一个分区内,不会产生同一个父RDD的某一分区,落在子RDD的两个分区的情况。
  (2)对输入做非协同划分,属于宽依赖(如图b所示)。

  窄依赖往往用于流水线的操作,窄依赖的失败恢复更为高效,而对于宽依赖而言,单个节点失效通常意味着重新计算过程会涉及多个父RDD分区,开销较大,不过宽依赖的用途往往是一个计算阶段的结束时间,对于部分计算产生的小数据进行整合。

  RDD运行过程

  (1)创建RDD对象;
  (2)SparkContext负责计算RDD之间的依赖关系,构建DAG;
  (3)DAGScheduler负责把DAG图分解成多个阶段,每个阶段中包含了多个任务,每个任务会被任务调度器分发给各个工作节点(Worker Node)上的Executor去执行。

原文地址:https://www.cnblogs.com/limitCM/p/12208758.html

时间: 2024-07-31 16:26:30

【2020/1/18】寒假自学——学习进度报告2的相关文章

【2020/1/18】寒假自学——学习进度报告3

紧接上一次. 这次是对于spark安装的总结. 首先便是下载spark. 从官网上可以找到用户提供Hadoop环境的安装包,另外值得一提的是用户也可以无需自己安装hadoop而是选择原装包括了hadoop的安装包. 放入虚拟机之后解压缩,修改权限,之后就可以开始配置了. 配置文件需要配置slaves(用于分布式配置,我只填入master的地址,所以也是伪分布吧)和spark-env.sh slaves文件设置Worker节点而spark-env.sh需要填入的内容为: export SPARK_

【2020/1/18】寒假自学——学习进度报告4

上次是安装完成了,这次就来试试Spark的基本操作. 首先是运行Spark自带的实例SparkPi. 在配置好环境变量的时候可以直接运行,但可以看到虽然运行成功但信息太过复杂,所以检索之后—— 虽然计算结果有所偏差,但多少能证明Spark的计算能力可以使用. 第二个运行的就是和计算能力没太大关联的WordCount. 创造好需要的文件(文件内存入了空格隔离的几个单词). 启动pyspark,其以交互的方式使用Python编写Spark程序. 可以看到启动界面如此. 但也有会遇到—— 的情况,这就

【2020/2/2】寒假自学——学习进度报告9

因为想要通过hive作为数据库来保存爬取后和处理完成的数据,需要添加spark的hive支持,这方面还没编译完,所以今天暂时没有这方面的进度,所以写写SparkSteaming. 数据的价值随着时间的流逝而减少 这也正是MapReduce的使用范围所产生的的极大弊端,没法应对大流量的实时数据,MR这类离线处理并不能很好地解决问题. 流计算可以很好地对大规模流动数据在不断变化的运动过程中实时地进行分析,捕捉到可能有用的信息,并把结果发送到下一计算节点.而Spark中能很好地处理流计算的就是Spar

【2020/1/25】寒假自学——学习进度报告6

这篇准备尝试RDD的编程操作. spark运行用户从文件系统中加载数据.通过并行集合(数组)创建RDD,两种都是很方便的操作方式. 应对实验,我在创建了一个文本文件.内容包括—— 之后就是尝试创建RDD. 在pyspark中使用—— >>> students=sc.textFile("file:///usr/local/spark/mycode/exp4/chapter5-data1.txt") 处理之后得到—— 然后就可以进行我们所需要的操作了,例如统计学生和统计课

【2020/1/27】寒假自学——学习进度报告7

今天想记录下如何在windows环境下远程提交代码到spark集群上面运行. spark集群搭建环境使Linux系统,但说实在,Linux系统因为是虚拟机的缘故运行IDE并不是很舒服,想要对python进行舒适的编程操作还不是一件容易事,所以今天记录下如何在Windows下进行spark编程. 首先是spark的基本安装. 需要按照集群方式安装,同时虚拟机需要保证能和Windows互联互通(能ping通),这样才能有最基本的环境. 具体操作按照教程按照集群版的的spark即可,注意的是slave

【2020/2/5】寒假自学——学习进度报告12

今天主要完成了北京市政百姓信件分析实战. Spark方面只是安装了Flume,以及尝试使用套接字流作为DSteam的数据源. 启动NetCat作为套接字的监听模式,这样在端口9999就能和spark互联. 值得一提,nc -l 9999 虽然也是适用的,-k是为了可以保持多个连接,所以应该还是必要的. 编写DSteam代码并作为接受数据的一方. import findspark findspark.init() import sys from pyspark import SparkContex

【2020/2/13】寒假自学——学习进度报告16

电脑修好了,但之前落下的几天博客确实没啥补的劲头,今天先写一份报告吧. 实验内容和要求 安装 Flume 安装成功. 使用 Avro 数据源测试 Flume 配置文件 启动flume agent a1 创建指定的日志文件 客户端传输 传输完成 使用 netcat 数据源测试 Flume 创建example.conf 启动flume 启动Telnet Hellowworld 使用 Flume 作为 Spark Streaming 数据源 配置文件 拷贝依赖包 修改spark-env.sh添加环境变

【原】2014年5月学习进度报告

一.英语学习 1.使用"拓词"背托福核心词:6天 2.使用纸笔复习之前的单词:9天 一点体会:"拓词"软件确实是一款非常不错的背单词软件,通过让单词的适时反复出现,让大脑在被动的状态下识记单词.但是,长期使用后渐渐发现,能在软件里正确识记的单词却常常在日常场景中忘记词义,也就是单词重现太依赖于软件内部,于是从这个月开始,将重点放在巩固以前学习过的单词上,落实那些似认识又印象模糊的词汇. 二.阅读 <当我谈跑步时,我谈些什么>(村上春树第一本写自己的书,读

【原】2014年7月学习进度报告

1. 英语学习 每日听力30分钟(20天) YY英语角口语练习(10天) 2.阅读 <虚实之间>(充满正能量的一本书,有点巧合的是,刚刚读完这本书,芮成钢就出事了,但书的内容和观点都是很正向的.) <别告诉我你会记笔记>(一个日本人写的关于记笔记的方法论,日本人对于笔记的重视很早就见识过,也曾经给我带来很大的启发.笔记的作用常常被小视,只有真正长期坚持笔记的人才能体会到其中的好处.这是一本好书,整本书都是“干货”) <4点起床最养生和高效的时间管理>(也是一个日本人书,