导语 | 云原生数据湖架构以低成本优势推动客户上云,同时云上客户得以低成本撬动更多结构化和非结构化数据的价值,是一场云厂商的自我革命。本文由腾讯大数据专家工程师于华丽在 Techo TVP开发者峰会「数据的冰与火之歌——从在线数据库技术,到海量数据分析技术」的《云原生数据湖新一代数据架构》演讲分享整理而成,为大家详尽介绍云原生数据湖的价值和背景,云原生数据湖架构原则和挑战,同时分析腾讯云数据湖产品,展望腾讯云数据湖解决方案。

点击可观看精彩演讲视频

一、云原生数据湖架构的价值

今天分四个阶段来为大家介绍,第一个阶段我们先看云原生数据湖到底是什么,主要是背景、价值和挑战;第二阶段会教大家怎么去构建一个云原生数据湖,这里面其实有很多技术上的挑战,需要大家有很丰富的公有云的背景甚至大数据的知识;所以基于这个背景,腾讯云为了让大家快速地去迁移到云原生数据湖的架构,有两个产品推出;最后是基于DLC和DLF两个产品,展望在腾讯云上,数据湖的整体解决方案到底是如何做的。

我个人对云原生的理解,包括在CNCF的一些定义上,它的核心叫做弹性应用,这两个词后面的数据湖更多的是海量廉价的存储,所以我对云原生整个数据湖的架构给了一个定义:充分结合云上的弹性计算和对象存储的优势,以及大数据前沿数据湖的一些技术,构建一个高性价比、高性能的大数据平台

为什么会诞生一种新的架构?它一定是在传统的或前一代的数据架构上有一些不能满足的问题。在今天的情况下大家对上云这件事已经比较认可,但怎么上云、怎么在云上做大数据架构,传统的做法是有一些缺陷的。传统做法简单来说是存算耦合且规模固定,它有这四大痛点:第一是成本高,体现在hdfs的规模和计算规模不匹配,因为大家越来越重视数据,所以海量数据的挖掘需要更好的存储。云主机本身成本会相对较高,hdfs维护成本高。第二是灵活性低,相当于它很难满足adhoc需求,以及backfill这种临时的、大量的计算需求,还有集群升级困难,迁移数据,都是非常大的工作量。第三是性能差,namenode的性能一直是痛点,比如小文件的性能,甚至做存算耦合之后,整个shuffle性能也是会受到磁盘影响。第四是可靠性,现在大家越来越重视数据的安全,多az设计,hdfs怎么利用多az存储去做ha,这其实都是很大的挑战。

在云上应对这些挑战会有哪些机遇?核心是两个点:一个是弹性计算,第二个是对象存储。弹性计算,第一个是我们能够削峰填谷地利用计算资源,不需要的时候及时释放,以及充分利用像spot这种低价的计算资源,相比传统的大数据、云原生数据湖能够达到3-5倍的成本优势。第二个点,对象存储,首先它得益于自己的EC编码以及SaaS形式,不需要预留存储、不需要专业人员去运维,它对比hdfs有接近5-10倍的成本优势,当然它也有很好的跨az云厂商的带宽支撑,解决了小文件甚至namenode性能的问题。当然它还有更多好的特性,比如生命周期的管理、冷冻数据更可靠,以至于数据成本甚至会比10倍更低。

云原生数据湖架构只是一种架构原理,它具体的实现多种多样,基于EMR我们可以做云原生数据湖,甚至基于Flink也可以做。大家如果今天自己去构建一个云原生数据湖,都有哪些事情要做?以及做的时候会有哪些挑战?

二、手把手构建云原生数据湖

如果要利用弹性计算降低成本,会面临一些挑战。如何快速地scale up,根据用户的诉求把你的集群快速扩容?你要优雅地scale down,因为大数据是有状态的,怎么让这个shuffe的状态减少scale down的时候对用户作业产生的影响?都是很重要的问题。像spot这种机器很便宜,但会随时被回收,这种情况下,怎么利用它而你的quarry不至于被回收机器打断,这里一定要做一些工作。刚刚说shuffe会阻碍弹性,大家解决问题的时候会发现真正要做到比较好的弹性,都要结合像k8s这种云原生的容器管理,这里面会有很多的背景知识,需要大家自己去掌握。

关于对象存储,它有它的好处,比如刚刚说的成本5-10倍的优势,以及它有自己很好的sla。但它其实也并不是那么美好:对象存储没有rename语义,会带来什么问题?比如ETL任务本身1个小时能完成,但没有rename语义,可能就需要5个小时。对象存储一般都是最终一致性的,这会带来数据质量的问题,任务会频繁失败。对象存储的list性能一般都不够好,当然这涉及到对象存储的整个的设计,因为它是一个网络存储,失去了传统做大数据用hdfs locality性能的优势,就会导致计算变得更慢。

结合前面两个问题,架构下一步要做的事情是做很多的性能补偿。比如我们要做一些数据的缓存,因为本身是一个网络的存储对象存储,本地如果有一些很小的缓存能够满足大量的查询需求,肯定对性能上会有很大的提升。我们在建模数据上一定有更好的排布,不能像传统一样只把数据摆在那儿,其他的数仓都会做一些类似于稀疏索引,把这个数据做更好的排布之后,性能才能得到更好的提升,list性能、committer算法肯定也要去管理。

三、腾讯云原生数据湖产品:

数据湖计算+数据湖构建

要做一个云原生数据湖架构,这一系列问题大家都会面临,按照我自己的经验,做一个比较初步的、粗浅的云原生数据湖,大概需要20个人的团队做两年时间,整体来说构建成本还是很高的。基于云原生数据湖这么好,但是它又这么难构建,腾讯云数据湖推出了两款大数据数据湖的产品,一个是数据湖计算DLC,已经在公测阶段。另一个是数据湖构建DLF,在6月份左右会推出。DLC的产品定位更多聚焦于分析、联邦计算,当然我们也在迭代像数仓Spark的建设、构建服务。DLF更多是统一的元数据管理,高效的数据入湖。

简单介绍一下DLC和DLF数据湖的统一架构,它没有区分两个产品,一个是产品形态,我们的后端其实是一套架构,分为三个主要的核心部分,第一个是基于容器服务的统一计算,容器服务就是腾讯云的k8s,有标准统一的SQL入口,有多引擎的支持,像Presto、Spark、Hive、腾讯TEG的supersql引擎,以及联邦分析的功能。第二块是容纳海量元数据的统一元数据服务,当然也是基于社区的Hive MetaStore扩展,但因为要支持海量的租户,所以它不会像开源的Hive MetaStore只能支持几个亿的元数据,而是海量的。最后很重要的一个部分是基于对象存储,数据湖Table Format的数据湖存储,这是对象存储很重要的一部分。基于这三个架构,弹性在统一计算里解决,存储问题在数据湖存储解决,至于统一元数据,这个问题的核心是首先要有元数据,我们会展望腾讯云上所有的大数据产品怎么合力,之后会有统一元数据的设计。

技术上今天就稍微展开讲一个点。腾讯云原生数据湖相对比较核心的一个技术是iceberg,iceberg的诞生经历了十年之久,2008年开始上云,当然它没有提出“云原生数据湖架构”这个名词,但很早就基于S3做存储,基于EMR的弹性做它的弹性计算。Iceberg核心到底在解决什么问题?一言以蔽之,它就是为了解决在对象存储方面刚刚我提出的那些问题。首先,对象存储是没有rename语义的,大数据所有的任务在commit的时候都需要先写一个temporary目录,再把它rename出来,最后是commit,这会导致S3上的任务或者对象存储上的任务时间成倍。这个事情他们也做了很多年:刚开始前几年会提出比如commit v1有两次rename,v2就只有一次rename,少了一次rename也会多一些风险。还做过像directoutput的,一次rename也没有,这个问题就更大。过了十年最终提出iceberg就是为了解决这个问题,怎么解决?不需要rename,通过表操作的事务性来解决rename的问题。

List性能差是第二个大问题,比如要提一个新的查询任务,你会发现还没有开始捞数据但任务已经跑了十几分钟,iceberg本身记了list对象存储上的文件列表,所以也不需要COS再从元数据存储里一条一条反馈回来,它本身就是一个文件,所以这个问题自然而然就解决了。

存算分离,失去Locality优势的问题,iceberg其实可以引入一种稀疏索引,构建起来稍微有点复杂,可以利用每个列的值,加上建模的时候做一些事情,以及做谓词下推,一起来完成稀疏索引的排列,性能会非常好。

对象存储最终一致性,简单来说是你写进去一个文件马上去读,读不到。当然这个设计肯定是因为对象存储对本身定位的一些设计,包括要跨az去复制,所以它都是最终一致性的。最近几年云厂商也有一些尝试,都会做对象存储强一致的升级。

Iceberg里因为没有了rename的操作,最终一致性几乎影响不大,有commit的时候写一个文件可能马上就要rename出来,马上rename的时候是读不到的。以及iceberg文件有列表,所以也不会出现list少文件的情况,写10个文件,去读的时候只读出9个,这其实是很严重的事情,但很少能发现。有了iceberg之后,因为存了列表,10个文件就是10个,不会再少。腾讯在hadoop on cos上面还做了一点点优化,如果是hadoop on cos来的请求,我们会打一个单独的,这样这个请求就不会再走缓存,而直接去读强一致的存储。

四、数据湖解决方案

提了传统的不足,我们总结一下现在腾讯云大数据云原生数据湖产品的优势。第一是成本低,这当然是很吸引人的地方,一个是极致弹性计算,有3-5倍的成本优势;另一个是对象存储5-10倍,成本低。第二是性能高,对象存储解决一些小文件的问题,以及缓存加速、稀疏索引、shuffle性能、commit性能,性能高。第三是免运维,DLC和DLF都是用户看不到机器的Serverless形态,只要提SQL、Spark、大数据计算任务就可以,这样减少了很多的运维负担。最后一个点是统一和开放,统一是统一的数据湖存储,不光是DLC、DLF可以用这个数据,EMR、Flink也可以用。统一的数据能给大家带来很多好处,比如成本的下降以及一致性维护的工作也会更少,包括统一元数据是一样的。开放体现在两个点上,叫做联邦分析,我们不需要做入湖,能对TP的一些数据做快速的分析,开放的第二个点更多的是数据湖解决方案。

数据湖解决方案核心的架构理念是SSOT,只有一份数据来解决所有问题。这个数据首先是COS上的数据,对象存储上以COS为数据湖存储的数据,大家都可以用,不管是EMR、DLC还是DLF。第二个是DLF统一的元数据也是一份数据,不管是EMR、DLC、DLF。这两个核心的点,加上以容器服务为云原生资源调度的架构,我们满足了数仓建模、数据分析甚至机器学习的整个数据湖的解决方案。

讲师简介

于华丽

腾讯大数据专家工程师

腾讯大数据专家工程师,腾讯云原生数据湖内核研发负责人,负责腾讯云原生数据湖内核架构研发。毕业于复旦大学数学系,有着丰富的公有云大数据经验,打造业界领先的云原生数据湖平台,在数据湖存储、Severless计算、统一元数据方面有丰富落地经验。

点击观看峰会的精彩总结视频????

关注云加社区,回复关键词:“数据”,可获取峰会当天全程回顾视频链接

6月5日,Techo TVP 开发者峰会 ServerlessDays China 2021,即将重磅来袭!

扫码立即参会赢好礼????

听说,难于上青天的云原生数据湖能开箱即用了?相关推荐

  1. 的数据湖_一文读懂云原生数据湖体系

    导读:如何基于阿里云 OSS .JindoFS 和数据湖构建(Data Lake Formation,DLF)等基础服务,同时结合阿里云上丰富的计算引擎,打造一个全新云原生数据湖体系? 作者 | 吴威 ...

  2. 云原生数据湖分析DLA 2020年年度总结

    简介:主要讲述阿里云数据湖分析DLA 2020年的进展~ 一.概述 2020年黑天鹅事件不断出现,疫情给人们的生活也带来了改变.在后疫情时代,伴随着云原生技术的发展,企业寻求更加敏捷.更加灵活的数据分 ...

  3. 如何用好云原生数据湖?

    简介:数据湖可以很好地帮助企业应对当前数据场景越来越多.数据结构越来越复杂.数据处理需求越来越多样化的问题.阿里云从2018年起就开始布局数据湖,推出了云原生数据湖分析Data Lake Analyt ...

  4. StarLake:汇量科技云原生数据湖的探索和实践

    简介: 快速了解汇量科技在云原生数据湖领域的探索和实践,详解 StarLake 的架构及业务应用案例. 作者:陈绪(汇量科技资深算法架构师,EnginePlus 2.0 产品负责人) 内容框架: 互联 ...

  5. 深度 | 面向云原生数据湖的元数据管理技术解析

    简介: 作者:沐远.明惠 背景 数据湖当前在国内外是比较热的方案,MarketsandMarkets市场调研显示预计数据湖市场规模在2024年会从2019年的79亿美金增长到201亿美金.一些企业已经 ...

  6. 云原生数据湖以存储、计算、数据管理等能力通过信通院评测认证

    又一项大能力-云原生数据湖获得信通院认证啦! 近日,中国信息通信研究院 (以下简称"信通院") 正式公布了第十四批"大数据产品能力评测"结果,腾讯云云原生数据湖 ...

  7. 「星火计划沙龙视频」云原生数据湖专场

    7月15日,腾讯大数据星火计划技术沙龙第9期<腾讯大数据云产品--云原生数据湖专场>于线上直播.本次沙龙围绕云原生数据湖架构的背景价值展开,详细介绍了腾讯云原生数据湖解决方案,为大家解读了 ...

  8. 一文读懂云原生数据湖体系

    凌云时刻 · 极鲜速递 导读:如何基于阿里云 OSS .JindoFS 和数据湖构建(Data Lake Formation,DLF)等基础服务,同时结合阿里云上丰富的计算引擎,打造一个全新云原生数据 ...

  9. 基于华为云原生数据湖MRS HetuEgine的数据虚拟化实践

    [摘要] 大数据时代的技术特点导致一个企业的数据分散存储在不同组件甚至不同地域的不同组件之中,为企业数据的高效使用带来挑战.数据虚拟化技术使应用在不关心数据源的数据格式及物理存储位置的情况下以一种统一 ...

最新文章

  1. B计划 第四周(开学第一周)
  2. Windows下的socket演示程序
  3. 深度学习入门之PyTorch学习笔记:深度学习介绍
  4. C#sql语句如何使用占位符
  5. 秘罗地伤痕 -- 暂存小说草稿
  6. anaconda moviepy_Anaconda和PyCharm的详细安装步骤~小白专用,手把手教学
  7. 一起谈.NET技术,HubbleDotNet 和 Lucene.Net 匹配相关度的比较
  8. mysql复杂条件判断_MySQL复杂where条件分析
  9. 【Guava】Guava Cache的refresh和expire刷新机制
  10. 量江湖获数千万元B轮融资,提出人工智能ASM投放解决方案
  11. jni数组使用(二)
  12. 630显卡驱动安装win7_Centos7 显卡驱动安装教程
  13. git学习笔记-(11-git存储)
  14. 第二课 了解编程环境
  15. MySQL管理工具-SQLyog 9.63的使用详解,带截图
  16. Java性能优化的50个细节(珍藏版)
  17. acs cisco 查看log_Cisco ASA 5510 防火墙 配置笔记
  18. NoteExpress中遇到的坑
  19. [NOI2010] 航空管制
  20. C语言 三子棋 游戏

热门文章

  1. 主图顶底分型自动提示
  2. linux查看可执行文件的编译器版本
  3. 分析解决微信拍照上传图片闪退,重启问题
  4. STS4没有spring
  5. 匹配中英文逗号将逗号分割为数组
  6. WPS表格查找替换技巧:让你的工作效率翻倍
  7. VS2019 MFC CreateFontW 创建字体函数详细解读
  8. 2023年全国最新保安员精选真题及答案7
  9. Android Bitmap详解
  10. Spark开发性能调优