Spark - 互联网和电子商务数据分析应用与案例讨论-炼数成金-Dataguru专业数据分析社区
http://www.dataguru.cn/thread-295317-1-1.html
1 Hadoop等大数据分析工具的问题以及未来趋势
有问题才有发展,如果Hadoop足够完美,那么就没有Spark什么事了。但是有两个因素决定不可能有完美的东西:一、只要稍微复杂点的东西就无法保证像1+1=2那样完美无瑕;二、任何事物无法逃脱时代的局限性,也就是时代发展了,这些东西就过期了。
那么现在的hadoop有什么问题呢?
最大的也是吐槽最多的一个问题自然是hadoop的MR只是一个框架,就像J2EE一样。如果你要使用,你必须有一个码农将你的业务逻辑实现成Java(或者其他语言)代码。每当有业务升级,代码也得相应升级。易用性受到极大的限制,这也是Hive、Pig等产品的出发点。
另外MR的框架并不是完美的,有一些逻辑使用MapReduce无法非常好的实现,因为每个Map或者每个Reducer之间都是无关联的。只有一个partition能够做一次数据的重组。举个最简单的例子:我们要按照一个公共key拼接两个数据,数据1中每条数据的key为A1,A2,A3,而数据B中的每条数据的key为Ai。那么我们无法实现分桶,因为数据1无法确定要去哪个reduce,我们只能将数据1拷贝多份,扔到好几个reducer中去。
还有一个是Hadoop大量使用了磁盘,磁盘的IO实在不敢恭维。比如我们的计算是一个串行的流,我们每个MR的中间结果还得扔到磁盘中去,其实这些中间结果并不需要持久化。
还有包括namenode的单点问题等问题
而Spark就是为了解决这些问题而生的。
优酷土豆应用Spark完善大数据分析案例 - 51CTO.COM
http://database.51cto.com/art/201403/433982.htm
优酷土豆集团大数据团队技术总监卢学裕就表示:“现在我们使用Hadoop处理一些问题诸如迭代式计算,每次对磁盘和网络的开销相当大。尤其每一次迭代计算都将结果要写到磁盘再读回来,另外计算的中间结果还需要三个备份,这其实是浪费。”
有哪些不适合Spark的应用场景? - 昆吾的回答 - 知乎
https://www.zhihu.com/question/37835911/answer/73842544
反对楼上,大家可以看100T数据排序测试,虽然现在Spark被阿里吊打了,但是当年spark刚推出的时候100T数据排序速度也是hadoop的三倍多,我不信当时环境会允许有100T的内存空间。
Spark不适合的方面有很多,我随便举几个例子:
1.有高实时性要求的流式计算业务,例如实时性要求毫秒级。
2.由于RDD设计上的只读特点,所以Spark对于待分析数据频繁变动的情景很难做(并不是不可以),比如题主例子里的搜索,假设你的数据集在频繁变化(不停增删改),而且又需要结果具有很强的一致性(不一致时间窗口很小),那么就不合适了。
3.普通的RDD不具备索引功能,所以对于一个数据集中精准定位一个数据spark的效率不高,当然这也是有方法可以改善的。
……
在深度实践的时候,任何一个工具都不可能尽善尽美,但除非在大方向上存在严重偏差,否则还是可以通过一定手段进行修正的。关键在于这个工具是否能够适应实际物理环境(比如设备情况),是否能够和原有系统融洽地生活在一起?团队对工具的熟悉程度如何?
对于Spark,生产环境中也不可能单独进行使用,都需要大量周边工具辅助配合才能达到一个很好的效果。