`
luoshi0801
  • 浏览: 147399 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jstorm

 
阅读更多

  Jstorm是参考storm的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用

 作为commiter和user,我还是非常看好它的应用前景,下面是在团队内的分享介绍,更多请参考https://github.com/alibaba/jstorm

一、jstorm是什么

       jstorm可以看作是storm的java增强版本,除了内核用纯java实现外,还包括了thrift、python、facet ui。从架构上看,其本质是一个基于zk的分布式调度系统

 

     Jstorm主要应用场景有:

     1.信息流处理,如聚合、分析等

     2.持续计算,如实时数据统计、监控

     3.分布式rpc调用

     

Jstorm在内核上对storm的改进有:

(1)模型简化

(2)多维度资源调度

(3)网络通信层改造

(4)采样重构

(5)worker/task内部异步化处理

(6)classload、HA

 

模型简化将storm的三层管理模型简化为两层

 

 jstorm中task直接对应了线程概念,而在storm中是task只是线程executor的一个执行逻辑单元

 

多维度资源调度 分为cpu、memory、net、disk四个维度,默认情况下:

cpu slots = 机器核数 * 2 -1

memory slots = 机器物理内存 / 1024M

net slots = min(cpu slots, memory slots)

 

网络通信层 采用了netty + disruptor 替换 zmq + blockingQueue

 

采样重构 

a.定义了滚动时间窗口

b.优化缓存map性能

c.增量采样时间以及减少无谓数据

 

Worker/Task内部异步化

异步化和回调是流式框架最基本的两大特征,Jstorm在task的计算中将nextTuple和ack/fail的逻辑分离开来,并在worker中采用单独线程负责流入、流出数据的反序列化及序列化工作

 

 有关jstorm实现的几个关键流程,有兴趣的可以参考源码

1.Nimbus的启动



 2.supervisor的启动



3. worker内部结构



 worker的启动需要完成以下几件事:

a.读取配置文件,启动进程

b.初始化tuple接收队列和发送队列

c.打开端口,启动rpc服务

d.创建context结构,<component, <stream, output_field>>

e.触发各种timer,refresh/reconnection/heartbeat...

 

task的工作包括:

a.创建内部队列,bind connection

b.反射component拿到taskObj,创建具体的spout/bolt executor

c.反序列化tuple数据,执行处理逻辑

d.做stats,heartbeat等

 

jstorm在数据的完整性和准确性上分别依赖了acker和事务机制

acker本质是独立的bolt,input是fieldGrouping,output是directGrouping;

每个bolt有两个output stream(ACKER_ACK_STREAM_ID/ACKER_ACK_FAIL_STREAM_ID)

每个spout有一个output stream(ACKER_INIT_STREAM_ID),以及两个input stream(ACKER_ACK_STREAM_ID/ACKER_ACK_FAIL_STREAM_ID)
    Spout
        发送给acker 的value <rootid, xor(target_task_list)>
        发送下一级bolt 的value <rootid, 目标taskid>
    Bolt
         下一级bolt需要ack发送给下一级bolt 为<rootid, 新uuid)>发送给acker的value为<rootid, xor(新uuid, $(接收值))>
         下一级bolt不需要ack发送给下一级bolt 为空发送给acker为<rootid, $(接收值)>

 

事务:批处理+全局唯一递增id+两阶段提交

在发送tuple的时候带上tid来保证“只有一次”的原语,下游逻辑根据tid是否next tid来判断是否需要处理。为了提高效率,会将多个tuple组装成一批赋予一个tid,并用pipeline方式执行processing和commit阶段,其中processing可以并发执行,而commit具有严格的强顺序性。接口coordinator,commitor中做了状态管理、事务协调、错误检查等工作

 

另外一个用得最多的高级特性就是trident,它对bolt进行了封装,提供了如joins、aggregations、grouping、filters、function等多种高级数据处理能力

 

最后,谈谈有关jstorm的运维开发

(1)配置优先级:代码 > jstorm.yaml > default.yaml

(2)stream流对比:

      a.fieldsGrouping

      b.globalGrouping - target componet的第一个task

      c.shuffleGrouping - 自定义random,更平均

      d.noneGrouping - 调用random

      e.allGrouping - target component所有task

      f.directGrouping - 指定目标task

      g.customGrouping - 接口customStreamGrouping

(3)jvm调优,优先考虑新生代,开启碎片整理

(4)同一worker内的task,开启定向调度避免网络开销

(5)优雅关闭,reblance或kill前先deactive,等待msg_timeout进行数据清理

(6)其它,hooks、queue-size、topology.max.spout.pending等

  • 大小: 9.9 KB
  • 大小: 11.2 KB
  • 大小: 17.5 KB
  • 大小: 19.8 KB
  • 大小: 32.4 KB
分享到:
评论
3 楼 luoshi0801 2016-03-28  
重0.9.1开始就不需要了
2 楼 java.jianan 2016-02-01  
请问哪个版本开始  完全基于java, 不需要安装 zoreMQ java MQ  ?
1 楼 adofu 2015-06-11  
赞!!的很

相关推荐

    大数据技术分享 JStorm介绍 JStorm-分布式实时计算引擎 共40页.pptx

    **JStorm介绍** JStorm是由阿里巴巴开发的分布式实时计算引擎,它是基于Apache Storm的一个增强版本。JStorm的设计目标是提供比Storm更高的稳定性、更强的功能和更快的计算性能。这个技术分享主要涵盖了JStorm的...

    jstorm集成kafka代码实例

    本示例将探讨如何将Apache JStorm与Kafka进行集成,以利用它们各自的优势。JStorm是一款分布式实时计算系统,它允许用户处理数据流,而Kafka则是一个高吞吐量的分布式消息系统,用于实时数据传递。接下来,我们将...

    jstorm集成kafka插件demo

    在IT行业中,分布式计算系统和实时数据处理是关键领域,其中JStorm和Kafka都是重要的组件。本示例探讨了如何将JStorm与Kafka进行集成,以实现高效的数据流处理。下面,我们将深入理解这两个工具,以及它们结合使用的...

    jstorm storm入门demo

    "jstorm storm入门demo" 这个标题表明了这是一个关于JStorm和Storm框架的基础教学示例。JStorm是阿里巴巴开源的一个分布式实时计算系统,它基于Apache Storm,但提供了更稳定、高性能以及易用的特性。这个demo可能是...

    jstorm 阿里巴巴官方文档 pdf

    《JStorm阿里巴巴官方文档》是全面了解和学习阿里巴巴开源分布式计算框架JStorm的重要参考资料。JStorm是由阿里巴巴集团研发的一款高效、稳定、易用的实时计算系统,它在处理大规模数据流方面表现出色,广泛应用于...

    JStorm 2.1.1 API

    **JStorm 2.1.1 API 深度解析** JStorm是阿里巴巴开源的一款分布式实时计算系统,它基于Apache Storm并进行了大量的优化,提供了一种高效、稳定且易用的流处理框架。JStorm 2.1.1是其一个重要的版本,此版本的API为...

    Jstorm 到 Apache Flink 的迁移实践.pdf

    【JStorm到Apache Flink的迁移实践】 在实时数仓领域,字节跳动公司从JStorm迁移到Apache Flink的决策背后有着一系列的原因和挑战。JStorm在字节跳动的业务架构中扮演了重要角色,特别是在广告、AB测试、推送以及...

    jstorm-2.2.1

    《JStorm 2.2.1:分布式流处理框架详解》 JStorm是阿里巴巴开源的一款高性能、高可靠的分布式实时计算系统,它基于Apache Storm并针对大规模数据处理进行了优化。JStorm 2.2.1是该框架的一个稳定版本,提供了许多...

    jstorm example

    **JStorm简介** JStorm是阿里巴巴开源的一款分布式实时计算系统,它是基于Apache Storm的一个高性能、高可用、热扩展的实时处理框架。JStorm的核心设计理念是简单、高效和稳定,能够处理大规模的数据流处理任务,...

    jstorm文档

    JStorm是中国淘宝团队开发的一款分布式实时计算系统,它是基于Apache Storm的设计理念,但在性能、稳定性和易用性上进行了大量的优化。本文档将详细介绍JStorm的基础知识,包括其核心概念、工作原理、安装配置以及...

    jstorm-core-2.4.0.jar

    新版本2.4.0,最新编译的 jstorm2.4.0包,大数据流式计算必备工具。

    JStorm 2.2.1下载 (百度网盘提取链接和密码)

    JStorm 2.2.1 百度网盘下载,Alibaba JStorm 是一个强大的企业级流式计算引擎

    jstorm课程

    标题"jstorm课程"指的是关于JStorm的教育课程,JStorm是阿里巴巴开源的一个分布式实时计算框架,它是Apache Storm的Java版本,主要用于处理大规模数据流的实时计算。 描述中提到的"全套storm资料初学者必备 比较...

    alibaba-jstorm

    《阿里巴巴JStorm详解》 阿里巴巴JStorm是一款由阿里巴巴开源的分布式实时计算系统,它基于Apache Storm,但在性能、稳定性、易用性等多个方面进行了优化,是大数据处理领域的重要工具之一。JStorm的设计理念是...

    jstorm框架参数配置项列表详解

    jstorm框架default.yaml参数配置项列表详解

    jstorm安装部署wzx.docx

    Jstorm 、zookeeper集群部署详细操作步骤 Centos7系统

    JStorm是参考storm的实时流式计算框架

    JStorm是参考storm的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用。经过4年发展,阿里巴巴JStorm集群已经成为世界上最大的集群之一,基于JStorm的应用数量...

    Jstorm介绍

    jstorm框架介绍,包含架构图、jstorm安装部署以及配置、如何在jstorm框架里写业务代码。

    Jstorm集群安装文档

    ### JStorm集群安装知识点 #### 一、软件需求与集群规划 **软件需求:** - **虚拟化平台:** VMware Workstation 11.0.0 - **远程登录工具:** SecureCRT Portable - **文件传输工具:** FlashFXP - **应用软件:**...

    最新jstorm2.4.0

    新版本2.4.0,最新编译的 jstorm2.4.0包,大数据流式计算必备工具。

Global site tag (gtag.js) - Google Analytics