大约十年前,大数据开始流行。随着存储成本不断下降,很多企业开始存储他们获取或生成的大部分数据,以便他们可以挖掘这些数据,以获得关键的业务洞察力。
企业分析所有这些数据的需求推动着各种大数据框架的开发,这些框架能够筛选大量数据,从Hadoop开始。大数据框架最初用于数据仓库或数据湖中的静态数据,但最近的趋势是实时处理来自多个源的数据。
什么是大数据框架?
大数据框架是一组软件组件,可用于构建分布式系统以处理大型数据集,包括结构化、半结构化或非结构化数据。这些数据集可以来自多个来源,大小从TB到PB到EB不等。
此类框架通常在高性能计算 (HPC) 中发挥作用,该技术可以解决材料科学、工程或金融建模等不同领域的难题。寻找这些问题的答案通常在于筛选尽可能多的相关数据。
最著名的大数据框架是Apache Hadoop。其他大数据框架包括Spark、Kafka、Storm和Flink,它们与Hadoop一样都是由Apache软件基金会开发的开源项目。Apache Hive最初由Facebook开发,也是一个大数据框架。
Spark相对于Hadoop的优势是什么?
Apache Hadoop的主要组件是Hadoop分布式文件系统 (HDFS) 和数据处理引擎–部署 MapReduce程序以过滤和排序数据。还包括YARN,它是Hadoop集群的资源管理器。
Apache Spark也可以在HDFS或替代的分布式文件系统上运行。它的开发速度比MapReduce更快,通过在内存中处理和保留数据以供后续步骤使用,而不是将结果直接写回存储。对于较小的工作负载,这会使Spark比Hadoop快100倍。
但是,Hadoop MapReduce可以处理比Spark大得多的数据集,尤其是那些整个数据集的大小超过可用内存的数据集。如果企业拥有大量数据并且处理对时间不敏感,那么Hadoop可能是更好的选择。
Spark更适合企业需要快速答案的应用程序,例如涉及迭代或图形处理的应用程序。这种技术也称为网络分析,该技术分析客户和产品等实体之间的关系。
Hadoop和Kafka的区别是什么?
Apache Kafka是分布式事件流平台,旨在处理实时数据源。这意味着数据在通过系统时被处理。
与Hadoop一样,Kafka在服务器节点集群上运行,因此具有可扩展性。有些服务器节点形成存储层,称为代理,而另一些则处理数据流的连续导入和导出。
严格来说,Kafka不是Hadoop的竞争对手平台。企业可以将它与Hadoop一起用作整体应用程序架构的一部分,在该架构中,它处理传入的数据流并将其输入到数据湖中,以供Hadoop等框架进行处理。
由于其每秒可处理数千条消息,Kafka对于网站活动跟踪或大规模物联网部署中的遥测数据收集等应用非常有用。
Kafka和Spark的区别是什么?
Apache Spark是一种通用处理引擎,开发用于执行批处理(类似于MapReduce)和工作负载,例如流、交互式查询和机器学习 (ML)。
Kafka的架构是分布式消息传递系统架构,将记录流存储在称为主题的类别中。它不是用于大规模分析作业,而是用于高效的流处理。它旨在集成到应用程序的业务逻辑中,而不是用于批量分析作业。
Kafka最初是在社交网络LinkedIn上开发,用于分析其数百万用户之间的联系。也许最好将其视为能够从众多来源实时捕获数据,并将其分类为要分析的主题以深入了解数据的框架。
这种分析可能会使用Spark等工具执行,Spark是一种集群计算框架,可以执行用Java、Python或Scala等语言开发的代码。Spark还包含Spark SQL,它支持查询结构化和半结构化数据;以及Spark MLlib,用于构建和操作ML管道的机器学习库。
其他大数据框架
以下是其他你可能感兴趣的大数据框架。
Apache Hive使SQL开发人员使用Hive查询语言 (HQL) 语句,类似于用于数据查询和分析的标准SQL。Hive可以在HDFS上运行,最适合数据仓库任务,例如提取、转换和加载 (ETL)、报告和数据分析。
Apache Flink将有状态的流处理与处理ETL和批处理作业的能力相结合。这使其非常适合事件驱动的工作负载,例如网站上的用户交互或在线采购订单。与Hive一样,Flink可以运行在HDFS或其他数据存储层上。
Apache Storm是分布式实时处理框架,可以与带有MapReduce的Hadoop进行比较,不同之处在于它实时处理事件数据,而MapReduce以离散批次运行。Storm是为可扩展性和高级别容错而设计。它对于需要快速响应的应用程序也很有用,例如检测安全漏洞。