`
klts
  • 浏览: 41293 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
  • klts: 我一直用的jdk1.6.0_13,感觉还可以
    JDK
  • wuyulunbi: 现在jdk什么版本的稳定
    JDK

JStorm

 
阅读更多

一、定义

JStorm是一个分布式实时计算引擎,是一套基于流水线的消息处理机制。

用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个worker 发生意外故障, 调度器立即分配一个新的worker替换这个失效的worker

二、应用场景

1日志分析

2管道系统, 将一个数据从一个系统传输到另外一个系统;

3消息转化器, 将接受到的消息按照某种格式进行转化,存储到另外一个系统如消息中间件;

4统计分析器, 从日志或消息中,提炼出某个字段,然后做countsum计算,最后将统计值存入外部存储器。中间处理过程可能更复杂。

三、基本概念

1、流(InputStream

是一个不间断的连续的tuple,JStorm里,通过nextTuple方法将数据流往下发射流出。

2Spout/Bolt

JStorm将每个stream的唯一stream源,抽象为一个spout,即原始元组的源头。然后通过此源头将数据封装为tuple发射给一个或多个Bolt

所以Bolt就是JStorm将数据的处理过程抽象为一个个节点,各bolt节点间互相接收和发射数据。

 

我们可以认为spout就是一个一个的水龙头,并且每个水龙头里流出的水是不同的,我们想拿到哪种水就拧开哪个水龙头,然后使用管道将水龙头的水导向到一个水处理器(bolt),水处理器处理后再使用管道导向另一个处理器或者存入容器中。

3Topology

Topology即拓扑(拓扑结构是有向无环的),拓扑是Jstorm中最高层次的一个抽象概念,它可以被提交到Jstorm集群执行,一个拓扑就是一个数据流转换图,图中每个节点是一个spout或者bolt

4Tuple

JStorm将流中数据抽象为tuple,一个tuple就是一个值列表,list中的每个value都有一个name,并且每个value的数据都是可序列化类型。

拓扑的每个节点spout/bolt都要说明它所发射出的元组的字段的name,其他节点只需要订阅该name就可以接收处理。

5Worker/Task

都是JStorm中任务的执行单元

 一个worker表示一个进程,一个task表示一个线程, 一个worker可以运行多个task

四、简单使用

//创建topology的生成器
TestBuilder builder = new TestBuilder(); 
//设置topology的所有配置信息
Config conf = new Config();
//表示整个topology将使用2worker
conf.put(Config.TOPOLOGY_WORKERS, 2);
//设置topolog模式为分布式,这样topology就可以放到JStorm集群上运行
conf.put(Config.STORM_CLUSTER_MODE, "distributed");
////创建Spout,名称为testSpout,执行类为TestSpout
builder.setSpout("testSpout", new TestSpout());
//创建Bolt,名称为testBolt,执行类为TestBolt,并发线程数为5,并且此5个线程接收testSpout输出的数据流
builder.setBolt("testBolt", new testBolt(), 5).shuffleGrouping("testSpout");
//集群,提交topology
StormSubmitter.submitTopology("testTopology", conf, builder.createTopology());
//本地,提交topology
LocalCluster cluster = new LocalCluster();
cluster.submitTopology("test", conf, builder.createTopology());

注意:将jstorm项目放到集群后,每个Bolt会被集群中的服务器随机取出执行,因此Bolt相互之间无法公用一个实例。如果某一个Bolt缓存一个数据集,其它Bolt需要使用这个缓存里的数据集,不能通过取全局实例来获取,可以让缓存的数据集喷数据给其他Bolt

五、Spout类方法介绍



 

六、Bolt类方法介绍



 

七、JStorm优点

1开发非常迅速, 接口简单,容易上手,只要遵守TopologySpoutBolt的编程规范即可开发出一个扩展性极好的应用,底层rpcworker之间冗余,数据分流之类的动作完全不用考虑。

2扩展性极好, 当一级处理单元速度,直接配置一下并发数,即可线性扩展性能

3健壮, worker失效或机器出现故障时, 自动分配新的worker替换失效worker

4数据准确性, 可以采用Acker机制,保证数据不丢失。 如果对精度有更多一步要求,采用事务机制,保证数据准确。

八、与Strom相比

1JStormStorm更稳定,主要在内存的处理上,storm经常出现内存不够的情况。其次,JStorm新上线的任务不会冲击老的任务,新调度从cpumemorydisknet 四个角度对任务进行分配,已经分配好的新任务,无需去抢占老任务的cpumemorydisknet

2JStormStorm调度更强大

1彻底解决了storm 任务分配不均衡问题

2)从4个维度进行任务分配:CPUMemoryDiskNet

3)可以随时更多的申请cpu、内存、disk

4)可以强制某个componenttask 运行在不同的节点上

5)可以强制topology运行在单独一个节点上

6)可以自定义任务分配,提前预约任务分配到哪台机器上,哪个端口,多少个cpu slot,多少内存,是否申请磁盘

7)可以预约上一次成功运行时的任务分配,上次task分配了什么资源,这次还是使用这些资源

3JStormStorm性能更好

后续了解后再补充

 

  • 大小: 79 KB
  • 大小: 70.6 KB
分享到:
评论

相关推荐

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

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

    jstorm集成kafka插件demo

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

    jstorm集成kafka代码实例

    本示例将探讨如何将Apache 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