今天在知乎上看到了许多关于Spark的帖子. 分享给大家. 😜
标题是:
与 Hadoop 对比,如何看待 Spark 技术?
链接: 分析Spark链接
Hadoop解决了什么问题:
hadoop就是解决了大数据问题(大到一台机器无法解决, 无法存储, 无法在指定的时间内完成对数据的计算)的可靠计算和存储.
Hadoop中主要的两个概念: HDFS和MapReduce
hdfs: 在由普通计算机上组成的集群上提供可靠的文件存储, 通过将块block保存到多个副本解决服务器或者硬盘坏掉的情况.
Mapreduce: 由mapper和reducer提供的一个编程模型, 可以在一台及多台甚至上百台pc的集群上并发, 分布式的处理大量的数据, 而把一些并发, 分布式(如机器间通信)和故障恢复等计算细节隐藏起来.
当然了, 大家推崇Spark这个新技术肯定是由于Hadoop的局限和不足:
mapreduce抽象层次低, 需要手工编写代码, 使用上手有点难度.
而spark基于RDD的抽象, 使得数据处理代码逻辑的代码非常简短.
只提供map和reduce操作, 表达能力欠缺.
spark中提供了许多transformation和action(具体参考之前的spark的博文) 实现起来简单
一个job由map和reduce组成, 复杂的计算是由多个job完成, 而job之间的关系依赖是要开发者自己管理的. 复杂.
spar中一个job之间可以包含多个rdd的转换操作
处理逻辑隐藏在代码细节里面, 没有整体逻辑.
spark中 通过匿名函数等,rdd也支持流式操作, 可以提供处理逻辑的整体视图
中间结果放到hdfs中
中间结果也放在内存中, 内存放不下也会放到磁盘上, 而不是hdfs.