阿里云:基于JindoFS+OSS构建高效数据湖

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:云栖号网络

小提示:您能找到这篇{阿里云:基于JindoFS+OSS构建高效数据湖}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的阿里云:基于JindoFS+OSS构建高效数据湖内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

< ">为什么要构建数据湖

< font-size: 16px;">大数据时代早期,Apache HDFS是构建具有海量存储能力数据仓库的首选方案。随着云计算、大数据、AI等技术的发展,所有云厂商都在不断完善自家的对象存储,来更好地适配Apache Hadoop/Spark大数据以及各种AI生态。由于对象存储有海量、安全、低成本、高可靠、易集成等优势,各种IoT设备、网站数据都把各种形式的原始文件存储在对象存储上,利用对象存储增强和拓展大数据AI也成为了业界共识,Apache Hadoop社区也推出了原生的对象存储“Ozone”。从HDFS到对象存储,从数据仓库到数据湖,把所有的数据都放在一个统一的存储中,也可以更加高效地进行分析和处理。

< font-size: 16px;">对于云上的客户来说,如何构建自己的数据湖,早期的技术选型非常重要,随着数据量的不断增加,后续进行架构升级和数据迁移的成本也会增加。在云上使用HDFS构建大规模存储系统,已经暴露出来不少问题。HDFS是Hadoop原生的存储系统,经过10年来的发展,HDFS已经成为大数据生态的存储标准,但我们也看到HDFS虽然不断优化,但是NameNode单点瓶颈,JVM瓶颈仍然影响着集群的扩展,从1 PB到100+PB,需要不断的进行调优、集群拆分来,HDFS可以支持到EB级别,但是投入很高的运维成本,来解决慢启动,心跳风暴,节点扩容、节点迁移,数据平衡等问题。

< font-size: 16px;">云原生的大数据存储方案,基于阿里云OSS构建数据湖是最合适的选择。OSS是阿里云上的对象存储服务,有着高性能、无限容量、高安全、高可用、在哪里可以营销低成本等优势,JindoFS针对大数据生态对OSS进行了适配,缓存加速,甚至提供专门的文件元数据服务,满足上云客户的各种分析计算需求。因此在阿里云上,JindoFS+OSS成为客户采取数据湖架构迁移上云的最佳实践。

< font-size: 16px;">JindoFS介绍

< font-size: 16px;">Jindo是阿里云基于Apache Spark/Apache Hadoop在云上定制的分布式计算和存储引擎。Jindo原是阿里云开源大数据团队的内部研发代号,取自筋斗(云)的谐音,Jindo在开源基础上做了大量优化和扩展,深度集成和连接了众多阿里云基础服务。



< font-size: 16px;">JindoFS是阿里云针对云上存储自研的大数据缓存加速服务,JindoFS的设计理念是云原生:弹性、高效、稳定和低成本。JindoFS完全兼容Hadoop文件系统接口,给客户带来更加灵活、高效的数据湖加速方案,完全兼容阿里云EMR中所有的计算服务和引擎:Spark、Flink、Hive、MapReduce、Presto、Impala等。JindoFS有两种使用模式,块存储模式(BLOCK)和缓存模式(CACHE)。下面我们介绍下如何在EMR中配置和使用JindoFS以及不同模式对应的场景。

< font-size: 16px;">JindoFS架构

< font-size: 16px;">JindoFS主要包含两个服务组件:元数据服务(NamespaceService)和存储服务(StorageService):

< font-size: 16px;">NamespaceService主要负责元数据管理以及管理StorageService。

< font-size: 16px;">StorageService主要负责管理节点的本地数据和OSS上的缓存数据。

< font-size: 16px;">下图是JindoFS架构图:元数据服务NamespaceService部署在独立的节点,对于生产环境推荐部署三台(Raft)来实现服务高可用;存储服务StorageService部署在集群的计算节点,管理节点上的闲置存储资源(本地盘/SSD/内存等),为JindoFS提供分布式缓存能力。

< font-size: 16px;">

< font-size: 16px;">JindoFS元数据服务

< font-size: 16px;">JindoFS的元数据服务叫JindoNamespaceService,内部基于K-V结构存储元数据,相对于传统的内存结构有着操作高效,易管理,易恢复等优势。

< font-size: 16px;">高效元数据操作。JindoFS NamespaceService基于内存+磁盘管理和存储元数据,但是性能上比使用内存的HDFS NameNode还要好,一方面是JindoFS使用C++开发,没有GC等问题,响应更快;另一方面是由于Namespace Service内部有更好的设计,比如文件元数据上更细粒度的锁,更高效的数据块副本管理机制。

< font-size: 16px;">秒级启动。有大规模HDFS集群维护经验的同学比较清楚,当HDFS元数据存储量过亿以后,NameNode启动初始化要先加载Fsimage,再合并edit log,然后等待全部DataNode上报Block,这一系列流程完成要花费一个小时甚至更长的时间,由于NameNode是双机高可用(Active/Standby),如果standby节点重启时active节点出现异常,或两台NameNode节点同时出现故障,HDFS将出现停服一小时以上的损失。JindoFS的元数据服务基于Raft实现高可用,支持2N+1的部署方式,允许同时挂掉N台;元数据服务(NamespaceService)在元数据内部存储上进行了设计和优化,进程启动后即可提供服务,可以做到了快速响应。由于NamespaceService近实时写入OTS的特点,元数据节点更换,甚至集群整体迁移也非常容易。

< font-size: 16px;">低资源消耗。HDFS NameNode采用内存形式来存储文件元数据。在一定规模下,这种做法性能上是比较不错的,但是这样的做法也使HDFS元数据的规模受限于节点的内存,经过推算,1亿文件HDFS文件大约需要分配60 GB Java Heap给NameNode,所以一台256 GB的机器最多可以管理4亿左右的元数据,同时还需要不断调优JVM GC。JindoFS的元数据采用Rocksdb存网络推广找客户储元数据,可以轻松支持到10亿规模,对于节点的内存需求也非常小,资源开销不到NameNode的十分之一。

< font-size: 16px;">JindoFS缓存服务

< font-size: 16px;">JindoFS的数据缓存服务叫JindoStorageService,本地StorageService主要提供高性能缓存加速,所以运维上可以基于这样的设定大大简化。

< font-size: 16px;">弹性运维。HDFS使用DataNode在存储节点上来管理节点存储,全部数据块都存储在节点的磁盘上,依靠DataNode定期检查和心跳把存储状态上报给NameNode,NameNode通过汇总和计算,动态地保证文件的数据块达到设定的副本数(一般3副本)。对于大规模集群(节点1000+),经常需要进行集群节点扩容,节点迁移,节点下线,节点数据平衡这样的操作,大量的数据块的副本计算增加了NameNode负载,同时,节点相关操作要等待NameNode内部的副本调度完成才能进行,通常一个存储节点的下线需要小时级别的等待才能完成。JindoFS使用StorageService来管理节点上的存储,由于JindoFS保证了数据在OSS上有一副本,所以本地的副本主要用来进行缓存加速。对于节点迁移、节点下线等场景,JindoFS无需复杂副本计算,通过快速的“标记”即可完成下线。

< font-size: 16px;">高性能存储。StorageService采用C++语言开发,在对接最新高性能存储硬件上也有着天然优势。StorageService的存储后端不仅可以同时对接SSD、本磁盘、OSS满足Hadoop/Spark大数据框架各种海量、高性能的存储访问需求,可以对接内存、AEP这样的高性能设备满足AI/机器学习的低延时、高吞吐的存储使用需求。

< font-size: 16px;">JindoFS适用场景

< font-size: 16px;">JindoFS的元数据存储在Master节点的NamespaceService(高可用部署)上,性能和体验上对标HDFS;Core节点的StorageService将一份数据块存储在OSS上,本地数据块可以随着节点资源进行快速的弹性伸缩。多集群之间也可以相互打通。

< font-size: 16px;">

< font-size: 16px;">为了支持数据湖多种使用场景,一套JindoFS部署同时提供两种OSS使用方式,存储模式(Block)和缓存模式(Cache)。

< font-size: 16px;">缓存模式。对于已经存在于OSS上的数据,可以使用缓存模式访问,正如“缓存”本身的含义,通过缓存的方式,在本地集群基于JindoFS的存储能力构建了一个分布式缓存服务,把远端数据缓存在本地集群,使远端数据“本地化”。使用上也沿用原来的路径访问,如oss://bucket1/file1,这种模式全量的文件都在OSS上面,可以做到集群级别的弹性使用。

< font-size: 16px;">存储模式。存储模式(Block)适用于高性能数据处理场景,元数据存储在NamespaceService(支持高可用部署)上,性能和体验上对标HDFS;StorageService将一份数据块存储在OSS上,本地数据块可以随着节点资源可以进行快速的弹性伸缩。基于JindoFS Block模式这样的特性,可以用作构建高性能数仓的核心存储,多个计算集群可以访问JindoFS主集群的数据。

< font-size: 16px;">JindoFS方案优势

< font-size: 16px;">基于JindoFS+OSS来构建数据湖相比于其他数据湖方案同时具有性能和成本优势。

< font-size: 16px;">性能上,JindoFS针对一些常用的场景和Benchmark进行了对比测试,如DFSIO、NNbench、TPCDS、Spark、Presto等,通过测试我们可以看到性能上,Block模式完全领先于HDFS,Cache模式完全领先于Hadoop社区的OSS SDK实现,由于篇幅的原因,后续我们会发布详细的测试报告。

< font-size: 16px;">成本上。成本是也是用户上云的重要考量,JindoFS的成本优势主要体现在运维成本和存储成本两方面。运维成本指的是集群日常维护,节点上下线、迁移等。如前面分析,当HDFS集群增长到一定规模时,比如10PB+,除了对HDFS进行专家级别调优外,还需要业务上的拆分规划,避免达到HDFS元数据上的瓶颈。同时,随着集群数据不断增长,一些节点和磁盘也会出现故障,需要进行节点下线和数据平衡,也给大集群的运维带来一定的复杂度。JindoFS可以使用OSS+OTS的存储模式,OSS上保留原始文件和数据块备份,对节点和磁盘出现的问题可以更好兼容;元数据(NamespaceService)采用C++开发加上工程打磨,相比NameNode+JVM在容量上和性能上也更有优势。

< font-size: 16px;">下面我们重点来看存储成本。存储成本指的是存放数据后产生的存储费用,使用OSS是按量付费的,相比基于本地盘创建的HDFS集群有更好的成本优势,下面来计算和对比一下二者成本:

< font-size: 16px;">基于HDFS+本地盘方案构建大数据存储:



< font-size: 16px;">由于本地盘机型为整体价格,需要如下进行换算,预估存储成本如下:

< font-size: 16px;">

< font-size: 16px;">考虑到实际使用HDFS会有3副本以及一定的预留空间,我们以HDFS 3副本、80%使用率进行成本计算:

< font-size: 16px;">

< font-size: 16px;">基于JindoFS加速方案构建数据湖:



< font-size: 16px;">

< font-size: 16px;">我们可以看到使用JindoFS加速方案构建数据湖,要节省25%的存储成本。同时OSS是按量计费,即计算存储分离,当计算和存储比例存在差异时,比如存储资源高速增长,计算资源增加较小时,成本优势会更加明显。

< font-size: 16px;">对OSS数据进行缓存加速,需要额外使用计算节点上部分磁盘空间,带来一定成本。这部分成本,一般取决于热数据或者要缓存数据的大小,跟要存储的数据总量关系不大。增加这部分成本,可以换取计算效率的提升和计算资源的节省,整体效果可以根据实际场景进行评估。

< font-size: 16px;">JindoFS生态

< font-size: 16px;">数据湖是开放的,需要对接各种计算引擎。目前JindoFS已经明确支持Spark、Flink、Hive、MapReduce、Presto和Impala组件。同时,JindoFS为了支持更好地使用数据湖,还提供JindoTable对结构化数据进行优化和查询加速;提供JindoDistCp来支持HDFS离线数据往OSS迁移;支持JindoFuse方便数据湖上加速机器学习训练。

阿里云:基于JindoFS+OSS构建高效数据湖

上一篇:将广告效果与Yandex.Metrica中的新成本和投资回报率
下一篇:一分钟快速搞懂速卖通金币抵扣活动


版权声明:以上主题为“阿里云:基于JindoFS+OSS构建高效数据湖"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    阿里云:基于JindoFS+OSS构建高效数据湖
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“阿里云:基于JindoFS+OSS构建高效数据湖”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通阿里云:基于JindoFS+OSS构建高效数据湖的相关事宜。

关键词:阿里云:基于JindoFS+OSS构建

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号