大数据开发零基础需要学习什么内容?Storm实时开发

前面我们说到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降低了进行实时处理的复杂性;

扫描二维码关注公众号,回复: 6396263 查看本文章

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数据分析与机器学习实战;

详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂

现在注册互动得海量学币,大量精品课程免费送!

猜你喜欢

转载自blog.csdn.net/ShuYunBIGDATA/article/details/90638057