为什么阿里云要做流批一体?

flink 流批一体 目录 当我们谈论批流一体,我们在谈论什么? 一、流计算与批计算 一)流计算与批计算 二)流计算与批计算的比较 三)为什么要搞流批一体 二、流批一体的场景 一)数据集成的流批一体 二)数仓架构的流批一体 三)数据湖的流批一体 四)存储的流批一体 1.Pulsar 2.Hologres 1)Hologres的架构图 2)Hologres的流批一体 三、Flink中的流批一体 一)流批一体的DataStream 1.目前的 阅读详情

作者 | 蔡芳芳

采访嘉宾 | 王峰、杨克特、黄晓锋

流批一体已经从理论走向实践,并在 2020 年迎来落地元年。

短短 5 年,Apache Flink(下称 Flink)从一个突然出现在大数据舞台的“萌新”系统,迅速成长为人人皆知的流计算引擎。

在伴随 Flink 发展掀起的这波实时计算浪潮里,阿里是国内走得最前、做得也最多的一个,“流批一体”是它的新赛道。今年双 11, Flink 流批一体开始在阿里最核心的数据业务场景崭露头角,并抗住了 40 亿条/秒的实时计算峰值。

这是第一次有互联网超级大厂真正在核心数据业务上规模化落地流批一体技术。同时,这也意味着 Flink 在阿里的发展已经进入第二个阶段,从全链路实时化进阶到全链路流批一体化。

恰逢 2020 年 Flink Forward Asia 大会召开之际,InfoQ 对 Apache Flink 中文社区发起人及阿里云实时计算负责人王峰(花名莫问)、阿里云实时计算团队资深技术专家杨克特(花名鲁尼)、天猫大数据负责人黄晓锋进行了独家专访,希望从多个角度更完整地还原 Flink 流批一体在阿里落地的过程和背后的技术挑战,并深入探讨这个新赛道对于阿里云的价值和未来发展方向。

1 从理论到落地

流批一体的技术理念最早提出于 2015 年,它的初衷是让开发人员能够用同一套接口实现大数据的流计算和批计算,进而保证处理过程与结果的一致性。随后,大数据厂商 / 框架们如 Spark、Flink、Beam 等,都陆续提出了自己的解决方案,虽然实现方式各不相同,但在一定程度上说明流批一体的思想已经在业界得到广泛认可。

然而,流批一体要真正从理论走到落地,尤其是在企业的核心数据业务场景规模化落地,往往面临技术和业务的双重挑战。在莫问看来,这也是为什么流批一体出现的很早,厂商落地案例却不多见。

从技术层面来看,流计算和批计算从计算方式、支撑模块、资源调度策略到流程规划等都存在差异,不管是批流一体还是流批一体,都有不少技术问题要解决。这其中关乎研发资源投入,但大前提是需要有一个统一的计算引擎。虽然 Spark 是最早提出流批一体理念的计算引擎之一,但由于其本质还是基于批(mini-batch)来实现流,在流计算语义和延迟上存在硬伤,难以满足复杂、大规模实时计算场景的极致需求,因此目前很多厂商的数据业务还是选择将流和批分开来做,流用 Flink、批用 Spark。这就导致前面说的大前提无法满足,在核心场景落地流批一体更加无从谈起。

从业务层面来看,如果企业有非常重的历史包袱或者在流批一体架构下不能取得足够多业务价值,那它也不会有足够的动力去做流批一体的改造和落地。

但对于阿里来说,恰恰是在技术和业务两个因素共同推动之下,流批一体才得以在双 11 核心业务场景正式亮相。

技术上,阿里 2019 年收购 Flink 的创始公司 Ververica 后,投入近百名工程师到 Flink 技术研发和社区工作中,在 Flink 基于流实现批计算的能力上做了非常多工作,其中有一些特性优先在双 11 落地,后续也会全部推进到社区里。

业务上,今年大促期曾经面临离线和实时数据统计口径不一致的问题,这类潜在问题会影响广告、商务甚至公司运营决策,这是真正的“秒秒钟几百万上下”,强电商属性和大业务体量倒逼着流批一体技术必须在阿里核心业务落地,方能解决痛点。

莫问提到,当前流批一体已经在许多业务场景成为刚需,而不是一个技术噱头。这次双十一就像一场“转正”考试,意味着在阿里巴巴业务场景中流批一体技术从理论走向落地,同时也标记着 Flink 在阿里开始从全链路实时化步入全链路流批一体化的新阶段。

2 路走对了,就不怕远

2015 年,针对搜索推荐业务做新的大数据计算引擎选型时,阿里云实时计算团队对流批一体的技术方向就已经有初步设想。

在经过深度调研、可行性验证和对未来可能遇到的问题进行推演之后,团队最终决定引入 Flink。鲁尼表示,虽然当时 Flink 整个系统还不是特别成熟,但团队认为 Flink 以流计算为核心的设计理念更符合未来数据计算实时化发展的大趋势。在阿里内部有一句土话,叫“路走对了,就不怕远”,从后续这几年的发展情况来看,Flink 确实进展顺利,甚至超过团队当时的预期。

当然,从初步设想到实现相对完善的流批一体能力,需要一个循序渐进的过程。

从技术本身演化的角度来看,Flink 经历了流批一体 API 从无到有、从有到更优两个阶段。在早期的 Flink 版本中,Flink 的流和批无论在 API 还是在 Runtime 上都没有达到彻底的统一。但从 1.9 版本开始,Flink 加速在流批一体上进行完善和升级,Flink SQL 作为用户使用的最主流 API,率先实现了流批一体语义,用户只需学习使用一套 SQL 就可以基于 Flink 进行流批一体的开发,降低了开发的门槛。

最初 SQL 实现流批一体的做法是将流作业和批作业分别翻译成 Flink 底层的两个原生 API,包括处理流计算需求的 DataStream 和处理批计算需求的 DataSet,相对来说有些简单粗暴,当时也引发了一系列问题,包括开发链路过长导致迭代效率不高等。因此 Flink 社区又对底层架构做了一些重构,并引出了 DAG API,Flink 分布式运行层针对 DAG 做了一系列优化,包括增加流批一体的调度器、可插拔的 Shuffle 插件等。这样一来,Flink 的分布式运行层也开始逐渐形成了流批一体的 DAG 描述能力和调度执行能力。

目前 Flink 的流批一体方案仍然在持续改进当中。虽然现在开发者已经可以很方便地基于 SQL API 来执行流批一体作业,但 SQL 并不能解决所有需求。一些逻辑特别复杂或定制化程度较高的作业还是需要继续使用 DataStream API。DataStream API 虽然能更加灵活地应对流计算场景的各种需求,但却缺乏对批处理的高效支持。

因此,Flink 社区在完成 SQL 流批一体升级之后,从 1.11 版本开始投入大量精力完善 DataStream API 的流批一体能力,在 DataSteam API 上增加批处理的语义,同时结合流批一体 Connector 的设计,让 DataStream API 能够在流批融合场景下对接 Kafka 和 HDFS 等不同类型流批数据源。在刚刚发布的 1.12 版本中,大家就可以体验到 DataStream 流批一体的原生支持。接下来流批一体的迭代计算 API 也将被引入到 DataStream 中,进一步解锁一系列机器学习场景。

此外,在当前 Flink 主版本中,不管是 SQL 还是 DataStream API,在流批一体概念上都还是流计算和批计算功能的结合体。用户虽然只需要编写一套代码,但需要在代码中选择使用流的方式跑,还是批的方式跑,执行模式比较单一。但有些业务场景已经提出更高的要求,即流批混合,需要在批和流之间自动切换,Flink 也将在后续支持更加智能的流批融合场景和动态切换能力。

当然,流批一体不只是一个技术问题,最终还是业务落地的问题,Flink 的流批一体能力也是通过大规模业务锻造出来的。

虽然选型之初,阿里云的技术团队看中的就是 Flink 优秀的流计算能力,但当时这个能力并未经过大规模线上业务验证。为了快速试错,团队决定开辟一个 Flink 的内部分支(即后来为大家熟知的 Blink),最大目的是快速增加当时急缺的功能并在线上业务验证,这也是在业务早期的选择。

经过团队一年的努力,基于 Flink 的搜索推荐实时计算平台成功支持了 2016 年的搜索双 11,保证了搜索推荐全链路实时化。在这之后,Flink 开始在阿里集团内部服务于更多实时数据业务,在更大规模的业务场景验证并优化其流计算能力和稳定性。2017 年,Flink 成功支持了全集团双 11 的实时数据业务,包括 GMV 大屏等最核心的数据业务场景。

在实时计算能力经过充分验证之后,团队开始补充和完善 Flink 的批计算能力,并在搜索推荐的索引构建、机器学习特征工程和样本生成等业务场景中进行验证。

经过大规模作业验证之后,团队对 Flink 的流批一体能力更加有底,也是在这个时候,团队开始酝酿 Blink 的开源。后面的进展很多人都已经有所了解:2018 年 12 月阿里宣布开源 Flink 的内部分支 Blink;2019 年 1 月起,阿里逐步将内部在 Blink 沉淀的能力推回 Flink 开源社区;到 2019 年 11 月发布的 Flink 1.10 版本前瞻,Blink 全部功能都已经进入 Flink。2020 年双 11 天猫营销决策核心系统的这场“大考”,Flink 流批一体技术又得到了更进一步的锤炼。

3 流批一体的双 11“大考”

在莫问看来,Flink 流批一体技术从最初应用于搜索推荐场景,到今年双 11 在天猫核心数据业务落地,升级的是业务的重要程度,而不是简单的计算规模。

在流计算场景上,天猫大数据团队已经跟实时计算团队配合了很多年,但之前一直没有在批计算场景上线。鲁尼透露,天猫的批处理作业优先级在集团内属于级别最高的那一档,因此在架构升级上会更慎重。

天猫分析场景下的报表大部分分为实时和离线两种,商家、小二、管理层通过实时数据和历史数据进行不同维度、不同时间周期的比对,从而对当前的活动情况作出判断,这些数据是业务决策的重要判断依据。

以前天猫整体的数据架构使用的是 Lambda 架构,数据分析需求基于流、批两套计算引擎产出,这种分离的架构不仅会带来两套开发成本,也导致数据逻辑和口径难以对齐。另外,产品搭建数据报表的时候,过程繁琐,容易出现问题。这些痛点促使天猫大数据团队开始调研流批一体的技术方案。

流批一体的技术方案主要分两种,一种是跨引擎的流批一体,比如更早以前 Storm 和 Spark 结合使用,批交给 Spark 执行,流交给 Storm 执行;另一种就是一个引擎本身就具备流批一体的能力,比如 Spark 和 Spark streaming、Flink 等。鉴于 Flink 的流计算能力已经在阿里集团内部经过大规模业务应用的验证,以及 Flink 流批一体技术的不断成熟,天猫大数据团队决定尝试基于 Flink 的流批一体能力升级技术架构。

除了计算层,团队也调研了存储层的流批一体方案,最终确定云原生实时数仓 Hologres 可以满足天猫点查和 OLAP 分析这两个场景的需求。团队首先设计了一个 POC 流程对整套方案进行可行性验证,发现这套方案是 work 的,的确能对研发效能和数据质量带来了比较大的提升。

黄晓锋告诉 InfoQ,从决定在双 11 大促中规模化使用 Flink 流批一体到最终落地,天猫大数据团队和实时计算团队并肩作战了 5 个月,整个改造过程大致可以划分为四个关键阶段。

  • 第一个阶段是设计。首先需要拆解和梳理天猫实际情况,完成流批一体模型的统一。然后需要在平台这一侧把源数据打通,实现用户只写一套代码,平台自动翻译成 Flink Batch 任务和 Flink Stream 任务,同时写到一张 Holo 表,完成计算层表达的统一。

  • 第二个阶段是落地。流批一体需要依赖离线的调度,因此需要对 MaxCompute平台做一定程度的打通。

  • 第三个阶段是优化。包括语义层表达的优化,比如以前写的趋势图逻辑可能针对流场景做了针对性优化,但在批上面不起作用甚至可能存在问题,这些特殊场景需要做语义对齐;也包括性能的优化,以保证在双 11 可以达到性能目标。

  • 第四阶段是稳定性。由于整条链路改动比较大,双 11 场景对稳定性的要求又特别高,因此团队重点展开了数据全链路的压测,以保证 Flink 本身流批计算性能、Hologres 的查询性能和上层 BI 层的查询性能,都能够满足双 11 的 QPS 诉求。

在整个过程中,团队也遇到了几个核心挑战。

其中一个挑战来自性能。这是流批一体第一次大规模使用,不同系统的数据打通做的还不是非常完备。比如 MaxCompute 和 Flink 之间的数据中转是通过 Tunnel 管道的方式来做的,但在规模化应用的过程中才发现 Tunnel 有连接数的限制,会极大地影响规模化推广。后来团队通过在 Flink 这一层做相应的优化,先一次性读取再在 Flink 内部做分发,极大地降低了连接数并优化了读取性能,问题得以解决。

另一个挑战来自流批一体的语义统一。在某些场景下,开发人员对流批语义的理解和 Flink Runtime 翻译出来的流批一体语义之间存在差异,可能会导致同一套 SQL 跑出来的流批结果跟业务理解的不一样,比如对于 Index Join 和 Primarykey Join 的处理方式在流批上面的差异。后来两个团队联合修复了这个问题。

除此之外,天猫大数据团队也联合 Hologres 开发团队对 Hologres 进行了非常深度的优化,包括优化器、排队机制、数据 Shard 的划分规则、计算层的数据 shuffle 机制都做了针对性的优化。

事实上,Flink 流批一体成功落地双 11 天猫核心数据场景,不仅更好地提升了开发团队成员的技术能力,在业务上的实践效果也非常喜人。

时效性上,面对 58.3 万笔 / 秒的交易峰值和上亿 / 秒的无线流量洪峰,天猫的所有任务都达到了秒级延时,整个实时计算集群峰值 TPS 达到 40 亿条 / 秒。同时,集群资源利用率也得到了大幅提升,批任务可以错峰执行。

准确性上,流批任务的业务口径做到了完全一致,数据质量问题不复存在,成为大促期间重要的业务雷达。流批模型也实现了完全统一,产品搭建效率提升 400%。

灵活性上,流批一体实现了多个计算处理模式也只需要撰写一套代码,需求迭代效率提升 2 倍,大促当天紧急需求承接效率提升 5 倍。同时,实时数仓 +OLAP 场景结合,也使得变更成本大幅下降,能更好地满足分析师按需取数场景的需要。

在黄晓锋的整体规划里,Flink 流批一体成功落地双 11 天猫核心数据场景,仅仅只是走出了阳光大道的第一步。接下来,天猫大数据团队计划继续探索存储层的流批一体,而在更长远的未来,团队希望推动流批一体往“湖仓一体”方向去演进,并把经过内部打磨的技术架构和平台,如 DataPhin、QuickBI、Flink、Hologres 整合的场景,输出到云上服务更多外部用户。

4 下一个规模化落地场景什么时候到来?

阿里在核心数据业务上真正规模化落地“流批一体”无疑给业界开了个好头。

近几年,大数据领域逐渐开始拥抱“融合”(或所谓“一体化”)演进的新方向,不管是今年刚成为热议话题的“湖仓一体”,还是更早提出的“流批一体”,其实都是这一思路的阶段性成果。对于新的技术思路,大众在一开始肯定会有质疑和观望情绪。莫问表示,团队希望通过这次成功打样的案例向业界证明,Flink 流批一体是真正能够落地核心业务并为业务创造价值的。这或许能让更多企业和团队打消观望情绪,并使 2020 年成为流批一体落地的元年。

在黄晓锋看来,流批一体将成为阿里集团内部数据技术升级的新赛道。因为天猫的业务体量和业务场景的复杂度,在整个集团里非常具有代表性,Flink 流批一体在天猫业务上的成功应用,会推动整个集团在流批一体这个赛道上的投入,也会推动更多业务去升级到流批一体架构,以解决业务上的痛点。

除了在阿里内部推动更多业务落地 Flink 流批一体,莫问提到,未来还会将更多精力和焦点放在开源社区。下一步,阿里云实时计算团队会把在阿里业务场景下打磨出来的核心技术积累,在 Flink 未来的 1 到 2 个版本中逐步推回开源社区,让更多企业都能够用上 Flink 流批一体的能力。

当然,在 Flink 流批一体推广和大规模落地的道路上也充满挑战。

流批一体技术本身的挑战在于,原来是一个单一引擎解决单一问题(批或者流),现在需要一个引擎同时解决流 + 批的问题,如果未来流和批的概念逐渐淡化,那么引擎本身就需要具备针对不同场景和需求智能化选择流批模式的能力,这在技术上是非常大的挑战。不过鲁尼认为,机遇和挑战是一并存在的,如果用户能够把更多精力从选择引擎、维护引擎中解放出来,就可以更专注于业务本身,既能加快迭代效率也能利用流批一体引擎的灵活性解锁更多有价值的业务场景。

另一个挑战在于改变用户的心智,莫问表示,流批一体需要用户转变原来固有的流批分离的思维模式,这并不是一件简单的事情,企业在做相关的决策时肯定会更加谨慎,需要逐步试点和推进。另外,当前很多互联网公司离线计算团队和实时计算团队是两个独立的团队、两套独立的体系,如果要做流批一体,就需要两个团队密切合作和共建,组织架构上的挑战不亚于技术上的挑战。但莫问相信,只要方向对了,一切只是时间问题。

据了解,目前 Flink 社区中字节跳动、快手、小米等几家头部公司都已经开始探索基于 Flink 的流批一体架构,或正在规划当中。

展望 2021 年,Flink 流批一体或将迎来快速发展期。随着更多大型互联网公司成功落地并向业界输出经验,相信会推动更多中小企业选择跟进和尝试流批一体架构。


活动推荐

12 月 13 日 -12 月 15 日,大数据领域顶级盛会 Flink Forward Asia 2020 在线峰会直播进行中!

了解更多 Flink 流批一体生产环境落地实践及 Flink 核心技术解析、实时数仓应用、开源生态发展、机器学习及金融行业应用等,扫描下图【二维码】或点击【阅读原文】,立即观看直播???? 

点个在看少个 bug????

基于Data+AI构建真正的流批一体! 阅读详情

相关推荐

【产品动态】解读Dataphin流批一体的实时研发

简介:Dataphin作为一款企业级智能数据构建与管理产品,具备全链路实时研发能力,从2019年开始就支撑可集团天猫双11的实时计算需求,文章将详细介绍Dataphin实时计算的能力。 背景 每当双11全球购物狂欢节钟声响起,上千万用户涌入天猫、淘宝,流畅的购物体验背后是阿里工程师用技术打造出的营地,支撑了每年双11所带来的数据洪峰。2020年11月1日至11月12日0:00,天猫“双11”累计总交易额达4982亿元,物流订单总量达到23.21亿单。这一切的背后都离不开实时计算技术。 Dataphi.

阿里云云栖号 1282

什么是流批一体?怎样理解流批一体?

它包含了计算语义、编程模型、API、调度、执行、shuffle等各个方面的统一,不过对于我们数据开发的同学来说,我认为流批一体最终想要达到的效果可以这样描述:给定确定的数据源(可以是物理的也可以是逻辑上的),编写一套代码(Java代码或SQL),执行引擎能够根据需要(例如根据用户配置“STREAMING/BATCH”或自动识别)将代码转换为流任务(增量地读取、流式地处理)或批任务(全量地读取、批式地处理),并输出相同的结果。流批一体的数据传输方式是一种融合了批处理和实时流处理的高效灵活的数据传输方式。

oOBubbleX的博客 6496

大数据流批一体化架构设计

实时明细数据层,以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表;以数据域+业务域的理念建设公共汇总层,对于DM层比较复杂,需要综合考虑对于数据落地的要求以及具体的查询引擎来选择不同的存储方式(现有业务场景主要考虑落地到Mysql中),分为轻度汇总层和高度汇总层,高度汇总层数据用于比较简单的KV查询,提升查询性能数据的时效性要求为秒级,轻度汇总层Kafka中宽表实时写入OLAP存储引擎,用于复杂的OLAP查询场景,可以满足分析和产出复杂报表的需求,对数据的时效性到分钟级。

悦分享 2949

流批一体历史背景及基础介绍

当数据出现错误,或是业务逻辑发生变更时,启动另一个流处理层,利用消息队列的重播机制,重新消费先前的数据并输出到另一个结果表中,当确定可以替换线上表时,完成替换。这是Watermark一种非常经典的用法,因为数据自带的时间字段是上游系统添加的,等数据到了下游系统时,又会花费一定的时间,如果这时再用处理时间来作为判断迟到的标准,则所有数据都会被判定为迟到,因此用此时系统中数据的最大时间减去一个值作为Watermark的值就十分的合理,如果超过这个时间还没有达到的数据,才会被判定为迟到数据。

cjl的博客 1926

AutoCAD 2024 LISP实用技巧:自定义快捷命令与高效绘图工具集

本文详细介绍了如何在AutoCAD 2024中部署和使用LISP脚本,打造高效绘图工具集。通过自定义快捷命令,如WFF(超级文字查找替换)、GQT(图层隔离)和LLTJ(智能长度统计),可大幅简化图层管理、文字编辑和测量统计等重复性操作,显著提升绘图效率。

gan8painter的博客 324

Matlab_Marr小波尺度变换图

多尺度的连续小波变换分解后时间尺度图 墨西哥Marr小波函数: %delta 小波变换尺度 %N     小波函数的长度 %s     原始信号 %g     原始信号某个尺度下的小波变化系数 function g=Singularity_Detection(delta,N,s); %保持信号长度 n=length(s); % 构造墨西哥小帽小波函数 for index_x=1

桔色小西瓜 6602

流批一体技术简介

本文由阿里云 Flink 团队苏轩楠老师撰写,旨在向 Flink 用户整体介绍 Flink 流批一体的技术和挑战。

Ververica的博客 1877

from pointnet2_ops import pointnet2_utils 安装过程

pointnet2_ops

goodgoodstudy___的博客 8363

Flink 流批一体场景应用及落地情况

本文由阿里云 Flink 团队苏轩楠老师撰写,旨在介绍 Flink 流批一体在几个常见场景下的应用。

Ververica的博客 2998

车辆动力学仿真模型的可信度评估方法

以转向工况测试为例,实车采集的方向盘转角作为车辆动力学模型的输入,记录车辆动力学模型的横摆角速度的输出结果,计算横摆角速度的幅频特性,根据《GB/T 6323-2014 转向盘角脉冲试验》的方法,获取横摆角速度峰值、横摆角速度谐振峰频率、横摆角速度谐振峰水平,与采集的实车结果对比,并计算车辆动力学模型和实车对于关键对比参数的相对误差。由公式(2)计算可得,在制动工况和转向工况测试下,车辆动力学模型和实车的纵向车速、制动减速度、制动距离、横摆角速度基本一致,精度> 85%,具有较好的精度。

wangchen900705的博客 1961

MS51内部振荡器

MS51内部有两个RC振荡器,一个高速16MHz或24MHz(HIRC),可通过HIRC24(RCTRIM1.4)位进 行选择配置,以及一个低速10 kHz(LIRC)。它们都可被选择用作系统时钟。通过设置HIRCEN (CKEN.5)位使能HIRC,设备上电时LIRC被使能。用户可设置OSC[1:0] (CKSWT [2:1])为[0,0]选择HIRC 作为系统时钟,设置OSC[1:0](CKSWT [1:0])为[1,0]选择LIRC作为系统时钟。注意:MS51上电后HIRC 和 LIRC都被...

seraphseraphhill2008的博客 808

Flink 流批一体在阿里的落地

作者 | 蔡芳芳采访嘉宾 | 王峰、杨克特、黄晓锋流批一体已经从理论走向实践,并在 2020 年迎来落地元年。 短短 5 年,Apache Flink(下称 Flink)从一个突然出现在...

Ververica的博客 897

【气候模式降尺度】分位数增量映射(QDM)原理及MATLAB代码实现

简介QDM原理及其MATLAB代码实现

WW、forever的博客 5865

湖仓实时化升级 :Uniflow 构建流批一体实时湖仓

本文整理自阿里云产品经理李昊哲老师在 Flink Forward Asia 2024 流批一体(一)专场中的分享,主要分为以下三个方面:1. 实时湖仓发展趋势洞察2. 基于Flink搭建流批一体实时湖仓3. MaterializedTable升级流批一体湖仓体验

Ververica的博客 1042

(2-2-2)位置控制算法:常用的位置控制算法(2)

例如下面是一个使用滑模控制算法实现机器人位置控制的例子,在该例子中,假设机器人在一维空间中移动,目标是使机器人的位置迅速、鲁棒地达到设定的目标位置。自适应控制算法通过实时地调整控制器参数,可以适应系统的变化,从而提高系统的鲁棒性和性能。模型预测控制(Model Predictive Control,MPC)是一种先进的控制策略,通常应用于动态系统,以实现对系统状态的优化控制。(6)迭代优化:随着时间推移,MPC迭代执行上述步骤,持续优化控制输入,以适应系统动态和外部扰动,实现对系统状态的稳健控制。

码农三叔 1609

代码复现1——Matterport3d数据集下载

进入“Dataset Download”部分,下载申请书,填写之后发送到指定邮箱(matterport3d@googlegroups.com),之后会收到回信,回信中附有一个download_mp.py的脚本文件。,大小约15G,并不是所有的Mp3d datasets,所有大小约1.3T。下载完成后如下图所示:我这边显示大小为16.1G。

qq_44100524的博客 8057

数据仓库、数据湖、流批一体,终于有大神讲清楚了!

简介: 数据仓库,数据湖,包括Flink社区提的流批一体,它们到底能解决什么问题?今天将由阿里云研究员从解决业务问题出发,将问题抽丝剥茧,从技术维度娓娓道来:为什么你需要数据湖或者数据仓库解决方案?它的核心难点与核心问题在哪?如果想稳定落地,系统设计该怎么做?作者:蒋晓伟(量仔) 阿里云研究员金晓军(仙隐) 阿里云高级技术专家 一、业务背景 1.1 典型实时业务场景 首先我们来看一个典型的实时业务场景,这个场景也是绝大部分实时计算用户的业务场景,整个链路也是一个典型的流计算架构:把用户的行为数

阿里云开发者 4658

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

流批一体架构在快手的实践和思考

快手技术专家、Apache Flink & Apache Calcite Committer 张静,在 FFA 流批一体专场的分享。

Ververica的博客 934

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Flink 流批一体的实践与探索

自 Google Dataflow 模型被提出以来,流批一体就成为分布式计算引擎最为主流的发展趋势。流批一体意味着计算引擎同时具备流计算的低延迟和批计算的高吞吐高稳定性,提供统一编程接口开发两种场景的应用并保证它们的底层执行逻辑是一致的。对用户来说流批一体很大程度上减少了开发维护的成本,但同时这对计算引擎来说是一个很大的挑战。 作为 Dataflow 模型的最早采用者之一,Apache Flin...

数据库技术 709

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

腾讯云为什么做不过阿里云?说腾讯云败了合适吗?

云服务两大佬腾讯和阿里的比拼结束了吗? 首先给出答案:那肯定是没有啊! 凡是涉及利益广泛的竞争都不会在短时间内结束,凡是涉及利益深厚的竞争更不会在段时间内结束! 云服务器只有两个大佬吗? 云服务器市场很显然不只有腾讯云和阿里云两位大佬,首先人家百度云和华为云就不乐意! 百度云说了:虽然我认阿里和腾讯他俩才是老大老二,但是哥曾经也是三巨头之一好不好,现在混的不好,再不济当个老三老四还是不勉强的吧!(好像很有道理,也似乎有这个实力,不过最开始的百度云应该是百度网盘) 华为云也说了:他们都是搞互联网的,没啥硬实

云云有趣 1948

FFA 2024 「流批一体」专场:探索在不同场景的流批一体

Flink Forward Asia 2024 即将盛大开幕!作为 Apache Flink 社区备受期待的年度盛会之一,本届大会将于11 月 29 至 30 日在上海隆重举行。Flink Forward Asia(简称 FFA)是由 Apache 官方授权的社区技术大会,旨在汇聚领先的行业实践与技术动态。在众多合作伙伴和技术开发者的支持下,FFA 已成功举办六届。适逢 Apache Flink...

Ververica的博客 649

Flink流批一体技术架构及阿里实践详解

Flink流批一体技术架构及阿里实践详解 【下载地址】Flink流批一体技术架构及阿里实践详解 Apache Flink作为一款强大的流批一体计算引擎,致力于统一处理流计算、批处理及机器学习等多种计算形态。阿里巴巴基于Flink开发的Blink版本,在流批一体化场景中展现了卓越的性能优化与技术创新。本项目深入解析Flin...

gitblog_06779的博客 461
上一篇: IDEA + Groovy 脚本一键生成实体类,用法舒服,高效!
下一篇: 手写一个 web 服务器!
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值