分享

Spark 高级分析:第一章第2节 Spark简介

问题导读

1.Spark是什么?
2.如何理解Spark?
3.Spark扩展了MapReduce的哪些方面?
4.Spark可与Hadoop生态系统哪些组件集成?





     Apache Spark,一个结合了通用的计算引擎,并能够通过一组优雅的模型在一组机器上分发程序、开发的开源框架。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)捐赠给Apache Software Foundation(ASF Apache软件基金会),可以说是第一个使得分布式编程真正面向数据科学家的开源软件。

      Spark保持了MapReduce的线性可伸缩性和容错性,但在几个重要方面扩展了它。首先,它不依赖于一个map-reduce这样一个固定模式,其引擎可以执行一个更一般的有向无环图(DAG)的算子。这意味着,MapReduce必须向分布式文件系统输出中间结果,而Spark可以直接将它们传递到管道的下游。在这方面,它类似于源于微软研究院基于MapReduce开发的Dryad,。它用一组丰富的转换来补充这种能力,允许用户更自然地表达计算。它具有很高的开发人员关注度和精简的API,可以用几行代码来表示复杂的管道。

    也许最重要的是,Spark很好地符合前面提及的数据科学的真相,构建数据应用程序的最大瓶颈不是CPU、磁盘或网络,而是分析师的生产力。它可能不会被夸大,从预处理到模型评估,到一个单一的编程环境,整个管道的崩溃会加速发展。通过在REPL包装富有表现力的带有一套解析库的编程模型,它避免了像MapReduce这样的框架所需的IDE的往返,以及像R这样的框架所需的HDFS来回采样和移动数据的挑战。分析人员对数据进行实验的速度越快,他们就越有可能做一些有用的事情。


    它与Hadoop生态系统中的各种工具都能够集成。它可以以MapReduce支持的所有数据格式读取和写入数据,从而允许与通常用于在Hadoop上存储数据的格式(如Avro和Parquet)(以及旧的CSV)进行交互。 它可以读取和写入NoSQL数据库,如HBase和Cassandra。 它的流处理库Spark Streaming可以从像Flume和Kafka这样的系统中持续摄取数据。 其SQL库SparkSQL可以与Hive Metastore进行交互,并且在撰写本文时正在进行的项目旨在使Spark成为Hive的基础执行引擎,作为MapReduce的替代方案。它可以在YARN,Hadoop的调度程序和资源管理器中运行,允许它以与其他处理引擎(如MapReduce和Impala)相同的策略动态共享集群资源。

     当然,Spark并不是玫瑰和牵牛花。虽然它的核心引擎已经进步了,即使在这本书的写作期间,但相较于MapReduce其成熟度还比较若,未能超过MapReduce成为批量处理的主力。其专门用于流处理,SQL,机器学习和图形处理的子组件处于不同的成熟阶段,并且正在进行大量的API升级。例如,本书正在编写中,MLlib的管道和算子API模型正在升级中。 它的统计和建模功能远不及像R这样的单机语言。它的SQL功能丰富,但仍远远落后于Hive。

已有(4)人评论

跳转到指定楼层
JasonQi_DeDG4 发表于 2018-1-30 20:33:08
good,very good
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条