Skip to content
This repository has been archived by the owner on Jun 16, 2023. It is now read-only.

JStorm on Apsara 概要设计

Longda edited this page Mar 17, 2014 · 3 revisions

架构

jstorm-on-apsara-arch

概要设计

客户端控制台 jac (jstorm-apsara-client)

  1. 初始化Apsara
  2. 读取jac 配置文件
配置文件中含有, package 路径, User, Priority, PackageCapability, NuwaCapability, DefaultPanguCapability, DefaultNuwaCapability
  1. 循环等待用户输入命令, 执行用户命令

launch

  1. 检查用户输入是否正确
  2. 生成fuxi service文件
  3. 启动fuxi service, 保存jam(JStorm-Apsara-Master) EndPoint
  4. 向jam(JStorm-Apsara-Master)发送 上传upload-conf 请求,上传JStorm 配置文件
  5. 向jam(JStorm-Apsara-Master)发送 启动nimbus 请求
  6. 向jam(JStorm-Apsara-Master)发送 设置supervisor 请求
  7. 将所有的结果写入output文件

connect

  1. 检查用户输入是否正确
  2. 根据appname, 查找jam(JStorm-Apsara-Master)
  3. 向jam(JStorm-Apsara-Master) 发送hello请求
  4. 保存appname 和jam(JStorm-Apsara-Master)EndPoint

download-conf

  1. 检查用户输入是否正确
  2. 向jam(JStorm-Apsara-Master) 发送download-conf请求

download-zip

  1. 检查用户输入是否正确
  2. 向jam(JStorm-Apsara-Master) 发送download-zip请求

set-supervisor-num

  1. 检查用户输入是否正确
  2. 向jam(JStorm-Apsara-Master) 发送set-supervisor-num请求

shutdown

  1. 检查用户输入是否正确
  2. 向向jam(JStorm-Apsara-Master) 发送shutdown请求
  3. 如果暴力做法, 就直接shutdown service

stat

  1. 直接调用rpc call 获取每个worker的状态

hello

  1. 检查用户是否输入
  2. 如果用户没有输入, 调用rpc call获取所有fuxi worker的EndPoint
  3. 如果用户输入, 生成fuxi worker对应的EndPoint
  4. 依次对EndPoint,发送 hello请求

start-nimbus

  1. 向jam(JStorm-Apsara-Master) 发送start-nimbus请求

restart-nimbus

  1. 向jam(JStorm-Apsara-Master) 发送restart-nimbus请求

jam(JStorm-Apsara-Master)

  1. 初始化pangu客户端接口
  2. 初始化java沙箱的policy文件
  3. 将jstorm.zip从package://xxxxx 路径中下载下来,并进行解压
  4. 如果对应的盘古目录中已经存在storm.yaml, 则将storm.yaml文件下载到本地

upload-conf

  1. 接收用户上传的storm.yaml文件,并保存到当前目录
  2. 将文件写入盘古对应的位置

download-zip

  1. 返回jstorm.zip文件数据给用户

set-supervisor-num

  1. 接受用户的supervisor的设置
  2. 判断是否有storm.yaml文件, 如果没有返回失败。
  3. 解析storm.yaml 文件和default.yaml文件, 估计出每一个supervisor将消耗多少的资源
  4. 向伏羲 default-app-master, 申请supervisor 消耗的资源
  5. 等待fuxi启动完jas (JStorm-Apsara-Supervisor)

shutdown

  1. 向伏羲default-app-master, 收回所有的supervisor资源
  2. 等待fux shutdown所有的supervisor
  3. 删除盘古storm.yaml文件
  4. 关闭service

hello

  1. 如果nimbus已经启动,返回sucess, 否则返回no-ready

start-nimbus

  1. 检查是否含有storm.yaml文件,如果没有返回失败
  2. 检查是否已经启动nimbus, 如果已经启动,返回成功
  3. 如果没有启动nimbus, 调用jni启动nimbus

restart-nimbus

  1. 检查是否含有storm.yaml文件,如果没有返回失败
  2. 检查是否已经启动nimbus, 如果已经启动,关闭nimbus,然后再启动nimbus
  3. 如果没有启动nimbus, 调用jni启动nimbus

JAS(JStorm-Apsara-Supervisor)

  1. 下载package中的jstorm.zip压缩包,并进行解压
  2. 下载storm.yaml文件,放入正确的位置
  3. 调用jni 启动supervisor

hello

当启动supervisor后,返回给用户 success, 否则返回no-ready

同JStorm worker的心跳同步

  1. 通过文件
  2. 通过盘古或zookeeper
  3. 通过JAS 提供的rpc功能进行心跳同步
Clone this wiki locally