流处理系统Heron——architecture

2023-11-11

简介

Heron是Twitter开源的分布式流处理系统,用来在Twitter内部替代Storm。它提供了和Storm兼容的API。并弥补了Storm中的不足。

Storm的不足和新的需求

  1. 调试困难,在Storm中,一个topology的多个componetns捆绑在同一个进程中,使调试变得很困难。因此需要更清晰的逻辑单元到物理进程的映射关系。
  2. Storm适用专用的集群资源的抽象,需要特定的资源分配方法。这使资源分配效率不高,也限制了按需扩展。因此需要能够适用流行的集群的调度系统提供更灵活的调度方式,这样可以实现集群资源被不同的数据处理系统共享。
  3. Storm在部署新的topology时,需要手动隔离机器,在topology不使用时需要对机器进行收回。用这种方式进行管理机器非常的不便。
  4. Nimbus实现的功能太多,需要处理调度、监控、JAR分发、性能指标的收集和topology的管理。会成为系统的瓶颈。
  5. 缺少反压机制。
  6. 效率问题。次优元组重传,元组失败时,需要重新传送这个元组树;过长的垃圾回收周期,导致高的延迟和元组失败率;传输队列存在很多的竞争。

Heron的架构

用户同过Heron cli工具向Aurora Scheduler创建和部署topoligy。Heron的提供了抽象的Sheduler接口,因此可以把Heron运行在其它的Scheduler,如YARN、Mesos等上。

每个Topology由若干的container组成,一个container中运行的是Topology Master,其它的container中运行了一个Stream Manager、一个Metrics Manager和若干部署spout/bolt的Heron Instance。

若干container可以运行在一个物理节点上。所有的Heron进程通过protobufs通信。

Topology Master

Topology Mastere(TM)仅负责管理特定的topology,不会设计数据的处理和转发。启动后,它会在Zookeep上建立一个临时结点,用来防止多个TM管理同一个topology.也让属于这个topology的进程能够发现该TM。TM也作为topology metrics的gateway。

Stream Manager

Stream Manager(Sm)负责tuples的转发,每个Heron Instance(HI)连接到它本地的进行手法tuples。同一个container的Hi,会使用本地的短路路由。

Heron Instance

Spout或blot的工作在Heron Instance(HI)中完成。每一个HI是一个JVM进程,只运行单个的spout或bolt任务。这样设计的主要目的是方便调试和分析。

HI有两个线程,分别是Gateway thread和Task Execution thread。Gateway thread通过TCP连接本地的SM和Metrics Manager,负责控制HI的通信和数据传输和接收/发往本地SM的tuple。Task Execution thread负责运行用户的代码,调用blot和spout的相关函数。Gateway thread和Task Execution thread之间通过三个队进行通信:data-in、data-out、metrics-out。其中data-in和data-out队列是固定大小的,当data-in达到界限后,会触发本地SM的反压机制,data-out带到界限后,会让Task Execution thread暂停发送或处理tuple。

Metrics Manager

Metrics Manager(MM)负责收集和报告系统中所有组件的metric。每个container中的Stream Manager和Heron Instance会向该container中的Metric Manager报告它们的metric。每个container中的metric发送到系统内的监控系统,也会传送给Topology Master,用于在外部UI的进行显示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

流处理系统Heron——architecture 的相关文章

  • 如何让 NSURLRequest 获取 Twitter 请求令牌?

    我正在尝试使用以下代码从 Twitter 获取请求令牌 NSMutableURLRequest mURLRequest NSMutableURLRequest alloc initWithURL NSURL URLWithString ht
  • Tweepy:tweepy.errors.Unauthorized:401 需要授权

    我期待使用以下 Tweepy 代码从我的 Twitter 个人资料中提取一些数据 import tweepy client tweepy Client consumer key consumer key consumer secret co
  • 如何使用 Twitter Api 在单个请求中获取 20 多个列表成员?

    我想让超过 20 个用户在单个请求中使用 twitter api 有什么参数可以指定吗 我正在使用这个APIhttp api twitter com 1 Barelyme Politics members xml cursor 1 http
  • Twython - 如何使用媒体 url 更新状态

    在我的应用程序中 我允许用户在 Twitter 上发帖 现在我想让他们通过媒体更新他们的状态 In twython py我看到一个方法update status with media从文件系统读取图像并上传到 Twitter 我的图像不在文
  • Twitter API - 获取关注者的关注者数量

    我试图获取特定帐户的每个关注者的关注者数量 目标是找到最有影响力的关注者 我在 Python 中使用 Tweepy 但遇到了 API 速率限制 在被切断之前我只能获取 5 个关注者的关注者数量 我正在查看的帐户大约有 2000 名关注者 有
  • twitter4j => AndroidRuntime(446): java.lang.NoClassDefFoundError: twitter4j.http.AccessToken

    我正在尝试使用 twitter4j 我的应用程序来连接并发布到 Twitter 我正在关注本教程 http blog doityourselfandroid com 2011 02 13 guide to integrating twitt
  • iPhone Twitter SDK 与 iOS 5 设备的集成问题

    我已成功将 Twitter Sharekit 与我的 iPad 应用程序源集成 当我在模拟器和装有 iOS 4 X 的 iPad 1 上测试该应用程序时 它运行完美 并且成功发布了推文 但是 如果我在装有 iOS 5 的 iPad 2 上安
  • 公共地理推文是否选择 Twitter 的 Search 或 Streaming API?

    我想开发一个 Android 应用程序 它将根据用户的 当前 指定 位置从 Twitter 公共时间线获取地理标记的推文 我将有一个刷新按钮 如果在特定时间可用 将获取更多推文 自定义大小最多 30 条 那么哪个API适合这种情况呢 搜索
  • 如何跟踪推文按钮点击次数?

    我想通过 Google Analytics 跟踪推文按钮点击 但推文按钮是一个包含来自另一个域的内容的 iframe 是否有一些技巧可以为推文按钮点击添加回调 或者 您可以简单地将事件添加到您的 div 中 然后等待该 div 被单击 例如
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • Twitter URL 编码

    我们即将发起一场小小的推特圣诞竞赛 但我遇到了一些小障碍 要进入 人们需要按以下格式发布推文 user blah blah blah hashtag 目前 我有一个表单 他们可以在其中输入答案 废话 废话 废话 和一个 PHP 脚本 该脚本
  • Spring-Social/Twitter -- ConnectController 不响应 /connect?

    好吧 我已经拉了我的头发很长时间了 至少看起来是这样 试图找出我做错了什么 我有一个Java项目 我想允许用户登录 通过正常的Spring 启用安全性 JDBC 的存储库 向我的应用程序授予对其 Twitter 帐户的访问权限 我已经在 T
  • 原创推文还是转发的推文?

    我正在将 Tweepy 与 python 结合使用 并尝试获取由一组用户创作的原始推文 即 我想排除其时间线中实际上是转发的任何推文 我怎样才能用 Tweepy 做到这一点 我尝试过类似的方法 但我不知道它是否有效 tweets api u
  • 使用 Devise 和 Rails 从 Twitter Oauth 获取电子邮件

    我已经设置了一个基本的 Rails 应用程序来使用 twitter oauth gem 和设计 并且已经能够登录用户 但是 我的问题是我现在已将我的应用程序列入白名单 并且我想在响应中收到用户的电子邮件 我已遵循 Twitter 端的所有必
  • 从twitter api实体参数php获取图像url

    我正在尝试通过实体参数使用 php 获取并显示在推文中发布的图像 我的 url 中有 include entities 可以看到返回的 json 中的实体 在我的 foreach 循环中 我正在执行以下操作 foreach results
  • Twitter API 是否自动缩短 URL

    我知道这个问题之前已经被问过 但是我发现的答案有点旧 我知道Twitter 最近已在所有帖子中强制使用 t co xyz 服务 https support twitter com articles 109623 faqs about twi
  • 如何使用 twitter api 发推文?

    我正在开发一个应用程序 用户可以在其中发布一些预定义的文本 我已经阅读了很多教程 但找不到正确的解决方案 任何人都可以通过一些教程或示例帮助我做到这一点 Use 推特4j http twitter4j org 它适用于 Android 有一
  • 如何访问 Pandas DataFrame 中嵌入的 json 对象?

    TL DR 如果 Pandas DataFrame 中加载的字段本身包含 JSON 文档 那么如何以类似 Pandas 的方式使用它们 目前我直接从 Twitter 库转储 json 字典结果 twython https github co
  • iOS计算带有嵌入推文的html字符串的正确WKWebview高度

    我正在使用 wkwebview 使用 loadHTMLString 方法加载给定的 HTML 字符串 在 wkwebview didFinishNavigation 之后 我通过评估 javascript document height 将
  • 访问 Twitter 用户的电子邮件? (connect.me 和 fullcontact.com 似乎有此功能)

    据我所知 twitter 不会在 twitter api 中共享用户的电子邮件 参考http code google com p twitter api issues detail id 353 http code google com p

随机推荐

  • 【Jetson-Nano】SD卡重新格式化

    文章目录 1 打开磁盘管理系统 2 打开powershell 以管理员身份运行 3 输入diskpart 并按回车键 4 输入 list disk 并按回车 5 输入select disk 并按下回车 6 输入clean 并回车 7 进行分
  • (休息几天)读曼昆之微观经济学——决策制定

    1取舍 权衡 一个人的精力有限 所以要学会分配自己的时间 比如多花一小时运动则会少花一小时学习 当这个道理用于社会服务时 则是大炮和黄油的道理 另外 社会面对的另一种权衡是效率与平等的关系 效率是指经济馅饼的大小 平等是指如何切分这个馅饼
  • 线性回归之随机梯度下降(sgd)

    梯度下降的原理 梯度下降 普通梯度下降bgd的方法简单暴力 但是调整速度比较慢 如果不想等所有数据都计算完了才开始调整w 而是计算完数据的一部分 batch size 后就立即调整w 说白了就是在训练过程中进行权重的更新 这样就成了随机梯度
  • Coursera 吴恩达DeepLearning.AI 第五课 sequence model 序列模型 第二周 Operations on word vectors - v2

    只做了计分部分 Operations on word vectors Welcome to your first assignment of this week Because word embeddings are very comput
  • Windows设置redis开启自动启动

    一 首先下载好你需要的Redis 这里就不多说了 可以百度的到的 二 安装完之后 运行redis是通过命令或者是直接运行redisServer的可执行文件 运行效果如下 三 设置Redis服务 由于上面虽然启动了redis 但是只要一关闭c
  • C++11之for循环的新用法

    C 使用如下方法遍历一个容器 include stdafx h include
  • Redis 数据结构与命令

    一 数据结构 Redis是典型的键值数据库 key一般是字符串 而value包含很多不同的数据类型 Value结构 Key结构 Redis的key允许有多个单词形成层级结构 多个单词之间用 隔开 格式为 项目名 业务名 类型 id 如果Va
  • 平滑滤波第二节,中值滤波法(数字图像处理大题复习 P4)

    文章目录 中值滤波 1 圈出模板像素 2 列出像素找到中值 3 填入结果 如果 不要滤波后就替换 中值滤波 1 圈出模板像素 我们先观察这个模板 这里圈出来了5个像素 那我们也在图像中对圈出5个像素 和均值滤波一样 第一个点的选取 2 列出
  • python用input输入list_python怎么用input函数输入一个列表

    python怎么用input函数输入一个列表 函数 的是 数字 没有任何 赋值 python怎么用input函数输入一个列表 易采站长站 站长之家为您整理了python怎么用input函数输入一个列表的相关内容 在Python3 0以后 键
  • JS中设置backgroun-position不成功的问题

    今天在做个人主页的时候 准备把background position设置一下 可是用了很多种方法都没有能够成功 最后才发现了问题 在这里记录一下 如果可以 也很开心能够和你分享我的经验 原生javascript 在原生的js中 大家都理解的
  • vscode不能预览plantuml文件报错的解决方法

    vscode不能预览plantuml文件报错的解决方法 vscode在预览plantuml文件时报错 安装了jre 8u231 dotnet sdk graphviz node终于解决 报错信息如下 扩展宿主意外终止或者 Error wri
  • 数据可视化——Davinci

    数据可视化 Davinci对比及功能使用 一 数据可视化 个人引用部分 1 有趣的意义 2 常规的意义 二 图形的内涵 1 图形类型 2 优秀可视化的特点 三 可视化需求分析 1 四个问题 2 三个沟通点 四 Davinci功能详解 1 可
  • 六度空间理论

    六度空间理论 什么是六度空间理论 Six Degrees of Separation 它是数学领域的一个猜想 名为Six Degrees of Separation 中文翻译包括以下几种 六度空间理论 六度分隔理论 六度分割理论或叫作小世界
  • 论文理解记录:Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration

    论文核心 论文剪枝对象是卷积核 与其他论文不同点在于作者思考了 norm wise 作为卷积核重要性判断的弊端 并提出了 FPGM 算法 该算法先计算出所有卷积核的几何中心 作者把卷积核当作多维空间中的点 然后找到距离几何中心近的卷积核 并
  • robot framework 使用五:CentOS上运行robot framework 并自动发送测试结果

    操作系统版本 centos 6 0 x86 64 想要在linux上运行robot framework的测试用例 需要安装以下工具和软件 1 安装python 2 7 6 首先python version 查看系统是否装有python 并且
  • jQuery操作编辑页面,span与input标签之间的随时转换

    1 input select textarea转span var switchToSpan function console log this attr id var cId this attr id 获取当前点击input的id cons
  • IP:127.0.0.1详解,与localhost区别

    127 0 0 1 127 0 0 1是回送地址 指本地机 一般用来测试使用 回送地址 127 x x x 是本机回送地址 Loopback Address 即主机IP堆栈内部的IP地址 主要用于网络软件测试以及本地机进程间通信 无论什么程
  • AE表达式:利用wiggle和Math.sin制作蝴蝶动画

    AE表达式 利用wiggle和Math sin制作蝴蝶动画 B站链接 AE表达式 B站讲解最详细的Math表达式和蝴蝶动画制作 课程准备 蝴蝶AI素材 wiggle的用法 上次录了一节视频 链接 Math sin三角函数 函数原型 y A
  • php获取脚本执行的参数

    在看PHP文档到预定义变量时碰到了 argc和 argv 顺手记录下 getopt 从命令行参数列表中获取选项 arg getopt d n 只接收d n之后的参数 num arg n arg n 365 是得到的n后面的参数 这种属于短参
  • 流处理系统Heron——architecture

    简介 Heron是Twitter开源的分布式流处理系统 用来在Twitter内部替代Storm 它提供了和Storm兼容的API 并弥补了Storm中的不足 Storm的不足和新的需求 调试困难 在Storm中 一个topology的多个c