前面我们说到0基础学习大数据开发需要的Java基础、大数据基础和大数据技术学习的重点:Hadoop、Spark,今天继续来介绍大数据学习的重点之三:Storm实时计算。
Storm实时计算平台
(1)Storm简介:
Storm是一个免费并开源的分布式实时计算系统。由Twitter正式开源的,是一个分布式的、容错的实时计算系统,Storm可以实时处理数据,Storm简单,可以使用任何编程语言。Storm的特点之一是可靠的消息处理机制,这个机制中最重要的一环是设计一个算法来跟踪Storm中处理的数据,确保Storm知道消息是否被完整的处理。
Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。
(2)Storm的特点:
1)编程简单:
开发人员只需要关注应用逻辑,类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性;
2)可以使用各种编程语言:
可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可;
3)容错性:Storm会管理工作进程和节点的故障;
4)水平扩展:计算是在多个线程、进程和服务器之间并行进行的。
5)可靠的消息处理:
Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息;
6)高性能,低延迟:系统的设计保证了消息能得到快速的处理;
7)本地模式:
Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。
(3)离线计算与流式计算:
1)离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示;
代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算数据、Hive批量计算数据、azkaban/oozie任务调度。
2)流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示;将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果。
代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。
(4)Storm的核心概念:
Storm集群非常类似Hadoop集群。
Nimbus:即Storm的Master,负责资源分配和任务调度。一个Storm集群只有一个Nimbus。
Supervisor:即Storm的Slave,负责接收Nimbus分配的任务,管理所有Worker,一个Supervisor节点中包含多个Worker进程。
Worker:工作进程,每个工作进程中都有多个Task。
Task:任务线程,在 Storm 集群中每个 Spout 和 Bolt 都由若干个任务线程(tasks)来执行。每个任务都与一个执行线程相对应。
Topology:计算拓扑,Storm 的拓扑是对实时计算应用逻辑的封装。
Stream:数据流,是 Storm 中最核心的抽象概念。一个数据流指的是在分布式环境中并行创建、处理的一组元组(tuple)的无界序列。
Spout:数据源,是拓扑中数据流的来源。一般 Spout 会从一个外部的数据源读取元组然后将他们发送到拓扑中。
Bolt:数据处理者,拓扑中所有的数据处理均是由 Bolt 完成的。一个 Bolt 可以实现简单的数据流转换,而更复杂的数据流变换通常需要使用多个 Bolt 并通过多个步骤完成。
Stream grouping:数据流分组,为拓扑中的每个 Bolt 的确定输入数据流是定义一个拓扑的重要环节。数据流分组定义了在 Bolt 的不同任务(tasks)中划分数据流的方式。
Zookeeper:分布式协调服务,保存任务分配的信息、心跳信息、元数据信息。
Reliability:可靠性,Storm 可以通过拓扑来确保每个发送的元组都能得到正确处理。
(5)Storm应用场景:
1)日志分析:从海量日志中分析出特定的数据,并将分析的结果存入外部存储器用来辅佐决策;
2)管道系统:将一个数据从一个系统传输到另外一个系统,比如将数据库同步到Hadoop;
3)消息转化器:将接受到的消息按照某种格式进行转化,存储到另外一个系统如消息中间件。
(6)流式计算一般架构:
其中Flume用来获取数据。
Kafka用来临时保存数据。
Strom用来计算数据。
Redis是个内存数据库,用来保存数据。
END
碧茂课堂精彩课程推荐:
1.Cloudera数据分析课;
2.Spark和Hadoop开发员培训;
3.大数据机器学习之推荐系统;
4.Python数据分析与机器学习实战;
详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂
现在注册互动得海量学币,大量精品课程免费送!