Storm与Hadoop实时离线计算框架对比解析

需积分: 12 0 下载量 154 浏览量 更新于2024-09-09 收藏 75KB TXT 举报
"大数据总复习笔记" 大数据领域涵盖了多种技术和框架,主要分为离线计算和实时计算两大类。本复习笔记主要关注实时计算框架——Storm,以及与之对比的Hadoop离线计算框架。 首先,Hadoop是大数据处理的基础,其核心由两个组件构成:HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供了分布式存储功能,而MapReduce则负责数据的分布式计算。在Hadoop中,数据通常通过TextInputFormat类进行读取,然后通过MapReduce的map和reduce阶段进行处理。Map阶段将数据拆分成键值对,Reduce阶段则对相同键的值进行聚合。 相比之下,Storm是一个实时数据计算框架,它与Hadoop的不同之处在于,Storm仅负责计算,而不承担存储职责。Storm的数据获取由特殊的组件Spout完成,它可以从各种数据源(如文件、数据库、Redis等)拉取数据。Bolt则是Storm中的计算组件,类似Hadoop中的Reduce,但不包含MapReduce中的shuffle阶段。在Storm中,数据直接从一个Bolt流向下一个Bolt,减少了中间步骤,从而实现快速响应。 在编写Storm应用时,开发人员会继承BaseRichSpout或BaseBasicBolt类来创建自定义的Spout和Bolt。Spout需要实现open(初始化方法)、nextTuple(不断产生新元组的方法)和declareOutputFields(声明输出字段)。Bolt则需实现execute(处理数据的方法)和declareOutputFields。Storm中的数据分发策略包括轮询、哈希、随机、直接分组和广播分组,这决定了数据如何在Bolt之间流动。 构建Storm应用程序的关键是TopologyBuilder,它负责定义数据流的拓扑结构。例如,使用shuffleGrouping方法可以实现数据的随机分布。在Storm中,任务的执行有两种模式:本地模式和集群模式。本地模式适用于测试,集群模式用于实际生产环境。 为了提升性能,当某个计算环节的处理能力不足时,可以通过增加并行度(即线程数)来扩展计算能力。并行度的设置直接影响任务分配到的JVM数量。config.setNumWorkers方法可以用来控制这一设置。数据分发策略的优化也很关键,例如,通过localOrShuffleGrouping,可以在保证负载均衡的同时,尽可能减少跨JVM的数据传输。 在Storm集群中,有三个关键角色:Nimbus是主节点,负责任务调度和监控;Supervisor是每个机器上的管理者,负责管理worker进程;UI界面则提供了可视化监控工具。Storm集群的worker数量由用户配置,每个Supervisor可以启动多个worker,每个worker可运行多个任务实例(task),默认每个Bolt的并行度为4,每个task代表一个并行实例。 Storm作为实时计算框架,提供了一种高效处理连续数据流的方式,它的灵活性和低延迟特性使其在实时数据分析领域有着广泛的应用。通过理解并熟练掌握Storm的基本概念、组件、数据分发策略以及集群配置,可以有效地设计和优化大数据实时处理系统。