为什么会有第一代大数据技术Hadoop和第二代大数据技术Spark?

hadoop开启了人们大规模普及化使用大数据的历史阶段。

但hadoop在计算方面有问题,所以更多用spark来做大数据计算。

大数据要解决的三大核心问题:存储、多种计算范式、处理速度

1.存储:用户使用数据时并不关心数据是存储在多台机器上的。hadoop的hdfs很好地解决了大数据的存储问题。

2.有多种计算方式:以SQL为核心的数据仓库技术、流处理技术、机器学习、图计算。Spark又集成了R语言。R语言以前都是在单机上运行,现在可以在分布式系统上运行。最理想的是安装一套系统就可以解决所有问题。

3.处理速度:大数据时代处理速度更为重要。

※  大数据和数据规模没有关系。一个计算是否是大数据,主要看1.对数据价值提取的程度,比如有100M的数据,但需要对这100m数据进行复杂的pagerank或机器学习,这时就可以称为大数据,或者对数据处理速度要求特别高。当然1TB或1PB的数据也可以称为大数据。所以规模不是问题,主要是我们要从数据中提取什么样的价值以及以什么样的速度提取。

作为第一代技术hadoop很好地解决了存储的问题,但没有很好地解决多种计算范式和处理速度的问题。

spark很好地解决了多种计算范式和处理速度问题。安装spark后相当于安装了机器学习、流处理、图计算和R语言。

hadoop+spark=A Winning Combination

hadoop最重要的是hdfs。

hadoop又推出了yarn这个资源管理框架。

MapReduce是道格根据google的三篇论文创造出来的计算框架,把分布式计算分为map和reduce阶段,mapper把很大的问题分解成若干个小问题,reducer把小问题计算结果进行reduce。但mapreduce每次计算都是基于磁盘的,即每次计算都要读写磁盘,导致在两种情况下不适用:1.对数据多步骤迭代的。如对数据进行1万次迭代,mapreduce就需要读写1万次磁盘,这是没有必要而且效率低,2.效率上要求计算在分/秒级别出结果,mapreduce也不能胜任。

Spark用一套软件同时解决了流处理、机器学习、图试算问题,而且功能更强大,速度更快。

Spark Shell上不仅可以直接写SQL也可以写各种业务逻辑直接操作spark大数据集群。这是非常方便的。

Spark本身已经非常完善了。现在又发布了1.5.1。

hadoop最新版本推荐使用2.6.0。

spark在多步骤迭代时可以比hadoop快100多倍,spark还可以直接操作hadoop中的所有类型的数据、NoSQL等。

hadoop要解决多种范式就需要安装storm/impala/Giraph等,需要多个团队维护。而且多个技术团队间的交互不好。而spark一站就可以解决所有问题。

spark代码非常简练,GraphX只有两三千行代码,Giraph就要七八万行。

SparkSQL也只有三四千行,对于技术人员来说这就是空前的机遇,因为一切问题都来自于源码,一切问题的答案也来自于源码。这对于取得技术的制高点是至关重要的。