Spark:大数据的电花火石!

来源:互联网 发布:spss19.0软件下载 编辑:程序博客网 时间:2024/04/27 14:48

什么是Spark?可能你很多年前就使用过Spark,反正当年我四六级单词都是用的星火系列,没错,星火系列的洋名就是Spark。

当然这里说的Spark指的是Apache Spark,Apache Spark™is a fast and general engine for large-scale data processing: 一种快速通用可扩展的数据分析引擎。如果想要搞清楚Spark是什么,那么我们需要知道它解决了什么问题,还有是怎么解决这些问题的。

 

Spark解决了什么问题?

在这里不得不提大数据,大数据有两个根本性的问题,一个是数据很大,如何存储?另外一个是数据很大,如何分析?毕竟分析大数据是为了改善产品的用户体验,从而获取更多的价值。

对于第一个问题,开源社区给出的方案就是HDFS,一个非常优秀的分布式存储系统。

对于第二个问题,在Hadoop之 后,开源社区推出了许多值得关注的大数据分析平台。这些平台范围广阔,从简单的基于脚本的产品到与Hadoop 类似的生产环境。Bashreduce在 Bash环境中的多个机器上执行 MapReduce 类型的操作,可以直接引用强大的Linux命令。GraphLab 也是一种MapReduce 抽象实现,侧重于机器学习算法的并行实现。还有Twitter 的 Storm(通过收购 BackType 获得)。Storm 被定义为 “实时处理的 Hadoop”,它主要侧重于流处理和持续计算。

Spark就是解决第二个问题的佼佼者。Why Spark?


Why Spark?

现在有很多值得关注的大数据分析平台,那么为什么要选择Spark呢?


速度

与Hadoop的MapReduce相比,Spark基于内存的运算比MR要快100倍;而基于硬盘的运算也要快10倍!

(From the Project HomePage)


易用

Spark支持Java,Python和Scala。而且支持交互式的Python和Scala的shell,这意味这你可以非常方便的在这些shell中使用Spark集群来验证你的解决问题的方法,而不是像以前一样,打包。。。这对于原型开发非常重要!

Hadoop的WorldCount的Mapper和Reducer加起来要20多行吧。Spark仅需要:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. val file = spark.textFile("hdfs://...")  
  2. val counts = file.flatMap(line => line.split(" "))  
  3.                  .map(word => (word, 1))  
  4.                  .reduceByKey(_ + _)  
  5. counts.saveAsTextFile("hdfs://...")   
甚至可以将它们放到一行。
0 0
原创粉丝点击