当前位置: 凤翔县州轫旅游网 > 旅游定制 > 正文
  • Uber 如何行使 Apache Hudi 撑持 PB 级数据湖

    作者:admin
    发布时间:2020-07-11 13:38
    点击数:

    原标题:Uber 如何行使 Apache Hudi 撑持 PB 级数据湖

    涝按装饰有限公司

    1. 短序

    从确保实在展望到达时间到展望最佳交通路线,在Uber平台上挑供坦然、无缝的运输和交付体验必要郑重、高性能的大周围数据存储和分析。2016年,Uber开发了添量处理框架Apache Hudi,以矮延长和高效果为关键营业数据管道赋能。一年后,吾们开源了该解决方案,以使得其他有必要的结构也能够行使Hudi的上风。接着在2019年,吾们实走准许,进一步将其施舍给了Apache Software Foundation,差不众一年半之后,Apache Hudi卒业成为Apache Software Foundation顶级项现在。为祝贺这一里程碑,吾们想分享Apache Hudi的构建、发布、优化和卒业之旅,以使更大的大数据社区受好。

    2. 什么是Apache Hudi

    Apache Hudi是一个存储抽象框架,可协助结构构建和管理PB级数据湖,始末行使 upsert和 添量拉取等原语,Hudi将流式处理带到了相通批处理的大数据中。这些功能始末联相符的服务层(几分钟旁边即可实现数据延长),协助吾们更快,更稀奇地获取服务数据,从而避免了维护众个体系的额外支付。更变通地,Apache Hudi还能够在Hadoop分布式文件体系(HDFS)或云存储上运走。

    Hudi在数据湖上启用原子性、一致性、阻隔性和持久性(ACID)语义。Hudi的两个最普及行使的功能是 upserts和 添量拉取,它行使户能够捕获变更数据并将其行使于数据湖,为了实现这一点,Hudi挑供了可插拔索引机制,以及自定义索引实现。Hudi具有控制和管理数据湖中文件布局的能力,这不光能克服HDFS NameNode节点和其他云存储限定,而且对于始末挑高郑重性和查询性能来维护健康的数据生态体系也专门主要。另外Hudi声援众栽查询引擎,例如Presto,Apache Hive,Apache Spark和Apache Impala。

    图1. Apache Hudi始末在外上挑供分别的视图来吸收变更日志、事件和添量流,以服务于分别的行使场景

    从总体上讲,Hudi在概念上分为3个主要构成片面:必要存储的原起数据;用于挑供upsert功能的索引数据以及用于管理数据集的元数据。内核方面,Hudi维护在分别时间点在外上实走的一切行为的时间轴,在Hudi中称为即时,这挑供了外格的即时视图,同时还有效地声援了挨次到达的数据检索,Hudi保证时间轴上的操作是原子性的,并且基于即往往间,与数据库中进走更改的时间是一致的。行使这些新闻,Hudi挑供了联相符Hudi外的分别视图,包括用于迅速列式文件性能的读优化视图,用于迅速数据吸收的实时视图以及用于将Hudi外行为变更日志流读取的添量视图,如上图1所示。

    Hudi将数据外结构到分布式文件体系上基本路径(basepath)下的现在录结构中。外分为众个分区,在每个分区内,文件被结构成文件组,由文件ID唯一标识。每个文件组包含几个文件切片,其中每个切片包含在某个特定挑交/压缩(commit/compaction)转瞬生成的基本数据文件(*.parquet),以及包含对基本数据文件进走插入/更新的一组日志文件(*.log)。Hudi采用了Multiversion Concurrency Control(MVCC),其中压缩操作将日志和基本文件相符并以生成新的文件片,而清算操作则将未行使的/较旧的文件片往除,以回收文件体系上的空间。

    Hudi声援两栽外类型:写时复制和读时相符并。写时复制外类型仅行使列文件格式(例如,Apache Parquet)存储数据。始末写时复制,能够始末在写过程中实走同步相符并来浅易地更新版本并重写文件。

    读时相符并外类型行使列式(例如Apache Parquet)和基于走(例如Apache Avro)文件格式的组相符来存储数据。更新记录到添量文件中,然后以同步或异步压缩手段生成列文件的新版本。

    Hudi还声援两栽查询类型:快照查询和添量查询。快照查询是从给定的挑交或压缩操作开起对外进走"快照"的乞求。行使快照查询时,写时复制外类型仅袒露最新文件片中的基本/列文件,并且与非Hudi外相比,可保证相通的列查询性能。写时兴复制挑供了现有Parquet外的替代品,同时挑供了upsert/delete和其他功能。对于读时相符并外,快照查询始末动态相符并最新文件切片的基本文件和添量文件来挑供近乎实时的数据(分钟级)。对于写时复制外,自给定挑交或压缩以来,添量查询将挑供写入外的新数据,并挑供更改流以启用添量数据管道。

    3. Apache Hudi在Uber的行使

    在Uber,吾们在各栽场景中都行使到了Hudi,从在Uber平台上挑供相关走程的迅速、实在的数据,从检测敲诈到在吾们的UberEats平台上挑供餐厅和美食选举。为了演示Hudi的做事原理,让吾们逐渐晓畅如何确保Uber Marketplace中的走程数据在数据湖上是最新的,从而改善Uber平台上的骑手和驾驶员的用户体验。走程的典型生命周期起于骑手挑出的走程,然后随着走程的进走而不息,直到走程终结且骑手到达最后方针地时才终结。Uber的中央走程数据以外格形态存储在Uber的可扩展数据存储Schemaless中。走程外中的单个走程条现在在走程的生命周期中能够会经历很众更新。在Uber行使Hudi之前,大型Apache Spark作业会按期将整个数据集重新写入HDFS,以获取上游在线外的插入、更新和删除,从而逆映出走程状态的转折。就背景而言,在2016岁始(在构建Hudi之前),一些最大的义务是行使1000个executors并处理超过20TB的数据,此过程不光效果矮下,而且难以扩展。公司的各个团队都倚赖迅速、实在的数据分析来挑供高质量的用户体验,为已足这些请求,吾们现在的解决方案无法扩展进走数据湖上的添量处理。行使快照和重新添载解决方案将数据移至HDFS时,这些矮效果的处理正在写到到一切数据管道,包括行使此原起数据的下游ETL,吾们能够望到这些题目只会随着周围的扩大而添剧。

    在异国其他可走的开源解决方案可供行使的情况下,吾们于2016岁暮为Uber构建并启动了Hudi,以构建可促进大周围迅速,郑重数据更新的事务性数据湖。Uber的第一代Hudi行使了写时复制外类型,该外类型每30分钟将作业处理速度挑高到20GB,I/O和写入放大缩短了100倍。到2017岁暮,Uber的一切原起数据外都采用了Hudi格式,运走着地球上最大的事务数据湖之一。

    图2. Hudi的写时复制功能使吾们能够实走文件级更新,从而大大挑高数据的稀奇度

    4. 改进Apache Hudi

    随着Uber数据处理和存储需求的添长,吾们开起遇到Hudi的写时复制功能的局限性,主要是必要不息挑高数据的处理速度和稀奇度,旅游定制即使行使Hudi"写时复制"功能,吾们的某些外收到的更新也松散在90%的文件中,从而导致必要重写数据湖中任何给定的大型外的数据,重写数据量大约为100TB。原由写时复制甚至为单个修改的记录重写整个文件,所以写复制功能导致较高的写放大和损坏的稀奇度,从而导致HDFS群集上不消要的I/O以及更快地消耗磁盘空间,此外,更众的数据外更新意味着更众的文件版本,以及HDFS文件数目激添,逆过来,这些需求导致HDFS Namenode节点担心详和较高的计算成本。

    为晓畅决这些日好添长的忧郁闷,吾们实现了第二栽外类型,即"读时相符并"。原由读时相符并始末动态相符并数据来行使近实时的数据,为避免查询端的计算成本,吾们必要相符理行使此模式。"读时相符并"安放模型包括三个自力的作业,其中包括一个吸收作业,包括由插入、更新和删除构成的新数据,一个次要的压缩作业,以异步手段主动地压缩短批最新分区的更新/删除内容,以及一个主要的压缩作业,该作业会缓慢安详地压缩大量旧分区中的更新/删除。这些作业中的每一个作业都以分别的频率运走,次要作业和挑取作业的运走频率比主要作业要高,以确保其最新分区中的数据以列格式迅速可用。始末如许的安放模型,吾们能够以列式为数千个查询挑供稀奇数据,并将吾们的查询侧相符并成本限定在近来的分区上。行使读时相符并,吾们能够解决上面挑到的一切三个题目,并且Hudi外几乎不受任何对数据湖的更新或删除的影响。现在,在Uber,吾们会按照分别场景同时行使Apache Hudi的写时复制和读时相符并功能。

    图3. Uber的Apache Hudi团队开发了一栽数据压缩策略,用于读时相符并外,以便屡次将近来的分区转化为列式存储,从而缩短了查询端的计算成本

    有了Hudi,Uber每天向超过150PB数据湖中插入超过5,000亿条记录,每天行使30,000众个core,超过10,000众个外和数千个数据管道,Hudi每周在吾们的各栽服务中挑供超过100万个查询。

    5. Apache Hudi经验总结

    Uber在2017年开源了Hudi,为其他人带来了该解决方案的益处,该解决方案可大周围挑取和管理数据存储,从而将流处理引入大数据。当Hudi卒业于Apache柔件基金会下的顶级项现在时,Uber的大数据团队总结了促使吾们构建Hudi的各栽考虑因素,包括:

    倘若异国卓异的标准化和原语,数据湖将很快成为无法行使的"数据沼泽"。如许的沼泽不光必要消耗大量时间和资源来调解、清算和修复外,而且还迫使各个服务一切者构建复杂的算法来进走调整、改组和营业,从而给技术栈带来不消要的复杂性。

    如上所述,Hudi始末无缝地吸收和管理分布式文件体系上的大型分析数据集来协助用户控制其数据湖,从而弥补了这些差距。竖立数据湖是一个众方面的题目,必要在数据标准化、存储技术、文件管理实践,数据吸收与数据查询之间折中性能等方面进走取弃。在吾们竖立Hudi时与大数据社区的其他成员交谈时,吾们晓畅到这些题目在很众工程结构中远大存在。吾们期待在以前的几年中,开源和与Apache社区的配相符,在Hudi基础上发展能够使其他人在分别走业对大数据运营有更深入的晓畅。在Uber之外,Apache Hudi已在众家公司用于生产,其中包括阿里云,腾讯云,AWS、Udemy等。

    6. 异日计划

    图4. Apache Hudi场景包括数据分析和基础架构运走状况监视

    Hudi始末对数据集强制schema,协助用户构建更富强、更稀奇的数据湖,从而挑供高质量的见解。

    在Uber,拥有全球最大的事务数据湖之一为吾们挑供了各栽Apache Hudi用例场景的机会,原由以这栽周围解决题目并挑高效果能够会产生庞大影响,所以有直接的动机促使吾们更添深入。在Uber,吾们已经行使了先辈的Hudi原语,如添量拉取来协助竖立链式添量流水线,从而缩短了作业的计算空间,而这些作业原本会实走大型扫描和写入。吾们按照特定的用例场景和请求调整读时相符并外的压缩策略。自从吾们将Hudi施舍给Apache基金会以来,近来几个月,Uber贡献了一些功能,例如嵌入式时间轴服务以实现高效的文件体系访问,删除重命名以声援云友谊的安放并挑高添量拉取性能。

    在接下来的几个月中,Uber计划为Apache Hudi社区贡献更众新功能。其中一些功能可始末优化计算行使量以及改善数据行使程序的性能来协助降矮成本,吾们还将更深入地钻研如何按照访问模式和数据行使程序需求来改善存储管理和查询性能。

    相关吾们如何计划实现这些现在标的更众新闻,您能够浏览一些RFC, 包括声援列索引和O(1)查询计划的智能元数据,将Parquet外高效引导到Hudi,记录级别索引声援更迅速插入,这些RFC由Uber的Hudi团队向Apache社区挑出。

    随着Apache Hudi卒业成为Apache顶级项现在,吾们很起劲为该项现在壮志凌云的路线图做出贡献。Hudi使Uber和其他公司能够行使盛开源文件格式,在异日表明其数据湖的速度,郑重性和营业能力,从而清除了很众大数据挑衅,并构建了雄厚而可移植的数据行使程序。

    原标题:吃鸡蛋不能喝豆浆?其实真正要注意的是这些,你一直没重视

    原标题:《荒野乱斗》瑟奇怎么玩

    原标题:民银智库《每周金融观察》(2020.6.29-2020.7.5)

    原标题:GMOD游戏 汤姆猫竟然帮杰瑞鼠弄出翅膀

        几个月前,还有分析师警告国际油价将涨到100美元,可短短一个月,油价就从四年高位跌入熊市,美油甚至创下35年多来最长连跌期。