Apache Spark 的发展历史?
Apache Spark 在 2009 年作为加州大学伯克利分校 AMPLab 的一个研究项目而问世,专注于数据密集型应用程序领域的学生、研究人员和教职员工在此项目中开展协作。Spark 的目标是打造一个全新的针对快速迭代处理(如机器学习和交互式数据分析)进行过优化的框架,与此同时保留 Hadoop MapReduce 的可扩展性和容错能力。第一篇题为《Spark: Cluster Computing with Working Sets》的论文发表于 2010 年 6 月,而 Spark 是 BSD 许可协议项下的开源系统。2013 年 6 月,Spark 在 Apache Software Foundation (ASF) 进入孵化状态,并于 2014 年 2 月被确定作为 Apache 顶级项目之一。Spark 可以在 Apache Mesos 上,但最常见的还是在 Apache Hadoop 上单独运行。
如今,Spark 已成为 Hadoop 生态系统中最活跃的项目之一,大量组织都采用 Spark 和 Hadoop 来处理大数据。2017 年,Spark 拥有 365000 名会定期参加聚会的会员,这个数字在两年时间里成长 5 倍之多。从 2009 年开始,共有来自 200 多个组织的超过 1000 名开发人员为它做出过贡献。
Apache Spark 如何运作?
Hadoop MapReduce 是一种用于处理大数据集的编程模型,它采用并行的分布式算法。开发人员可以编写高度并行化的运算符,而不用担心工作分配和容错能力。不过,MapReduce 所面对的一项挑战是它要通过连续多步骤流程来运行某项作业。在每个步骤中,MapReduce 要读取来自集群的数据,执行操作,并将结果写到 HDFS。因为每个步骤都需要磁盘读取和写入,磁盘 I/O 的延迟会导致 MapReduce 作业变慢。
开发 Spark 的初衷就是为了突破 MapReduce 的这些限制,它可以执行内存中处理,减少作业中的步骤数量,并且跨多项并行操作对数据进行重用。借助于 Spark,将数据读取到内存、执行操作和写回结果仅需要一个步骤,大大地加快了执行的速度。Spark 还能使用内存中缓存显著加快在相同数据集上重复调用某函数的机器学习算法的速度,进而重新使用数据。数据重用通过在弹性分布式数据集 (RDD) 上创建数据抽象—DataFrames 得以实现,而弹性分布式数据集是一个缓存在内存中并在多项 Spark 操作中重新使用的对象集合。它大幅缩短了延迟,使 Spark 比 MapReduce 快数倍,在进行机器学习和交互式分析时尤其明显。