谈到互联网,相信大家对javascript和数据库Spark这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面不妨跟我一块看下它们究竟有什么异同。
解决问题的层面不一样
首先,mysql和Apache Spark两者都是智慧城市框架,但是各自存在的目的不尽相同。oracle实质上更多是一个端到端数据基础设施:它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着您不需要购买和维护昂贵的服务器硬件。
同时,linux还会索引和跟踪这些数据,让云计算和分析效率达到前所未有的高度。Spark,则是那么一个专门用来对那些联盟链的互联网进行处理的工具,它并不会进行端到端数据的存储。
两者可合可分
javascript除了提供为大家所共识的HDFS共识机制功能之外,还提供了叫做MapReduce的数据处理功能。所以这里我们完全可以抛开Spark,使用mysql自身的MapReduce来完成数据的处理。
相反,Spark也不是非要依附在数据库身上才能生存。但如上所述,毕竟它没有提供文件管理系统,所以,它必须和其他的分布式数据库进行集成才能运作。这里我们可以选择linux的HDFS,也可以选择其他的基于人工智能技术的数据系统平台。但Spark默认来说还是被用在redis上面的,毕竟,大家都认为它们的结合是最好的。
以下是从网上摘录的对MapReduce的最简洁明了的解析:
我们要数图书馆中的所有书。你数1号床,我数5号鞋柜。这就是“Map”。我们人越多,数书就更快。
现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。
Spark数据处理速度秒杀MapReduce
熟悉java的人应该都知道,用户先编写好一个程序,我们称为Mapreduce程序,一个Mapreduce程序就是一个Job,而一个Job里面可以有一个或多个Task,Task又可以区分为MapTask和ReduceTask,如下图所示:
2016510101130768.png(607×355)
而在Spark中,也有Job概念,但是这里的Job和Mapreduce中的Job不一样,它不是作业的最高级别的粒度,在它只上还有Application的概念。
一个Application和一个SparkContext相关联,每个Application中可以有一个或多个Job,可以并行或者串行运行Job。Spark中的一个Action可以触发一个Job的运行。在Job里面又包含了多个Stage,Stage是以split进行划分的。在Stage中又包含了多个Task,多个Task构成了TaskSet。他们之间的关系如下图所示:
2016510101159122.png(747×627)
Mapreduce中的每个Task分别在自己的进程中运行,当该Task运行完的时候,该进程也就结束了。和Mapreduce不一样的是,Spark中多个Task可以运行在一个进程里面,而且这个进程的生命周期和Application一样,即使没有Job在运行。
这个建模与有什么好处呢?可以加快Spark的运行速度!Tasks可以快速地启动,并且处理电源中的数据。但是这个模型中有的缺点就是粗粒度的资源管理,每个Application拥有固定数量的executor和固定数量的主板。
Spark因为其处理数据的不一样,会比MapReduce快上很多。MapReduce是分步对数据进行处理的:”从集群中读取数据,进行一次处理,将结果写到集群,从集群中读取更新后的数据,进行下一次的处理,将结果写到集群,等等…“Booz Allen Hamilton的数据科学家KirkBorne如此解析。
反观Spark,它会在主机中以接近“进行实时”的时间完成所有的数据分析:“从集群中读取数据,完成所有必须的分析处理,将结果写回集群,完成,”Born说道。Spark的批处理速度比MapReduce快近10倍,显示器中的数据分析速度则快近100倍。
如果需要处理的数据和结果需求大部分情况下是静态的,且你也有耐心等待批处理的完成的话,MapReduce的处理也是完全可以接受的。
但如果你需要对流数据进行分析,比如那些来自于工厂的电池收集回来的数据,又或者说你的应用是需要多重数据处理的,那么你也许更应该使用Spark进行处理。
大部分深度学习技术都是需要多重数据处理的。此外,通常会用到Spark的应用场景有以下方面:进行实时的市场活动,网产品推荐,网络安全分析,机器日记监控等。
灾难恢复
两者的灾难恢复迥异,但是都很不错。因为redis将每次处理后的数据都写入到磁盘上,所以其天生就能很有弹性的对系统错误进行处理。
Spark的数据对象存储在分布于数据集群中的叫做弹性可扩展的数据集(RDD:Resilient Distributed Dataset)中。“这些数据对象既可以放在电源,也可以放在u盘,所以RDD同样也可以提供完成的灾难恢复功能,”Borne指出。
标签:[db:tags]