首页 > 编程知识 正文

栖凤社区 电话,阿里云人工智能布局

时间:2023-05-05 06:05:18 阅读:43845 作者:2773

摘要:1.概述JStorm是一个类似于Hadoop中的MapReduce的计算系统,是Alibaba的开源实时计算模型,使用Java编写本机Storm模型(Clojure和Java混合)

1 .概述JStorm是一个类似于Hadoop中MapReduce的计算系统,是Alibaba开源的实时计算模型。 使用Java重写本机Storm模型,将Clojure和Java混合创建。 而且,在原来的基础上做了很多改进。 用户只需根据指定的接口执行任务,并将该任务提交给JStorm系统,JStorm在收到任务指示后无中断地执行任务,并在出现异常且工作器发送故障时,调度程序会立即这次共享的目录结构如下所示。

使用场景的基本术语JStorm比较JStorm体系结构,现在开始今天的内容共享。

2 .从APP应用的角度看,APP应用场景JStorm在分布式APP应用的系统级类似于MapReduce这样的调度系统,在数据方面,它是基于流水数据的实时处理解决方案。 如今,在灾难恢复时代,用户和企业不仅需要离线数据,而且对数据的实时性要求也在提高。

初期,在Storm和JStorm没有出现之前,行业中有很多实时计算系统,可以说是百家争鸣,但自从Storm和JStorm诞生以来,基本上两者都占主要地位,原因如下。

易于开发:界面简单,使用方便,只需遵循Spout、Bolt及Topology编程规范即可开发可扩展的APP应用程序。 基础细节可以不深入探究其原因。 可扩展性:可以线性扩展性能。 容错:如果工作器异常或锁定,将自动分配新工作器进行工作。 数据准确性:包括Ack机制,避免数据丢失的风险。 运用事物的结构,提高数据的精度。 JStorm处理数据的方法流程基于流,因此用于以下处理:

日志分析:从收集到的日志中汇总特定的数据结果,并将汇总结果永久化到数据库等外部存储介质中。 目前,实时统计的主流使用的是JStorm和Storm。 消息传输:过滤收到的消息,然后重定向到另一个消息中间件进行保存。 3 .基本术语3.1 Stream在JStorm中有对Stream的抽象,它是一个不间断的无限连续Tuple,但JStorm在对事件流建模时,会将流中的事件抽象为未Tuple。 流程如下图所示。

3.2 Spout和Bolt在JStorm中认为每个Stream都有Tuple源—stream源,因此将其抽象为Spout,Spout可能是消息中间件,如MQ、Kafka等继续发送消息可能是继续从一个队列读取队列的元数据。

如果有Spout,接下来如何处理相关内容? 用同样的思想,将JStorm的处理过程抽象为Bolt。 Bolt能够消耗任意数量的输入流,只要在该Bolt上引导流的方向即可。 同时,也可以发送新流用于其他Bolt。 因此,只要打开特定的Spout,使Spout流出即可。

那么,通过上述说明,其实,我们可以通过形象的比喻来理解这个流程。 Spout被认为是一个个水龙头。 而且,每个水龙头的水都不一样。 我们如果想消耗那个水,就打开对应的水龙头,用管道把水龙头里的水引到一个水处理装置,也就是Bolt。 水处理装置处理后,使用管道导向另一个处理装置,或落入存储介质中。 流程如下图所示。

3.3拓扑

如图所示,这是有向图。 JStorm将该图表抽象为拓扑。 这是JStorm中最高级别的抽象概念,可以在代码级别直接与JStorm交互,并提交给JStorm集群执行相应的任务。 拓扑是数据流转换图,图中的各个节点是输出

3.4 Tuple JStorm将流中的数据抽象为Tuple。 一个Tuple是一个值列表。 List值的每个Value都有一个Name,其Value可以是基本类型、字符类型、字节数组等,当然也可以是其它可序列化类型。 拓扑的各个节点必须说明发射的t

uple的字段的Name,其它节点只需要订阅该Name就可以接收处理相应的内容。

3.5 Worker和Task

  Work和Task在JStorm中的职责是一个执行单元,一个Worker表示一个进程,一个Task表示一个线程,一个Worker可以运 行多个Task。而Worker可以通过setNumWorkers(int workers)方法来设置对应的数目,表示这个Topology运行在多个JVM(PS:一个JVM为一个进程,即一个Worker);另外 setSpout(String id, IRichSpout spout, Number parallelism_hint)和setBolt(String id, IRichBolt bolt,Number parallelism_hint)方法中的参数parallelism_hint代表这样一个Spout或Bolt有多少个实例,即对应多少个线程,一 个实例对应一个线程。

3.6 Slot

  在JStorm当中,Slot的类型分为四种,他们分别是:CPU,Memory,Disk,Port;与Storm有所区别(Storm局限 于Port)。一个Supervisor可以提供的对象有:CPU Slot、Memory Slot、Disk Slot以及Port Slot。

在JStorm中,一个Worker消耗一个Port Slot,默认一个Task会消耗一个CPU Slot和一个Memory Slot在Task执行较多的任务时,可以申请更多的CPU Slot在Task需要更多的内存时,可以申请更多的额Memory Slot在Task磁盘IO较多时,可以申请Disk Slot 4.JStorm比较

  当前JStorm已经更新到2.x版本了,较于Storm而言,JStorm在一个Nimbus宕机后,会自动的热切到备份的Nimbus,实现了HA特性。对比与其它的数据产品而言,如下所示:

Flume:一个成熟的产品,目前很多企业的日志收集系统均基于此套件开发,可以将数据收集后做一些计算与分析。S4:它是一个通用的,可扩展的,分布式的,容错,可插拔的平台,使程序员可以很容易地开发用于处理无界的连续数据流应用。数据准确性较差,数据丢失的风险无法规避,导致其发展不是很迅速,社区活跃度不够高。AKKA:一个Actor模型,系统模型强大,可以做任何你想做的时,当时很多工作都需要自己亲自动手去实现,如序列化、Topology的生成等。Spark:基于内存计算的MapReduce模型,偏重于数据批量处理。 5.JStorm架构

  从设计层面来说,JStorm是一个典型的调度系统。在这个系统中,有以下内容:

角色作用Nimbus调度器SupervisorWorker的代理角色,负责Kill掉Worker和运行WorkerWorkerTask的容器Task任务的执行者ZooKeeper系统的协调者

  其整体架构图,如下所示:

6.总结

  本篇博客给大家分享了JStorm的相关内容,其中包含一些基本概念,与Storm的区别,它的架构图等内容,后续会大家介绍如何去部署JStorm的相关内容,以及它的编程方式,API的用法等内容会用一些案例给大家去一一的赘述。

7.结束语

  这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至: yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。