Storm
jianyuanPC
这个作者很懒,什么都没留下…
展开
-
Storm系列(十九)普通事务ITransactionalSpout及示例
普通事务API详解 1 public interface ITransactionalSpoutT> extends IComponent { 2 public interface CoordinatorX> { 3原创 2016-11-15 10:04:12 · 524 阅读 · 0 评论 -
Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程
Supervisor由三个线程组成,一个计时器线程和两个事件线程. 计时器线程负责维持心跳已经更新Zookeeper中的状态,还负责每隔一定的时间将事件线程需要执行的事件添加到其对应的队列中. 两个事件线程分别负责与Nimbus同步任务和根据任务变化同步管理Worker进程. 相关数据结构图: 同步Nimbus的事件线程 执行流程图: 方法原原创 2016-11-15 10:02:20 · 593 阅读 · 0 评论 -
Storm系列(十)聚流示例
功能:将多个数据源的数据汇集到一个处理单元进行集中分类处理; 入口类TestMain 1 public class TestMain { 2 3 public static void ma原创 2016-11-15 10:02:33 · 393 阅读 · 0 评论 -
Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程
处理流程: 方法原型: (defn sync-processes [supervisor]) 函数说明: Supervisor是一个supervisor-data对象. 从local-state中获取LS_LOCAL_ASSIGNMENTS集合集合,保存到assigned-executors。 调用read-allocated-workers获取当前已经分配原创 2016-11-15 10:02:40 · 433 阅读 · 0 评论 -
Storm系列(十二)架构分析之Worker-心跳信息处理
Worker通过worker-data方法定义了一个包含很多共享数据的映射集合,Worker中很多方法都依赖它 mk-worker 功能: 创建对应的计时器、Executor、接收线程接收消息 方法原型: 1 (defserverfn mk-worker [conf shared-mq-context storm-id原创 2016-11-15 10:02:48 · 1069 阅读 · 0 评论 -
Storm系列(十三)架构分析之Worker-维护ZMQ连接
Worker根据Topology的定义及分配到自身的任务情况,计算出发出的消息被那些Task接收,由于Worker上分配的任务可能被调整,因此Worker需要定时的更新这些连接信息。 ZMQ连接信息更新 函数:mk-refresh-connections 方法原型: 1 (defn mk-refresh-connectio原创 2016-11-15 10:02:54 · 548 阅读 · 0 评论 -
Storm系列(十四)架构分析之Executor-输入和输出处理
Executor的数据 mk-executor-data函数用于定义Executor中含有的数据。 Executor的输入处理 根据executor-id从Worker的:executor-receive-queue-map中获得Disruptor Queue 如下: 1 receive-queue ((:executor-r原创 2016-11-15 10:03:06 · 285 阅读 · 0 评论 -
Storm系列(十五)架构分析之Executor-Spout
Spout实现mk-threads接口用于创建与Executor对应的消息循环主函数。 defmulti mk-threads executor-selector Mk-threads函数的主消息循环通过async-loop方法实现,若传入的函数为工厂方法,则在第一次调用该方法时进行初始化,并返回用于消息循环的函数。 Spout输入处理函数 spout的输入处理函数采用非阻塞的方式从接原创 2016-11-15 10:03:15 · 345 阅读 · 0 评论 -
Storm系列(十六)架构分析之Executor-Bolt
准备消息循环的数据 函数原型: 1 let[executor-sampler (mk-stats-sampler (:storm-conf executor-data))] 主要功能: 定义tuple-action-fn函数,该函数会根据TaskId获得对应的Bolt对象并调用其executor方法.原创 2016-11-15 10:03:19 · 495 阅读 · 0 评论 -
Storm系列(二十)分区事务PartitionTransaction及示例
在Storm中分区事务的处理,Spout端需要实现IPartitionedTransactionalSpout接口,用于对批次及偏移量的控制,而Bolt都必须实现IBatchBolt接口,通常继承至BaseTransactionalBolt抽象类。 API详解 Spout端 IPartitionedTransactionalSpout接口 1原创 2016-11-15 10:04:18 · 738 阅读 · 0 评论 -
Storm系列(三)Topology提交过程
提交示例代码: 1 public static void main(String[] args) throws Exception { 2 TopologyBuilder builder = new TopologyBuilder();原创 2016-11-15 10:01:47 · 722 阅读 · 0 评论 -
Storm系列(四)Topology提交校验过程
功能:提交一个新的Topology,并为Topology创建storm-id(topology-id),校验其结构,设置必要的元数据,最后为Topology分配任务. 实现源码: 1 (^void submitTopology 2 [this ^Str原创 2016-11-15 10:01:55 · 400 阅读 · 0 评论 -
Storm系列(五)架构分析之Nimbus启动过程
启动流程图 mk-assignments 功能:对当前集群中所有Topology进行新一轮的任务调度。 实现源码路径: \apache-storm-0.9.4\storm-core\src\clj\backtype\storm\daemon\ nimbus.clj 方法原型: 1原创 2016-11-15 10:02:01 · 409 阅读 · 0 评论 -
Storm系列(七)架构分析之Scheduler-调度器[DefaultScheduler]
Storm默认的任务调度器。实现如下: 1 (defn –prepare [this conf]) 2 (defn –schedule [this ^Topologies topologies ^Cluster cluster]原创 2016-11-15 10:02:16 · 836 阅读 · 0 评论 -
Storm系列(十七)DRPC介绍
Storm版本0.9.5 在storm中DRPC服务应用于远程分布式计算,根据客户端提交的请求参数,而返回Storm计算的结果。 DRPC服务启动流程(远程模式) 启动DRPC服务,启动命令:storm drpc 修改storm.yaml配置文件,添加drpc.servers,如: drpc.servers: - "mast" 向sto原创 2016-11-15 10:04:00 · 973 阅读 · 0 评论 -
Storm系列(十八)事务介绍
功能:将多个tuple组合成为一个批次,并保障每个批次的tuple被且仅被处理一次。 storm事务处理中,把一个批次的tuple的处理分为两个阶段processing和commit阶段。 processing阶段运行多个批次的tuple并行处理。 commit阶段各批次之间需强制按照顺序进行提交。 事务Topologies 在Transactional Topol原创 2016-11-15 10:04:06 · 352 阅读 · 0 评论 -
Storm系列(二)系统结构及重要概念
在Storm的集群里面有两种节点:控制节点和工作节点,控制节点上面运行Nimbus进程,Nimbus负责在集群里面分配计算任务,并且监控状态。每一个工作节点上面运行Supervisor进程,Supervisor负责监听从Nimbus分配给它执行的任务,Nimbus和Supervisor之间的所有协调工作都是通过Zookeeper集群完成。 Storm集群结构图 Topolo原创 2016-11-15 10:01:41 · 459 阅读 · 0 评论