最近,许多大数据的讨论都使用了新名称。 有人将流行的新来者Apache Spark ™视为Hadoop的更易用,功能更强大的替代品, Hadoop是大数据的首选原始技术。 其他人认为Spark是Hadoop和其他技术的有力补充,它具有自己的优点,怪癖和局限性。
与其他大数据工具一样,Spark功能强大,功能强大且设备齐全,可应对各种数据挑战。 对于每个数据处理任务,它也不一定是最佳选择。 您可以在电子书“ Spark入门:从开始到生产”中了解有关Spark的更多信息。 在此博客文章中,我将详细介绍Spark是什么,谁使用Spark以及它与其他数据处理引擎的区别。
什么是星火?
Spark是通用数据处理引擎,适用于多种情况。 应用程序开发人员和数据科学家将Spark集成到他们的应用程序中,以快速地大规模查询,分析和转换数据。 与Spark最频繁相关的任务包括跨大型数据集的交互式查询,来自传感器或金融系统的流数据处理以及机器学习任务。
Spark于2009年开始运作,最初是加州大学伯克利分校AMPLab内部的一个项目。 更具体地说,它是出于证明Mesos概念的需要而诞生的,Mesos概念也是在AMPLab中创建的。 在Mesos白皮书《 Mesos:数据中心中细粒度资源共享的平台》中首次讨论了Spark,其中最著名的作者是Benjamin Hindman和Matei Zaharia。
Spark在2013年成为Apache Software Foundation的孵化项目,并在2014年初被提升为Foundation的顶级项目之一。 Spark是基金会管理的最活跃的项目之一,围绕该项目成长的社区包括多产的个人贡献者和资金雄厚的企业支持者,例如Databricks,IBM和中国的华为。
从一开始,Spark就被优化为在内存中运行。 它比Hadoop的MapReduce等替代方法更快地处理数据,后者倾向于在处理的每个阶段之间向计算机硬盘写入数据或从计算机硬盘写入数据。 Spark的支持者声称,Spark在内存中的运行速度可以比Hadoop MapReduce快100倍,并且在以类似于Hadoop MapReduce本身的方式处理基于磁盘的数据时也可以快10倍。 这种比较并不完全公平,这不仅是因为原始速度对于Spark的典型用例而言比对批处理更为重要,在这种情况下,类似于MapReduce的解决方案仍然很出色。
Spark会做什么?
Spark能够一次处理数PB的数据,分布在成千上万个协作的物理或虚拟服务器的群集中。 它具有广泛的开发人员库和API,并支持Java,Python,R和Scala等语言。 它的灵活性使其非常适合各种用例 。 Spark通常与Hadoop的数据存储模块HDFS一起使用,但它可以与HBase ,Cassandra, MapR-DB ,MongoDB和Amazon的S3等其他流行的数据存储子系统很好地集成。
典型的用例包括:
- 流处理 :从日志文件到传感器数据,应用程序开发人员越来越需要处理数据的“流”。 此数据经常从多个源同时稳定地到达。 尽管将这些数据流存储在磁盘上并进行回顾性分析当然是可行的,但有时在数据到达时对其进行处理并采取行动是明智或重要的。 例如,可以实时处理与金融交易有关的数据流,以识别并拒绝潜在的欺诈性交易。
- 机器学习 :随着数据量的增长,机器学习方法变得越来越可行并且越来越准确。 在对新的和未知的数据应用相同的解决方案之前,可以对软件进行培训,以识别出易于理解的数据集中的触发器并对其采取行动。 Spark能够将数据存储在内存中并能够快速运行重复查询,这使其成为训练机器学习算法的理想选择。 一次又一次地大规模运行广泛相似的查询,可显着减少通过一组可能的解决方案以找到最有效的算法所需的时间。
- 交互式分析 :业务分析师和数据科学家不是通过运行预定义的查询来创建销售,生产线生产率或股票价格的静态仪表板,而是希望通过提出问题,查看结果然后更改结果来探索其数据。初步提出问题或深入研究结果。 这种交互式查询过程要求诸如Spark之类的系统能够快速响应和适应。
- 数据集成 :整个企业中不同系统生成的数据很少是干净的或一致的,以至于不能简单,轻松地组合起来进行报告或分析。 提取,转换和加载(ETL)流程通常用于从不同系统中提取数据,对其进行清理和标准化,然后将其加载到单独的系统中进行分析。 越来越多地使用Spark(和Hadoop)来减少此ETL流程所需的成本和时间。
谁使用Spark?
许多技术供应商已Swift支持Spark,并意识到有机会将现有的大数据产品扩展到Spark提供真正价值的领域,例如交互式查询和机器学习。 IBM和华为等知名公司已经在这项技术上投入了大量资金,并且越来越多的初创公司正在建立完全或部分依赖Spark的业务。 例如,在2013年,负责创建Spark的伯克利团队创建了Databricks,该公司提供了一个由Spark支持的托管端到端数据平台。 该公司资金雄厚,在2013年和2014年的两轮投资中获得了4,700万美元,Databricks的员工在改善和扩展Apache Spark项目的开源代码方面继续发挥着重要作用。
大型Hadoop供应商都已转移到支持Spark及其现有产品,并且每个供应商都在努力为其客户增加价值。 在其他地方,IBM,华为和其他公司都对Apache Spark进行了大量投资,将其集成到自己的产品中,并对Apache项目进行了改进和扩展。 中国搜索引擎百度,电子商务运营商阿里巴巴淘宝和社交网络公司等基于Web的公司都大规模运行基于Spark的业务,据报道,腾讯的8亿活跃用户每天生成700 TB以上的数据,以便在计算机上进行处理。超过8,000个计算节点的集群。
除了这些网络巨头之外, 诺华制药公司还依赖Spark来减少将模型数据交付研究人员的时间,同时确保遵守道德和合同保障。
什么使Spark脱颖而出?
选择Spark的原因很多,但三个是关键:
- 简便性 :可通过一组丰富的API访问Spark的功能,所有这些API都是专门为快速,轻松地与大规模数据进行交互而设计的。 这些API都有很好的文档记录和结构化,使数据科学家和应用程序开发人员可以直接将Spark快速投入工作。
- 速度 :Spark专为提高速度而设计,可在内存和磁盘上运行。 使用Spark,来自Databricks的团队与来自加利福尼亚大学圣地亚哥分校的团队并列 2014年Daytona Gray Sort 100TB Benchmark挑战赛的第一名 。 挑战涉及处理静态数据集。 Databricks团队仅用23分钟即可处理存储在固态驱动器上的100 TB数据,而上一个获胜者则使用Hadoop和其他集群配置花费了72分钟。 当支持对存储在内存中的数据进行交互式查询时,Spark的性能甚至更好。 在这种情况下,有人声称Spark可以比Hadoop的MapReduce快100倍。
- 支持 :Spark支持多种编程语言,包括Java,Python,R和Scala。 尽管通常与HDFS紧密相关,但Spark包括对与Hadoop生态系统及更多生态系统中许多领先存储解决方案的紧密集成的本机支持。 此外,Apache Spark社区庞大,活跃且国际化。 越来越多的商业提供商(包括Databricks,IBM和所有主要的Hadoop供应商)为基于Spark的解决方案提供全面的支持。
摘要
在此博客文章中,您了解了Spark,它的作用以及与其他数据处理引擎的不同之处。
如果您有关于Spark的其他问题,请在下面的评论部分中提问。
翻译自: https://www.javacodegeeks.com/2015/09/spark-101-what-is-it-what-it-does-and-why-it-matters.html