B站离线多机房架构实践

Apache DolphinScheduler对比Azkaban、Airflow   DolphinScheduler Azkaban Airflow 稳定性       单点故障 去中心化的多Master和多Worker 是 单个Web和调度程序组合节点 是 单一调度程序 HA额外要求 不需要(本身就支持HA) DB Celery / Dask / Mesos + L... 阅读详情

01 背景

随着B站业务的高速发展,业务数据的生产速度变得越来越快,离线集群规模快速膨胀,既有机房内的机位急剧消耗,在可预见的不久的将来会达到机房容量上限,阻塞业务的发展。因此,如何解决单机房容量瓶颈成为了我们亟待解决的问题。

目前,针对机房容量问题的解决方案业界主要有以下两种:

1) 集群整体搬迁至更高容量的机房(scale up) 。该方案是一种纵向扩容方案,即将现有集群搬迁至容量更大的机房,从而提供集群扩展的空间。现实中,集群迁移一般不能影响业务的发展,即保证不停机,因此,迁移过程中需要两个规模相近的集群做全量迁移,或者需要一个具有一定规模的过渡集群,分批次迁移;对于大规模(tens of thousands)集群来说,迁移的经济成本巨大;另外,迁移后的新机房会有再次达到容量上限的风险。

2) 多机房方案(scale out) ,即一个机房容量有限,扩展为多个机房,同时对既有架构进行一定的改造,保证用户视角仍像是一个机房。此举可依据业务需要,采用灵活的方式增量扩容,从而一定程度上避免容量冗余问题。然而,该方案会存在跨机房数据交互,而机房间网络带宽一般也存在瓶颈;同时,网络的抖动或断网可能造成跨机房业务出现异常。因此,该方案需要考虑/解决网络带宽不足及网络抖动/断网问题带来的影响,技术成本较集群整体搬迁方案要高。

就我们目前自建机房的情况来看,中短期暂无清退既有机房(全部搬迁至新机房)的计划,从长期来看也会存在多个机房;另外,比起方案2的技术成本,我们更难接受方案1的经济成本和容量风险。因此,方案2是我们解决机房容量问题首选方案。

02 多机房方案

2.1 面临的问题

上文提到多机房方案面临带宽等网络问题,多机房方案的设计受其制约。

带宽瓶颈

离线场景主要是批处理场景,是对海量历史数据进行离线分析/处理的场景,该场景对延迟不敏感,但由于其处理数据量巨大对网络带宽等资源消耗较大;另外,生产场景中作业数量一般较多且执行时间不受控,若两个机房的主机只是简单叠加在一起做为一个集群来用,可能会存在大量的跨机房互访,产生大量的随机流量打满有限的跨机房带宽, 此时除离线自身受影响外, 还可能对其它跨机房业务造成影响 。因此,如何防止跨机房随机流量打满跨机房带宽是多机房方案要解决的一个重要问题。

网络抖动&连通性

跨城网络会受供应商服务质量影响(或施工影响)造成抖动(或断网), 与机房内CLOS架构的网络质量相比会低很多。若两个机房的主机当做为一个集群来用,如图1 HDFS示例,当网络抖动时,不但会导致跨机房读写延迟增加,还会影响DN的IBR等过程,造成服务性能和稳定性下降;当网络出现严重问题造成断网时,会导致异地机房数据不可用,还会导致异地机房DN失联,造成大量Block低于预期副本数,触发NN大量补副本等问题。因此,如何降低网络抖动及网络连通性问题带来的影响是多机房方案要解决的另外一个不可忽视的问题。

图1 HDFS 架构

2.2 设计选型

如上所述,多机房的主要矛盾是跨机房网络带宽不足、稳定性差与离线海量数据处理任务高效产出之间的矛盾,解决该主要矛盾面临的核心问题是如何减少跨机房带宽的消耗,以及如何降低网络稳定性问题带来的影响。

经调研,单元化架构是为解决多地多中心问题演进而来的部署架构,其中,单元是指一个能完成所有业务操作的自包含集合,在这个集合中包含了业务所需的所有服务,以及分配给这个单元的数据 [1-2] 。按照单元化的思路,在多机房场景中,每个机房可以作为一个单元,每个单元内提供作业执行所需要的全部服务以及数据,保证作业在单元内完成,从而解决上述多机房面临的核心问题;单元化拆分后任何一个单元的故障只会影响局部,不会造成整体瘫痪;在选定采用单元化思想来设计了多机房方案之后, 多机房方案的核心问题就限定在了如何决定作业与数据放置,以及如何让作业访问距离近的数据,来降低跨机房带宽的消耗及网络稳定性问题带来的影响。

带着上面的核心问题,我们调研了业界大厂的多机房解决方案 [3-7] 。这些方案在计算层面为防止Shuffle等中间结果数据造成跨机房流量,每个机房均独立部署了计算集群,在该层面均符合单元化思想;但在存储存面存在分歧,如图2所示,依据数据和异地机房的数据副本是否属于同一组NameSpace (NS),大体可以分为多机房单集群方案和多机房多集群方案。

图2 多机房方案分类

[3-5] 采用了多机房单集群方案,该方案中采用Block级的数据副本,数据和数据副本同属于一组NS,无数据一致性问题,但因NS只能在其中一个机房,无法有效应对网络连通性问题,且Namenode异地副本管理(BlockPlacementPolicy)和相关工具(Mover, Balancer等)改造成本较大,另外该方案可扩展性也受单集群规模制约。[6-7] 采用了多机房多集群方案,整体符合单元化思想。

其中 [6] 应用于云梯迁机房场景,它首先在同机房中通过Fast Copy将文件元数据分离到两个NS,然后再通

DolphinScheduler vs Airflow:大数据调度工具选型指南(2024最新对比) 本文深度对比了2024年大数据调度工具DolphinScheduler与Airflow的架构设计、核心功能、性能表现及企业级特性,帮助企业在复杂工作流场景下做出最优选型决策。重点分析了DolphinScheduler的去中心化双集群架构优势,以及Airflow的Python DSL灵活性,并提供了金融风控和实时推荐等典型场景的配置示例。 阅读详情

相关推荐

工作流编排平台深度分析:Apache Airflow vs. Apache DolphinScheduler

在 Airflow 中,定义工作流的唯一方式就是编写 Python 脚本。一个工作流(DAG)就是一个 Python 文件。这种方式的强大之处在于,开发者可以利用完整的 Python 语言特性来构建工作流,实现复杂的逻辑和动态生成。任务间的依赖关系通过简洁的位运算符(

分享AI和大数据领域的知识和研究 1820

字节跳动10万节点HDFS集群多机房架构演进之路(2)

光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想。

onghaha的博客 936

字节跳动10万节点HDFS集群多机房架构演进之路

业务的迅猛发展和业务场景的多样性给 HDFS 带来了很大的挑战,这里列几个比较有代表性的问题:如何在容量上满足业务的发展需求如何满足近线场景对低延迟的需求如何满足关键业务的机房级别容灾需求如何高效运维如此超大规模的集群要回答这些问题需要 HDFS 从多个方向迭代优化,例如 DanceNN 的上线、运维平台的建设等,本文不会介绍字节跳动 HDFS 所有的演进方案,而是聚焦在 HDFS 多机房架构的演进策略上,它直接回答了上面提到的两个问题,即:如何在容量上满足业务的发展需求:数据如何合理地在多个机房之间存放以

2401_84122826的博客 920

字节跳动10万节点HDFS集群多机房架构演进之路(1)

要回答这些问题需要 HDFS 从多个方向迭代优化,例如 DanceNN 的上线、运维平台的建设等,本文不会介绍字节跳动 HDFS 所有的演进方案,而是聚焦在 HDFS 多机房架构的演进策略上,它直接回答了上面提到的两个问题,即:如何在容量上满足业务的发展需求:数据如何合理地在多个机房之间存放以便能通过其他机房的资源进行快速扩容?如何满足关键业务的容灾需求:系统如何满足核心业务机房级别的容灾需求?字节跳动的 HDFS 技术脱胎于 Apache 社区的 HDFS,为了方便大家理解内部版本的技术发展历程,本小节我

2401_84149765的博客 937

如何在大背景下降本增效,构建超大规模存储架构?

字节跳动大数据存储技术负责人,在分布式存储领域有 10+ 年技术与产品经验。目前负责字节跳动大数据存储产品的研发和运营工作。主要负责产品及方向包括 HDFS(自研),数据湖(存储)和火山大数据存储加速产品等,涉及数十 EB 数据的管理和治理。

字节跳动云原生计算官方账号 1240

Docker 镜像备份与离线部署终极指南

是Docker 镜像迁移的黄金组合。离线部署多环境迁移灾备恢复Kubernetes 初始化企业镜像仓库Harbor 私有仓库containerdctr export自动化部署脚本就可以构建完整的企业级镜像交付体系。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 407

跨数据中心异构LLM推理架构设计与实践

大模型服务进入生产环境后,推理集群的规模与复杂度急剧上升:跨地域部署、多代际GPU混布、不同推理框架并存,成为大规模LLM落地必须面对的工程现实。如何理解异构算力的本质差异,如何设计分层架构以解耦各层迭代节奏,如何通过算力档位抽象与全局流量调度实现资源池化与成本优化,是分布式推理系统的核心命题。在此基础上,KV Cache管理、前缀缓存、连续批处理等优化手段直接影响首token延迟与吞吐;而容灾设计、过载保护与可观测性体系,则决定了系统在真实故障下能否稳定支撑电商大促等超高流量场景。本文从需求拆解出发,逐层

weixin_29061531的博客 241

阿里开源高性能搜索引擎 Havenask - Ha3

本文会重点介绍一下阿里系的搜索引擎中间件 Havenask(内部代号Ha3),在阿里内部支持了淘宝、天猫、菜鸟、优酷、高德、饿了么等在内的阿里搜索业务。Ha3 支持千亿级别数据实时检索、百万qps查询,百万TPS高时效性写入保障,毫秒级查询延迟和数据更新。开源地址:http://github.com/alibaba/havenask。

小田的专栏 5976

基于etcd+brpc的IM长连接消息路由与状态协调实践

在分布式系统架构中,服务发现与RPC通信是支撑高并发业务的两大基石。etcd作为强一致的分布式协调组件,通过Raft协议和Watch机制,为节点注册、状态同步和选举锁提供了可靠保障;而brpc作为高性能RPC框架,凭借bthread协程和灵活的负载均衡策略,承担起服务间高效传输的职责。当二者结合,便构建出一条从服务注册、实时感知到智能路由的完整链路,尤其适合状态长存、连接长活的即时通讯(IM)场景。在百万级用户接入、数百节点部署的背景下,etcd负责管理“谁在哪、谁可用”,brpc负责完成“消息如何高效送达

weixin_28475533的博客 297

除了weixin://wxpay,还有哪些方式能在小程序外调起支付?聊聊支付二维码的几种玩法

本文深入探讨了微信生态中多种支付触发方式,包括小程序支付、H5支付、Native支付和JSAPI支付等,特别解析了通过`weixin://wxpay/bizpayurl`在小程序外调起支付的替代方案。文章详细介绍了支付二维码的生成与应用技巧,以及如何在不同业务场景下优化支付体验,为开发者提供全面的微信支付解决方案。

weixin_30561177的博客 522

本地化AI应用部署指南:基于Node.js与Astro框架的Skills项目实践

在人工智能应用开发领域,本地化部署正成为保障数据隐私、提升响应速度和实现定制化需求的关键技术路径。其核心原理在于将云端AI模型的API调用与本地计算环境相结合,通过构建前后端分离的Web应用架构,实现AI能力的私有化部署。这一技术方案的价值在于,它使开发者能够完全掌控数据流与计算过程,避免了网络延迟与云端服务限制,尤其适合对数据安全有严格要求的内网环境或离线场景。从应用场景来看,本地化AI部署广泛适用于个人知识库助手、代码生成工具、内容创作平台等需要频繁交互与定制化的领域。本文以Skills项目为例,详细解

weixin_30552811的博客 685

阿里Havenask实战:如何用Ha3引擎搭建千万级QPS的电商搜索系统?

本文深入解析如何利用阿里巴巴开源的Havenask搜索引擎(内部代号Ha3)构建千万级QPS的电商搜索系统。文章从电商搜索的核心挑战出发,详细拆解了Havenask的分布式架构、实时索引更新机制与灵活的插件化设计,并提供了从集群部署、性能优化到业务定制化的全链路实战指南,为构建高性能、高可用的搜索服务提供了操作性极强的解决方案。

silver的专栏 706

图数据库中Distribution与Partitioning的本质区别与协同实践

图数据库的分布式能力依赖于两个基础但易混淆的概念:数据分布(Distribution)与数据分区(Partitioning)。前者解决物理归属问题,决定图数据分片(shard)在集群节点上的实际部署位置,影响容灾、扩缩容和跨机房延迟;后者解决逻辑切分问题,定义顶点与边按何种规则(如hash、range、composite)映射到分片,直接决定查询是否需跨节点fan-out。二者脱节将导致数据倾斜、慢查询激增与一致性风险。本文结合金融反欺诈、社交关系链、IoT拓扑等真实场景,详解zone-aware dist

weixin_33981932的博客 442

Apache Celeborn 在B站的生产实践

目前 Celeborn 基于 HBO 自定义高低优集群路由规则满足智能路由要求,即如图11所示,采用 JobParamRule 根据历史任务的 Shuffle 流量、当前作业的优先级、Celeborn 集群当前的 Shuffle 流量以及作业 Shuffle 流量阈值等路由到 Celeorn 高低优集群,保证基线任务能够使用高优集群运行 Shuffle 满足其资源使用,避免低优作业影响高优作业的 Shuffle 资源。

银行信息系统应用架构详解 521

核心面试聚焦:业务问题+系统问题+设计题---字节、阿里、美团等整理统计

业务系统及其他相关面试问题整理:线上相关问题排查+高并发系统的限流+高并发秒杀系统设计+负载均衡+一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M)内快速判断出?

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

通算、智算、超算:三种算力的区别与应用选型指南

算力是数字时代的基础资源,但通算、智算、超算常被混淆。通算基于CPU,支撑日常业务;智算依赖GPU/NPU,驱动AI模型训练与推理;超算以大规模并行集群实现尖端科学计算。理解三者在硬件、精度、软件生态上的差异,是合理规划算力基础设施、避免预算浪费的关键。从概念到原理,再到应用场景,本文帮你看清三种算力的真实分工与未来融合趋势。

weixin_30983965的博客 179

uniapp实战:5分钟搞定PDA激光扫码功能(附完整代码)

本文详细介绍了在Uniapp应用中快速集成工业PDA激光扫码功能的实战方案。通过解析PDA硬件扫码与手机摄像头扫码的核心机制差异,提供了完整的广播监听封装类代码,并演示了在Vue页面中的集成使用方法,帮助开发者高效解决仓储、零售等行业的条码扫描需求。

weixin_29239661的博客 457

华硕电脑Win10改Win7系统:BIOS设置详解

通过上述步骤,华硕电脑用户可以将系统从Windows 10更改为Windows 7。虽然这个过程可能涉及一些技术细节和潜在的风险(如数据丢失和驱动不兼容),但只要按照指南仔细操作并做好准备工作,大多数用户应该能够成功完成系统回滚。请记住,在进行任何系统更改之前都要备份重要数据,并确保已了解所有潜在的风险和限制。希望本文能够帮助到需要回滚到Windows 7的华硕电脑用户!

nntxthml的博客 2262

【Halcon】双目立体视觉引导机械手有序抓取,案例分享

本文介绍了一个基于双目视觉的工件定位与抓取系统。该系统使用两个工业相机组成双目视觉系统,通过标定获取相机参数,采用模板匹配算法识别任意摆放且可能交叠的工件。重点阐述了三维坐标获取方法,特别是通过Z方向高度实现有序抓取的策略。文章详细说明了系统搭建、双目标定、模板创建等关键步骤,并展示了特征点匹配和定位结果。该案例为初学者和开发者提供了双目视觉系统的基本实现参考,展示了机器视觉与机械手协同工作的典型应用场景。

机器视觉从业者 2490

MFC 修改CheckBox的文本颜色方法

设置主题 这一步是必须的,不可省略。 BOOL CMFCApplication1Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 // 设置主题 HWND

Kim的博客 2249

SikuliX实战:5分钟搞定游戏挂机脚本(附防检测思路与Python集成技巧)

本文详细介绍了如何使用SikuliX快速开发游戏挂机脚本,包括环境配置、基础原理、防检测策略及Python集成技巧。通过实战案例展示如何实现自动化任务、高级防检测方案,并结合Python提升脚本性能与智能度,帮助玩家高效完成重复性游戏操作。

weixin_33228769的博客 337

地表最强之Android微信语音/腾讯会议通话录音

地表最强之Android微信语音/腾讯会议通话录音

cczhengv 6111

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 面了个腾讯出来的,让我见识到什么叫“精通MySQL调优”
下一篇: MySQL 死锁了,怎么办?
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值