如何看待Spark技术-摘抄

今天在知乎上看到了许多关于Spark的帖子. 分享给大家. 😜

标题是:
与 Hadoop 对比,如何看待 Spark 技术?

链接: 分析Spark链接

Hadoop解决了什么问题:
hadoop就是解决了大数据问题(大到一台机器无法解决, 无法存储, 无法在指定的时间内完成对数据的计算)的可靠计算和存储.

Hadoop中主要的两个概念: HDFS和MapReduce

hdfs: 在由普通计算机上组成的集群上提供可靠的文件存储, 通过将块block保存到多个副本解决服务器或者硬盘坏掉的情况.

Mapreduce: 由mapper和reducer提供的一个编程模型, 可以在一台及多台甚至上百台pc的集群上并发, 分布式的处理大量的数据, 而把一些并发, 分布式(如机器间通信)和故障恢复等计算细节隐藏起来.

当然了, 大家推崇Spark这个新技术肯定是由于Hadoop的局限和不足:

  1. mapreduce抽象层次低, 需要手工编写代码, 使用上手有点难度.

    而spark基于RDD的抽象, 使得数据处理代码逻辑的代码非常简短.

  2. 只提供map和reduce操作, 表达能力欠缺.

    spark中提供了许多transformation和action(具体参考之前的spark的博文) 实现起来简单

  3. 一个job由map和reduce组成, 复杂的计算是由多个job完成, 而job之间的关系依赖是要开发者自己管理的. 复杂.

    spar中一个job之间可以包含多个rdd的转换操作

  4. 处理逻辑隐藏在代码细节里面, 没有整体逻辑.

    spark中 通过匿名函数等,rdd也支持流式操作, 可以提供处理逻辑的整体视图

  5. 中间结果放到hdfs中

    中间结果也放在内存中, 内存放不下也会放到磁盘上, 而不是hdfs.