Apache Hadoop和Apache Spark是复杂的技术,如何将这些架构结合使用往往被许多组织误解。投资这两种技术可以实现广泛的大数据分析和应用程序开发用例。
Niru Anisetti是IBM的Spark产品和下一代大数据平台产品管理团队的项目总监,Rohan Vaidyanathan是IBM的高级产品经理,也是IBM云数据服务团队的领导者。Anisetti是一位屡获殊荣的产品专家,拥有Hadoop和Spark经验的软件工程和产品开发背景。在过去三年中在大数据领域工作时,Vaidyanathan目睹了采用大数据技术(如Hadoop和Spark)的组织数量和种类的激增。他还观察了最近在云中利用数据服务的趋势。
当您与客户谈论大数据技术时,您是否会对他们对Hadoop和Spark的优缺点有充分的了解?
Rohan Vaidyanathan:许多已经投资Hadoop,Spark或两者的公司都非常清楚他们在做什么。但是,仍然存在大量组织,这些组织处于采用大数据的边缘,并且在这些组织开始尝试定义其新的大数据架构时,会出现一些经常导致问题的关键误解。
例如,许多在线文章都将Spark作为Hadoop的继承者,甚至作为Hadoop的替代品。Spark可以比Hadoop快10到100倍执行一项工作,或者更确切地说,MapReduce; 但是Spark不仅仅是集群的运行时方面。
Niru Anisetti:我的简短回答是,“不。”我们已经开始与Spark合作的许多公司正在使用他们的样本数据来探索分析。在最好的猜测估计在IBM是,企业90%左右的挑战是要找到投资回报(ROI)良好的回报分析解决方案,并仍处于规划阶段。如果我们要帮助客户继续他们的大数据旅程,我们需要更好地消除一些神话和误解。
“许多已投资Hadoop,Spark或两者的公司都绝对知道他们在做什么。但是,仍然存在一大批处于大数据边缘的组织,并且随着这些组织开始尝试定义其新的大数据架构,会出现一些经常导致问题的关键误解。“ - Rohan Vaidyanathan
然后让我们试着澄清一些混乱。我们如何解释Hadoop和Spark之间的真正差异?
Anisetti:我喜欢用汽车的比喻。Spark就像一个高性能引擎; 它可以支持您想要对数据执行的工作,并且可以将其固定到各种不同的机箱:数据平台,例如对象存储,IBM Cloudant或Hadoop。Hadoop可以提供一个可能的存储层,为Spark引擎提供数据。
Vaidyanathan:关键是Spark内部没有存储概念。如果你是一名数据科学家并且你正在使用Jupyter笔记本来探索驻留在对象存储中的小数据集,并使用Spark做一些临时分析,那很好。但是当你发现一些令人兴奋的新方法来获得对这些数据的洞察力,并且你想要大规模地使用庞大的数据集和成千上万的用户来实现它时会发生什么?您需要一个数据平台来提取数据,存储数据,管理数据并保证数据安全。此外,您还需要为数据治理添加强大的框架,以帮助您保持质量并提供可跟踪性。
Spark没有提供更广泛的功能; 它纯粹是高速分布式数据处理的引擎。当然,Spark是一项非常令人兴奋的技术,拥有各种很酷的用例,从流处理到机器学习再到实时分析,这就是为什么我们将它用作超过25种IBM产品的引擎。但是大多数现实世界的用例还需要额外的功能,例如治理,这意味着您需要的不仅仅是Spark本身。
那就是Hadoop的用武之地?
Vaidyanathan:没错。Hadoop是一个广泛的开源组件生态系统,旨在解决处理大数据的几乎所有方面。该生态系统包括数据处理引擎 - 最着名的是MapReduce和现在的Spark--但它还包括用于安全性的Apache Ranger等项目。
您在几乎所有大数据架构中看到的另一个常见组件,包括利用Spark的组件,都是Apache Hadoop分布式文件系统(HDFS)。作为大数据集群的可扩展,灵活的文件存储平台,当您想要使用Spark分析大量基于文件的数据时,HDFS仍然是首选项。
此外,借助IBM分布式的Hadoop,IBM BigInsights,我们还可以为IBM BigInsights BigIntegrate和IBM BigInsights BigQuality提供企业级集成和数据治理工具。这些解决方案为大数据领域带来了同样强大的提取,转换和加载(ETL)以及质量管理功能,这些领域我们已经在数百个传统数据库和数据仓库环境中进行了多年的广泛测试。
当您使用Spark时,结果只会与输入一样好,因此在开始分析之前获得高质量,干净和准确的数据至关重要。将BigIntegrate和BigQuality等工具与Spark结合使用意味着您不仅可以快速获得答案,而且还可以确信这些答案是正确的。
“ Spark就像一个高性能引擎; 它支持您想要对数据执行的工作。Hadoop可以提供一个可能的存储层,为Spark引擎提供数据。“-Niru Anisetti
Spark可以被视为MapReduce作为大数据分析引擎的继承者,而不是作为整体Hadoop的继承者吗?
Anisetti:这在某种程度上是正确的; 许多用例存在于公司传统上使用MapReduce并且Spark相比之下真的很闪耀。例如,迭代过程在Spark上的运行速度通常比在MapReduce上运行快许多倍。MapReduce需要在每次迭代时读取和写入文件; 然而,Spark可以将数据保存在内存中,运行所有迭代并仅在结束时将结果写入磁盘。
除了性能之外,Spark通常比MapReduce更受欢迎的另外几个关键原因是可用性和可移植性。MapReduce作业需要使用Java编写,这是一种相对低级的语言,并且它们往往对编写它们的Hadoop集群的特定配置非常敏感。在一个集群上运行的作业可能无法在另一个集群上运行。
相比之下,Spark不仅支持Java,而且还支持Python,R和Scala,它们更容易学习,并且被数据科学家广泛使用。此外,Spark作业可以在任何Spark环境中运行,从笔记本电脑到最大的集群。因此,它为用户提供了更大的灵活性,并支持从小规模勘探到大规模运营的经典数据科学生命周期。
这个里程碑是MapReduce的终结吗?或者是与Spark相比仍然具有优势的用例?
Vaidyanathan: Spark会以相同或更好的性能模拟MapReduce,而且正如我们之前讨论的那样,使用Spark肯定更容易。因此,许多人都在为新的工作负载选择Spark。
但它还没有结束MapReduce。今天使用MapReduce和相关基础架构编写的许多应用程序仍然存在,而迁移到Spark也需要对这些部分进行更改。可以使用MapReduce或Spark基于这些底层依赖项编写新应用程序。
更广泛的Hadoop生态系统包括Apache Cassandra,Apache HBase,Apache Hive等组件,其中许多已经开始采用Spark。在这些项目的Spark版本稳定并变得普遍之前,我们可以期待继续看到MapReduce的使用。
“如果你需要一个高速数据处理引擎,并且你需要摄取,存储和管理真正庞大且不断增长的数据集,那么Hadoop和Spark的结合就非常强大。随着Spark作为引擎和Hadoop生态系统提供存储,治理和其他重要的辅助功能,大门可以解决当今大范围的大数据挑战。“-Niru Anisetti
总而言之,在规划大数据架构时,公司应该如何考虑Hadoop与Spark之间的关系?
Vaidyanathan:如果他们认真建立一个大数据架构,他们几乎肯定需要Hadoop和Spark。选择并不取决于两者之间的决定; 它是关于使用这两种技术来解决他们试图解决的问题的适当部分。
Anisetti:如果你需要一个高速数据处理引擎,并且你需要摄取,存储和管理真正庞大且不断增长的数据集,那么Hadoop和Spark的结合就非常强大。随着Spark作为引擎和Hadoop生态系统提供存储,治理和其他重要的辅助功能,大门可以解决当今巨大的数据挑战。
作者:CoXie的大数据世界
链接:https://www.jianshu.com/p/abd91a4ad379