龙空技术网

spark/Tachyon学习笔记1

w嘉言懿行w 82

前言:

如今各位老铁们对“spark能够解决什么问题呢英文”大约比较注意,各位老铁们都想要剖析一些“spark能够解决什么问题呢英文”的相关文章。那么小编在网络上汇集了一些关于“spark能够解决什么问题呢英文””的相关知识,希望看官们能喜欢,你们快快来了解一下吧!

什么是MapReduce?

mapreduce是一种模式,一种什么模式呢?一种云计算的核心计算模式,一种分布式运算技术,也是简化的分布式编程模式,它主要用于解决问题的程序开发模型,也是开发人员拆解问题的方法。MapReduce主要思想是通过分散计算分析大量的数据。举个简单易懂的例子:你想数出一摞牌中黑桃的张数,直观的方式就是一张一张的检查并且数出有多少张黑桃。而MapReduce的做法是:

1.首先把牌分给玩家

2.让玩家数各自手中黑桃的个数,然后把数目汇报给你

3.你把所有玩家告诉你的个数相加,算出共有多少张黑桃,如下图所示:

mapreduce处理流程

在数据被分割后通过Map 函数的程序将数据映射成不同的区块,分配给计算机机群处理达到分布式运算的效果,在通过Reduce 函数的程序将结果汇整,从而输出开发者需要的结果。

map和reduce

数据的运算是基于磁盘,中间结果也是存储在磁盘上。运算伴随着大量的磁盘IO,也消耗大量的时间。事实上Hadoop的核心就是存储。

什么是spark?

Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更 好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

Spark与Hadoop的对比

Spark的中间数据放到内存中,对于迭代运算效率更高。

Spark更适合于迭代运算比较多的运算。因为在Spark里面,有RDD(弹性分布式集合)的抽象概念。

Spark比Hadoop更通用。

Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如 map, filter, flatMap, sample, groupByKey, reduceByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, reduce, lookup, save等多种actions操作。这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的存储、分区等。可以说编程模型比Hadoop更灵活。

不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。

容错性。

在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是checkpoint data,一个是logging the updates。用户可以控制采用哪种方式来实现容错

可用性。

Spark通过提供丰富的Scala, Java,Python API及交互式Shell来提高可用性。

大致框架是什么?

整体框架如图所示:

大数据大致框架

其中Mesos EC2 YARN等属于Cluster Managers(集群管理);其中HDFS HBase等数据Data Sources(数据存储)。

1.Bagel(pregel on spark):Bagel是基于Spark的轻量级的Pregel(Pregel是Google鼎鼎有名的图计算框架)的实现。

2.Shark(Hive on Spark):Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,可以理解为Shark On Spark,就是Hive On Hadoop,两者地位是一样的。ps:Shark可以通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析功能结合在一 起(最大化RDD的重复使用)。

3.Streaming(Spark):Spark Streaming是构建在Spark上的处理实时数据的框架。其基本原理是将Stream数据分成小的时间片段(几秒),以类似批处理的方式来处理小部分数据。Spark Streaming构建在spark上,一方面是因为spark的低延迟执行引擎可以用于实时计算,另一方面相比于Record的其它处理矿建(比如storm),RDD数据集更容易做高效的容错处理。此外小批量处理方式使得它可以同时兼容批量和实时数据处理的逻辑算法。方便了一些需要历史数据的实时数据联合分析的特定应用场合。

4.RDD(Resilient Distributed Dataset,弹性分布式数据集):RDD是Spark操纵数据的一个高度抽象,即Spark所操作的数据集都是包装成RDD来进行操作的,例如 Spark可以兼容处理Hadoop的HDFS数据文件,那么这个HDFS数据文件就是包装成Spark认识的RDD来完成数据抽取和处理的。RDD的一 个英文定义是:RDDs are fault-tolerant, parallel data structures that let users explicitly persist intermediate results in memory, control their partitioning to optimize data placement, and manipulate them using a rich set of operators. 用我薄弱的英语能力翻译一下就是:RDD是一个能够让用户可以准确的将中间结果数据持久化到内存中的一个可用错的并行数据结构,可以控制(RDD数据集) 分区,优化数据存储,并且有一组丰富的操作集可以操作这份数据。ps:RDD是Spark的一个核心抽象,Spark的数据操作都是基于RDD来完成。

标签: #spark能够解决什么问题呢英文