Storm分布式实时流计算框架相关技术总结

  Storm作为一个开源的分布式实时流计算框架,其内部实现使用了一些常用的技术,这里是对这些技术及其在Storm中作用的概括介绍。以此为基础,后续再深入了解Storm的内部实现细节。

1. Zookeeper集群
  Zookeeper是一个针对大型分布式系统的可靠协调服务系统,其采用类似Unix文件系统树形层次结构的数据模型(如:/zoo/a,/zoo/b),节点内可存储少量数据(<1M,当节点存储大数据量时,实际应用中可能出现同步问题)。

  Zookeepr的高可靠性服务是通过配置Zookeeper集群实现的,官方建议Zookeeper集群至少包含3个节点,每个节点上存储一份数据,主节点挂掉后可以重新选取一个节点作为主节点。只要保证集群内有一半以上的节点存活,集群就可对外提供服务。

  Zookeeper支持的操作类型有:
  (1)创建树节点znode;
  (2)删除树节点znode;
  (3)读取树节点znode的内容和其子节点的内容;
  (4)当节点内容发生变化或子节点增删时触发消息通知更新消息;
  (5)支持瞬时节点(EPHEMERAL),创建节点的进程退出后节点自动被删除。

  Storm中使用Zookeeper主要用于Storm集群各节点的分布式协调工作,具体功能如下:
  (1)存储客户端提供的topology任务信息(即storm实时流程序),nimbus负责将任务分配信息写入Zookeeper,supervisor从Zookeeper上读取任务分配信息;
  (2)存储supervisor和worker的心跳(包括它们的状态),使得nimbus可以监控整个集群的状态, 从而重启一些挂掉的worker;
  (3)存储整个集群的所有状态信息和配置信息。

  关于storm在zookeeper的详细目录结构请移步:Twitter Storm源代码分析之ZooKeeper中的目录结构

2. Thrift服务框架
  Thrift是一个跨语言的可扩展的服务框架,它通过一个中间语言(IDL,接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成RPC客户端和服务器通信的无缝跨编程语言。

  Storm中Thrift的应用场景:
  (1)客户端向nimbus提交topology任务;
  (2)supervisor从nimbus下载topology任务(代码和序列化文件);
  (3)storm ui从nimbus获取topology运行的统计信息。

3. ZeroMQ消息队列——Netty
  ZeroMQ是一个基于消息的嵌入式网络编程库,可作为并发框架连接多个应用程序,支持N-to-N的连接,多种工作模式(Request-reply,Publish-subscribe,Pipeline等),支持多种语言,ZeroMQ使得编写高性能网络应用程序极为简单。

  Storm中ZeroMQ的应用场景:Spout与Bolt、Bolt与Bolt之间tuple消息的传输。

4. Java序列化
  Java序列化技术可以实现将Java对象保存为二进制文件,而反序列化过程则可以在另一个Java进程中将此二进制文件恢复为Java对象,其缺点在于不能很好的解决版本变化。

  Storm中Java序列化的应用场景:
  (1)客户端提交topology任务后,Storm将topology任务序列化并发送给nimbus;
  (2)supervisor从Zookeeper取得任务信息后,从nimbus下载序列化文件和jar包,启动worker进程并反序列化得到提交任务时的topology对象。

5. 总结
  以上只是对Storm中所使用到的Zookeeper集群、Thrift服务框架、ZeroMQ消息队列、Java序列化技术及其在Storm中的应用情况的简单介绍,后续再进一步结合Storm的源码进行深入分析。以上内容,如果不对之处,欢迎大家指正。

Storm分布式实时流计算框架相关技术总结的更多相关文章

  1. Storm概念学习系列之什么是实时流计算?

    不多说,直接上干货! 什么是实时流计算?    1.实时流计算背景 2.实时计算应用场景 3.实时计算处理流程 4.实时计算框架 什么是实时流计算? 所谓实时流计算,就是近几年由于数据得到广泛应用之后 ...

  2. .Spark Streaming(上)--实时流计算Spark Streaming原理介

    Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍 http://www.cnblogs.com/shishanyuan/p/474 ...

  3. Dream_Spark-----Spark 定制版:005~贯通Spark Streaming流计算框架的运行源码

    Spark 定制版:005~贯通Spark Streaming流计算框架的运行源码   本讲内容: a. 在线动态计算分类最热门商品案例回顾与演示 b. 基于案例贯通Spark Streaming的运 ...

  4. Storm简介——实时流式计算介绍

    概念 实时流式计算: 大数据环境下,流式数据将作为一种新型的数据类型,这种数据具有连续性.无限性和瞬时性.是实时数据处理所面向的数据类型,对这种流式数据的实时计算就是实时流式计算. 特征 实时流式计算 ...

  5. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

  6. 实时流计算Spark Streaming原理介绍

    1.Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包 ...

  7. 基于Spark机器学习和实时流计算的智能推荐系统

    概要: 随着电子商务的高速发展和普及应用,个性化推荐的推荐系统已成为一个重要研究领域. 个性化推荐算法是推荐系统中最核心的技术,在很大程度上决定了电子商务推荐系统性能的优劣,决定着是否能够推荐用户真正 ...

  8. 用Spark进行实时流计算

    Spark Streaming VS Structured Streaming Spark Streaming是Spark最初的流处理框架,使用了微批的形式来进行流处理. 提供了基于RDDs的Dstr ...

  9. 新一代分布式实时流处理引擎Flink入门实战之先导理论篇-上

    @ 目录 概述 定义 为什么使用Flink 应用行业和场景 应用行业 应用场景 实时数仓演变 Flink VS Spark 架构 系统架构 术语 无界和有界数据 流式分析基础 分层API 运行模式 作 ...

随机推荐

  1. FastPolice项目总结

    This is the final homework for spatial information Mobile Service Lesson.It generally inclusived the ...

  2. 理解KMP算法

    母串:S[i] 模式串:T[i] 标记数组:Next[i](Next[i]表示T[0~i]最长前缀/后缀数) 先来讲一下最长前缀/后缀的概念 例如有字符串T[6]=abcabd接下来讨论的全部是真前缀 ...

  3. mysql 5.6.33 重置密码后报错

    [root@ Desktop]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; o ...

  4. WPF布局

    1.Canvas 布局控件 Canvas面板是最轻量级的布局容器,它不会自动调整内部元素的排列和大小,不指定元素位置,元素将默认显示在画布的左上方.Canvas主要用来画图.Canvas默认不会自动裁 ...

  5. 在ubuntu上搭建开发环境9---Ubuntu删除ibus出现的问题及解决

    删除 ibus输入法: sudo apt-get install ibus 我们会遇到下面的问题 Ubuntu 14.04 系统设置很多选项消失. 其实遇到这个问题的一个最主要的原因是之前执行过卸载i ...

  6. 如何调试SSIS包之跟踪变量赋值

    在SSIS开发工具SQL Server Data Tools中提供了调试功能,可以让我们方便的跟踪参数赋值或者数据流条数.本文主要介绍了如何使用SSDT的调试功能. Part A: Script ta ...

  7. Quartz:Cron Expressions

    原文地址:http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontrigger.html 注意: 位也可能是7位, ...

  8. JavaScript - 事件流

    事件流 事件冒泡就是事件沿DOM树向上传播,在没一级节点上都会发生,直至传播到document对象. 事件捕获正好相反,但是老版本的浏览器不支持,因此很少有人使用事件捕获. 事件处理程序 HTMl 事 ...

  9. STL Map的使用

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力.下面就通过示例记录一下map的使用: 一.向map中 ...

  10. hdu 4070 福州赛区网络赛J 贪心 ***

    优先发路程最长的 #include<cstdio> #include<iostream> #include<algorithm> #include<cstri ...