和 Hadoop 一样,Spark 供给了一个 Map/Reduce API(分布式计算)和分布式存储。二者重要的不合点是,Spark 在集群的内存中保存数据,而 Hadoop 在集群的磁盘中存储数据。
大年夜数据对一些数据科学团队来说是 重要的挑衅,因为在请求的可扩大性方面单机没有才能和容量来运行大年夜范围数据处 理。此外,即使专为大年夜数据设计的体系,如 Hadoop,因为一些数据的属性问题也很难有效地处理图数据,我们将在本章的其他部分看到这方面的内容。
定义 :在图和集群计算方面,“节点”这个词有两种截然不合的意思。 图数据由顶点和边构成,在这里“节点”与顶点的意思邻近。在集群计算 方面,构成集群的物理机械也被称为“节点”。为避免混淆,我们称图的 节点为顶点,这也是 Spark 中的专有名词。而本书中的“节点”这个词我 们严格定义为集群中的单个物理计算节点。
大年夜数据因为数据量大年夜单机无法处理。Hadoop 和 Spark 都是把数据分布在集群节点上的分 布式框架中。Spark 把分布式数据集存放在内存中,所以比 Hadoop 把数据存放在磁盘中 处理速度要快很多。
除了将要计算的数据保存的地位不合(内存和磁盘),Spark 的 API 比 Hadoop的 Map/Reduce API 更轻易应用。Spark 应用简洁且表达力较好的 Scala 作为原生编程说话,写 Hadoop Map/Reduce 的 Java 代码行数与写 Spark 的 Scala 的代码行的数 量比一般是 10:1。
Hadoop :Spark 之前的世界
固然本书重要应用 Scala,然则你对 Scala 不熟悉也不消担心,我们在第 3 章提 供了快速入门,包含怪异、晦涩和简洁的 Scala 语法。进一步熟悉 Java、C++、C#、 Python 等至少一门编程说话是须要的。
模糊的大年夜数据定义
数据量已经呈爆炸性增长。数据来自网站的点击、办事器日记和带有传感器的 硬件等,这些称为数据源。有些数据是图数据(graph data),意味着由边和顶点构成, 如一些协作类网站(属于“Web 2.0”的社交媒体的一种)。大年夜的图数据集实际上是 众包的,例如常识互相连接的 Wikipedia、Facebook 的同伙数据、LinkedIn 的连接数 据,或者 Twitter 的粉丝数据。
如今的“大年夜数据”概念已经被很大年夜程度地夸大年夜了。大年夜数据的概念可以追溯到Google 在 2003 年揭橥的 Google 文件体系的论文和 2004 年揭橥的 Map/Reduce 论文。
大年夜数据这个术语有多种不合的定义,并且有些定义已经掉去了大年夜数据所应有的意 义。然则简单的核心且至关重要的意义是:大年夜数据是因数据本身太大年夜,单机无法处理。
构成 RDD 分布式数据集的数据分区会被加载到集群的机械上。
在评论辩论 Spark 之前,我们总结一下 Hadoop 是若何解决大年夜数据问题的,因为Spark 是建立鄙人面将要描述的核心 Hadoop 概念之上的。
Hadoop 供给了在集群机械中实现容错、并行处理的框架。Hadoop 有两个关键 才能 :
- HDFS—分布式存储
- MapReduce—分布式计算
HDFS 供给了分布式、容错存储。NameNode 把单个大年夜文件瓜分成小块,典范 的块大年夜小是 64MB 或 128MB。这些小块文件被分散在集群中的不合机械上。容错性 是将每个文件的小块复制到必定命量的机械节点上(默认复制到 3 个不合节点, 下图中为了表示便利,将复制数设置为 2)。假如一个机械节点掉效,致使这个机械上的 所有文件块弗采取,但其他机械节点可以供给缺掉的文件块。这是 Hadoop 架构的 关键理念 :机械出故障是正常运作的一部分。
MapReduce 是供给并行和分布式计算的 Hadoop 并行处理框架,如下图 。
MapReduce 是被 Hadoop 和 Spark 都用到的一个数据处理范式。图中表示计算办事器日 志文件中“error”出现的次数,这是一个 MapReduce 操作。平日 Map 操作是一对一的 操作,对每一个源数据项生成一个响应的数据转换操作。Reduce 是多对一的操作,聚合 Map 阶段的输出。Hadoop 和 Spark 都用到了 MapReduce 范式。
用 MapReduce 框架,法度榜样员写一个封装有 map 和 reduce 函数的自力代码片段来处 理 HDFS 上的数据集。为取到数据地位,代码打包(jar 格局)分发到数据节点, Map 操作就在这些数据节点上履行,这避免了集群的数据传输导致消费收集带宽。 对于 Reduce 聚合操作,Map 的结不雅被传输到多个 Reduce 节点上做 reduce 操作(称 之为 shuffling)。起首,Map 阶段是并行操作的,Hadoop 供给了一个弹性机制,当 一个机械节点或者一个处理过程掉败时,计算会在其他机械节点上重启。
MapReduce 编程框架将数据集抽象为流式 key-value 键值对,然后处理这些键 值对并写回到 HDFS。这是一个有局限典范式,但它已被用来解决很多半据并行问题, 用链接在一路的 MapReduce 进行“读-处理-写”操作过程。对于一些简单的义务,上图显示的是比较合适的场景。然则对于一些如机械进修算法中的迭代计算算 法,用这种 MapReduce 范式就很苦楚,这也是选择应用 Spark 的原因。
Spark :内存中的 MapReduce 处理
我们来看另一个可选的分布式处理体系,构建在 Hadoop 基本之上的 Spark。在这一末节你会懂得到,在 Spark 处理图数据时扮演重要角色的弹性分 布式数据集(RDD)导致 Hadoop 式微的两类问题是 :
推荐阅读
在当今信息化的数据时代,数据成为了当局和企事业单位最值钱的也是最有价值的器械,而最有价值的┞封些数据主如果存放在数据库傍边, 是以针对IT治理或数据库保护人员来说,数据的备份就是>>>详细阅读
地址:http://www.17bianji.com/lsqh/34855.html
1/2 1