大数据工具分类
大数据计算主要有批处理工具、流处理工具和混合处理工具三种工具。 大多数批处理数据分析框架基于Apache Hadoop。 流数据分析框架主要是用于实时APP应用程序的Storm、S4和Flink。 混合处理工具利用批处理和流处理的优点计算大量数据。
批处理工具
为批处理建模,将数据湖文件转换为批处理视图,并准备分析用例。 负责调度和执行排序、搜索、索引或PageRank、贝叶斯分类、遗传算法等更复杂算法。 批处理主要用MapReduce编程模型表示。
Apache Hadoop是一个众所周知的批处理框架,支持群集上大型数据的分布式存储和处理。 这是一个基于Java的开源框架,在Facebook、雅虎和推特上用于存储和处理大数据。 Hadoop主要由两个组件组成。 (1) Hadoop分布式文件系统) HDFS )群集节点之间的数据存储分布。 (2) Hadoop MapReduce引擎,它将数据处理分配给集群的节点(2)。
图1 Hadoop的映射
Apache Pig是Hadoop生态系统中不可缺少的组件,通过在Hadoop中并行运行数据流来缩短数据分析时间。 Pig是大型组织(如LinkedIn、Twitter和Yahoo )使用的结构化查询语言(SQL )。 该平台的脚本语言称为Pig Latin,它将MapReduce编程的复杂性从其他语言(如Java )抽象为高级语言。 Pig是最完整的平台,因为它可以通过直接调用UDF (用户定义的函数)来调用许多语言的代码,如JavaScript、Java、Jython和JRuby。 因此,开发人员可以使用Pig在Hadoop中执行所有必要的数据操作。 Pig可以用作相当多的并行组件,以构建复杂、繁重的APP应用程序。
Flume被用作向Hadoop提供数据的工具。 需要与处理框架一起访问和传输流数据的消息传递层。 Apache Flume是提供此功能的比较成熟的选项之一。 Flume一直是数据馈送的著名APP应用。 它很好地嵌入到整个Hadoop生态系统中,并得到所有商用Hadoop发行版的支持。 这使得Flume成为开发者的主要选择[3]。流处理工具
Hadoop是为批处理而设计的。 Hadoop是一个多用途引擎,但由于其延迟,它不是实时、高性能的引擎。 流式数据APP应用(如日志文件处理、工业传感器和远程通信)需要实时响应和流式大数据处理。 因此,需要实时分析对流处理。 流媒体大数据需要实时分析。 Map/Reduce框架面临挑战,因为大数据具有高速、大容量和复杂的数据类型。 因此,Storm、S4、Splunk、Apache Kafka等流处理实时大数据平台被开发为用于实时分析数据的第二代数据流处理平台
Storm是实时分析中最认可的数据流处理程序之一,侧重于可靠的消息处理。 Storm是一个免费的开源分布式流媒体处理环境,用于开发和运行分布式程序并处理连续数据流。 因此,Storm是一个开源、通用、分布式、可伸缩和部分容错的平台,可以确保处理无限的数据流以进行实时处理。 Storm的一个好处是,开发人员可以集中精力使用稳定的分布式流程,同时将分布式/并行处理的复杂性和技术挑战(如构建复杂的恢复机制)委托给框架。 Storm是一个复杂的事件处理器和分布式计算框架,基本上是用Clojure编程语言编写的。 这是一个分布式实时计算系统,用于快速处理大型数据流。 Storm是由Nimbus、Supervisor和Zookeeper组成的分布式/并行框架,如图2所示。 Storm群集主要由主节点和工作节点组成,并在Zookeeper中进行协调。
图2 Storm拓扑示例
S4是受MapReduce模型启发的分布式流处理平台。 的操作由用户代码和XML编写的配置作业指定。 S4是一个通用、容错、可扩展、分布式、可插件的计算框架,使程序员能够轻松开发处理连续、无边界数据流的APP应用程序。 最初由雅虎于2011年发布,从2011年开始成为Apache孵化器项目。 S4程序员可以根据可扩展性、分布式、稳健性、可扩展性和群集管理等几个具有竞争力的特性开发APP应用程序。 S4是用Java写的。 S4作业的任务是模块化、可插件的,以便动态处理大型流数据。 使用Apache ZooKeeper像Storm一样管理群集。Kafka是一个开源分布式流媒体框架,最初由LinkedIn于2010年开发。 这是一个灵活的发布-订阅消息系统,快速、可扩展,通常用于日志收集。 Kafka是用Scala和Java写的。 有可以从多个来源获取信息的多生产者管理系统。 Kafka的数据分区和存储功能通常是容错事务收集的有用工具。 这是因为APP应用程序可以开发和订阅记录流,确保容错,并在记录流出时进行处理。
Flink是一种用于解决由微体积模型派生的问题的流工具。 Flink还支持使用Scala和Java编程抽象进行批处理数据处理,但被视为流处理的一种特殊情况。 在Flink中,每个作业都作为流计算运行,每个任务都作为循环数据流运行,并重复多次。 Flink还为一致恢复数据流APP应用程序的状态提供了复杂的容错功能。 该机制生成分布式数据流和操作员状态的一致快照。 如果发生故障,系统可以返回这些快照。 FlinkML的目标是为Flink用户提供可伸缩的机器学习算法和直观的API。
Apache Spark是Hadoop的最新备选方案。 它包含名为MLlib的其他组件,是用于群集、分类、回归和数据预处理等机器学习算法的库[6]。 由于Spark的容量,批量分析和流分析可以在同一平台上进行。 Spark是为了克服Hadoop的缺点而开发的。 也就是说,对同一数据集执行多个操作的迭代算法和交互式数据分析不是优化的。 Spark被定义为新一代分布式计算框架的核心,由于内存密集型情况,可以在内存中快速处理海量数据集。
混合处理工具
由于大数据APP应用程序的许多领域都需要混合处理,因此它允许将大数据平台迁移到第三代。 此示例总结了基于Lambda体系结构的批处理和流处理示例。 Lambda体系结构是一种数据处理体系结构,旨在利用批处理和流处理方法处理大量数据。 本例的高级体系结构由三层组成。 批处理层管理存储在分布式系统中的不可更改的主数据集,服务层加载批处理层视图以进行查询并发布到数据存储,而速度层只处理低延迟的新数据。 最后,通过批处理和实时视图的结合,综合完整的结果[7]。