Spark四大特性

Apache Spark™ is a fast and general engine for large-scale data processing.
Apache Spark™是一个快速的通用的,针对于大数据集数据处理分析的计算引擎(框架)。

  • Hadoop:数据存储(HDFS)与分析(MR)
  • Spark:数据分析

在数据处理上Spark与MR比较,主要有如下四点优势特性

快速(Speed)

与Hadoop MapReduce比较,内存中运行快100倍以上,磁盘中运行快10倍以上。

主要原因:

  1. Spark使用有向无环图DAG(任务划为一个一个流程图)
  2. Spark在内存中运行(MR map输出结果仿真磁盘,reduce读数据从磁盘读,磁盘读写速度依赖网络IO、磁盘速度)

易使用(Ease of Use)

spark编程简单,支持scala、java、python,尤其scala和python代码很简洁,代码量少:

  • spark提供了80个以上的操作(除了map\reduce还有很多操作)使得编程简单。
  • 提供了可交互的 scala shell 和 python shell

MR编程则十分麻烦,虽然有模板可以套用,但代码总体庞大;MR只有map和reduce两个操作,一个业务总要想办法拆成(多个)map和reduce,甚至多个job,

通用性(Generality)

Spark框架可以视为core,建立在spark运算框架上,还有其他专用框架(像MR上建立的框架:MapReduce难写有了Hive框架、机器学习Mahont框架、Pig、图形计算Giraph),Spark上的框架相当于一些Jar包库,不需要像Hive、Mahont要另外部署配置。

Spark powers(为…提供动力) a stack of libraries including SQL and DataFrames, MLlib for machine learning, GraphX, and Spark Streaming. You can combine these libraries seamlessly in the same application.
Spark内核框架驱动一堆高级工具库包括SQL,DataFrames, 机器学习库MLlib, GraphX, and Spark Streaming。 你只要部署好了spark,这些类库就直接可以用,即一站式的大数据处理解决方案(One stack to rule all!)。因此不需要为了各种业务而搭建平台。(Hadoop平台上要为了各种业务搭建一堆东西,比如Hive、Pig等等)

总之,基于Spark core上的大一统软件栈的优点:

  • spark下层core的改进优化时,上层程序库也自动获得性能提升;
  • 运行整个软件栈的代价小(包括部署、维护、测试、支持),不需要运行多套独立的软件系统;
  • 能够无缝整合不同处理模型的应用(如机器学习的应用和SQL实时查询结果数据的应用在Spark上同时进行)

运行在各个地方(Runs Everywhere)

多种运行方式

  • 单独部署:standalone
  • Yarn
  • 类似于yarn的资源管理框架Mesos
  • 云端:EMC、EC2

运行数据来源

  • Spark可以支持任何实现了Hadoop API的存储系统(Access data in HDFS, Cassandra, HBase, Hive, Tachyon, and any Hadoop data source.)。Spark可以从存储在Hadoop分布式文件系统(HDFS)中的任何文件,或其他Hadoop API支持的存储系统(如本地文件系统,Amazon S3, Cassandra, Hive,HBase等)创建分布式数据集。
  • Hadoop对Spark来说不是必须的,Spark支持文本文件、序列文件、Avro、Parquet,以及任何其他Hadoop的输入格式。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器