EMR 的存储解决方案 | 学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 快速学习 EMR 的存储解决方案

开发者学堂课程【E-MapReduce 入门课程EMR 的存储解决方案】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/759/detail/13335


EMR 的存储解决方案

 

从大数据和大数据的场景分析来看,我们的主要目的是分析和处理海量的数据,所有的计算和目的首先要解决的问题是如何存储海量的数据。这个主题是 EMR 提供的存储方案的选择,可以怎样指定适合自己的存储方案。

 

内容介绍

一、EMR 提供的存储选择概述

二、JindoFS 玩转云原生存储

三、JindoFS 使用实战

四、云上云下互联

 

一、EMR 提供的存储选择概述

1. 传统大数据存储解决方案——HDFS

图片1.png

EMR集群创建出来之后都会自带一个 HDFS 的部署配置。比如建立AB两个集群,集群各自都会有 HDFS,它们上层的计算引擎可以去访问自己集群的 HDFS,也可以如图所示,集群B跨集群访问集群A的 HDFS。

2.云原生存储解决方案

 

图片2.png

相对于传统的 HDFS 解决方案来说,最近几年大数据领域存储上的趋势逐渐演化成计算存储分离的架构,原有HDFS的存储架构特点是计算跟着存储走,计算和存储是一体的,在同一个集群中一起维护。现在通过把计算和存储分离开的做法,实现计算和存储的分离的架构。最常见的是利用S3做计算存储分离的架构。

在EMR中也非常好的支持了计算存储分离的架构,将整个方案或产品代号称为 JindoFS,JindoFS 的本质是是主要基于阿里云上 OSS 的对象存储的产品,在 EMR 中实现了计算存储分离的架构。计算存储分离的趋势近年来非常明显,越来越多的用户会选择计算存储分离的架构而不是选择 HDFS,也有不少 HDFS 老用户近年来也逐渐的希望做一些存储架构的升级,希望把 HDFS 的存储架构调整为计算存储分离的架构。趋势背后的原因可总结为

图片3.png

 

从容量上来看 HDFS 一个明显的特点是容量受集群规模的限制,可以从两方面考虑,一个是数据容量,HDFS 的数据是通过分布式的进行存储管理的,所以它的存储容量受制于磁盘的总量。一个是原数据,HDFS 的 namenote 的实现受制于内存使用,所以原数据无法支撑非常大的量级,如果原数据达到一定程度,也不得不采用一些手段实现部署配置。相对于 HDFS 来说,计算存储分离的架构可以提供一个近乎海量的数据。

在运维成本方面,HDFS 的运维相对比较复杂,计算存储分离相当于将运维交给了更专业的团队,也就是阿里云的OSS团队,用户层面就无需再为运维所烦恼,OSS也能提供一个更为强大、安全、可靠的运维保证。

对于集群弹性问题,HDFS 利用备份的方式保存数据,所以整个数据集存储在本地的节点上,这些存储节点较难做灵活的伸缩,数据有多少就需要长期持有这些节点。随着数据量增大,可能还需要相应的扩容。相对来说 JindoFS 方案的好处是由于存储不再是由一个计算集群管理,所以计算集群的弹性非常好,可以根据实际的计算的需求去伸缩集群。

关于成本上的考量,HDFS 通过本地盘的存储,存储成本会比计算存储分离架构高不少。

这四点的差异导致越来越多的客户希望使用计算存储分离的架构。

 

二、JindoFS 玩转云原生存储

1. 什么是JindoFS

图片4.png

 

JindoFS 处于中间层的状态,最上层是计算引擎,最底层是对象存储

OSS ,也就是计算存储分离里的存储核心。蓝色部分为通过网络,

蓝色部分以上为集群内部。集群内部需要通过网络来访问远端 OSS

存储上的数据。

JindoFS处于计算层和远端 OSS 之间,起到连接和加速的作用。

对于 JindoFS 定位可以从三个方面来看 JindoFS 提供的能力。

·适配对象存储OSS,提供Hadoop

Compatible FileSystem (HCFS) 对象存储的语义是无法直接运用于大数据的生态系统的,大数据的生态系统更多遵循 HDFS 定义的接口。JindoFS 的作用是将 OSS 中对象存储的语义比较高效完善的封装成兼容 Hadoop 的 Compatible FileSystem 的语义。

·提供缓存加速能力(Cache模式)

在存储计算分离的架构中,所有的计算引擎读取数据都要通过网络读取远端 OSS 的数据,整个读写IO受制于网络瓶颈,JindoFS 就在中间利用本地存储资源来缓存OSS上比较热的数据,缓存到本地节点上,起到缓存加速的能力。

·结合对象存储深度定制的高性能Block模式

提供更高性能的存储访问方案,之后会有详细介绍。

2. 基础使用

JindoFS 提供的基本使用是对 OSS 对象存储的封装,实现了 connect 的作用,又不仅仅是 connect 。对于适配 OSS 对象存储方面 JindoFS 做了很多优化。

·海量规模优化支持,特别针对大目录操作稳定、高效

·文件语义适配完善

·高级特性: Job Committer、Flink file sink connector

实现了无需 rename 的高效的 Job Committer,另外也利用了 OSS 的接口,对 Flink 的应用场景实现了 file sink connector,实现了 Flink 上的exactly once 的语义。在适配 OSS 方面可以对标 S3的实现。S3是在业界比较领先的产品,算是标杆,JindoFS 在基础使用上对标的是 S3 在大数据上的使用,S3 能做到的功能,JindoFS 也能做的非常好,甚至在一些大规模的情况下可以做到比 S3 更好的优化。

3. 缓存模式使用

相对于比较小的用户或集群规模小的用户,使用基础配置,可以非常好的适配 OSS 上的存储数据。

这种基础的使用方式可能会面临瓶颈,比如受制于网络的带宽,当集群规模比较大或集群数量比较多时,由于所有的数据都是存储在 OSS 的远端存储上的,整个网络吞吐随着集群规模增长,对 IO 的吞吐需求也会水涨船高。会有一个界限当规模达到一定程度之后,网络的带宽就成为整个作业的瓶颈因素。这种情况就推荐使用 JindoFS 这样缓存的方式来减缓网络带宽带来的瓶颈,通过本地已有的存储资源来弥补网络带宽的不足。JindoFS 提供的进阶的缓存使用模式,提供开关,打开开关就可以利用本地的存储资源加速 OSS 上的热数据。

关于缓存使用上,本地集群所拥有的存储资源,比如本地磁盘,相比于 OSS 后端来说容量非常有限,所以缓存模式利用有限的本地磁盘去缓存最热的 OSS 后端上的数据,从而达到最优的缓存加速作用。

图片5.png

·打开缓存开关,可利用本地存储资源缓存加速OSS上的数据

·LRU策略自动清理冷数据块

·异步触发清理,不影响读写

关于缓存的管理,JindoFS 的缓存服务会根据 ILRU 的策略自动清理集群上的冷数据,把空间留给热数据,这是 JindoFS 服务自动的,不需要用户操心,整个过程也不会影响读写流程。

打开缓存开关,利用缓存模式来使用 JindoFS 之后对于作业来说也没有任何感知,用户只需要在页面上打开缓存开关,它所带来的好处是可以利用本地的磁盘带宽来加速数据的读取,从而可以缓解网络带宽带来的 IO 读取的瓶颈。

4. 块存储模式使用

·块存储模式(Block)适用于高性能数据处理场景

·元数据由 NamespaceService 管理,文件数据以数据块形式存储在OSS 上,本地对数据块进行缓存

·性能和体验上对标 HDF图片6.png

这种使用模式相对于纯粹缓存的方式来说,结合了 OSS 做了深度定制,文献不再存放在 OSS 上的一个对象,而是使用了Namespace的服务,自己去管理数据的原信息,OSS 只作为存储介质,把数据分块放在对应的 OSS 的目录底下,原数据是通过自己的原数据服务进行管理的。

它的原数据不是 OSS上的对象,而是自己维护的原信息。好处是知道对象存储的原数据访问,某些文件系统的原数据操作的语义往往还涉及到多次 API 的调用,这就导致了在原数据访问上纯粹的Cash模式有可能导致性能问题。通过 Block 模式提供的自己管理的原数据,提供了高效的数据访问的实现。在原数据访问性能上,很多场景下是超过 HDFS 的。

Block 模式对语义的支持。像 OSS 这样对象存储,很难完全支持 HDFS 的所有语义。Block提供更加完善的语义的支持,从而可以使Block 模式完全替代 HDFS 的使用场景。好处是Block 模式的架构是计算存储分离的架构,数据由 OSS 后端存储,本地只用来缓存加速,原数据服务虽然需要依赖于本地 Namespace 的服务,但是原数据的信息也同步在 OTS上,也做到了原数据的计算存储分离,所以整个 Block 模式的架构可以完全替代 HDFS ,而且比 HDFS 性能更优,比 HDFS 的灵活性更强,真正做到计算存储分离的架构,实现更优的解决方案。

5. 高级特性

·FUSE支持

JindoFS 支持 FUSE 的文件接口,FUSE 的常见使用场景是机器学习场景,传统的是直接读取本地的文件系统,FUSE 的好处是把分布式的文件系统挂载到 FUSE 目录下,类似于像读取本地文件系统一样操作,对于机器信息的场景经常会使用 FUSE 接口,实现非常运用的存储解决方案。

·权限控制

实现用户对权限安全方面需求的满足。

·分层存储( coming soon)

像 OSS 的对象存储除了提供海量的存储容量之外,也提供了存储界限的选择。JindoFS 提供文件分层的功能,对文件或目录能够透出存储策略的字段,也提供了存储策略转换的工具,用户可以根据实际情况把热数据预加载到本地的缓存中,提供更好的冷热数据的管理,加速后续的计算。把冷数据通过更低成本的方式去存储,从而降低用户整体的存储成本,达到较优的存储方式。

 

三、JindoFS 使用实战

1.使用实践

用户使用 EMR 或 JindoFS 很多情况下数据不是从零开始的,用户往往从线下或自建的集群迁移到 EMR上。这就涉及到怎样把集群数据搬运到 EMR 上或 JindoFS 这样的存储系统中。我们提供了 Jindo DistCp 的工具,针对 JindoFS 做了定制优化,是非常高性能的 DistCp 数据迁移工具。这个工具可以在 EMR 中使用,也可以下载编译项目,在自己的集群中运行 Jindo DistCp ,可以实现非常高效的数据迁移。完成数据迁移后,需要利用 JindoFS 存储后端进行作业的运行和数据的分析统计。

图片7.png

对于自建的 EMR 集群来说都是自带 JindoFS 的文件系统。

组件中 SmartData 服务里是负责数据缓存块管理和数据原信息管理的服务。

图片8.png

·存量数据迁移,Jindo DistCp

登陆 EMR 集群,假设在本地的 JindoFS 集群上有存量数据,第一步利用 Jindo DistCp 工具模拟的存量集群上的数据传到 JindoFS 上。图片9.png

图片10.png

图片11.png

运行完成

图片12.png

完成之后就可以在 OSS  对应的目录下看到这个文件。

图片13.png

data.dir 点进去可以看到相应的数据,数据从存量的 HDFS 集群中导到了 OSS 上面。这样就完成了第一步数据上云。

图片15.png图片16.png

简单使用示例

用hive作业来做演示

图片17.png

先建一个Database

图片18.png图片19.png

 Database 下建一个表

图片20.png

模拟在表里插入一条数据。最终数据会插入到 OSS 的路径下。

图片21.png

OSS后端数据。table1 里面对应刚才新插入的数据生成的表格文件,这样就非常方便地通过 location 的设置把对应的数据设到了 OSS 的 location 上面。

图片22.png

 

图片23.png

图片24.png

 

·缓存相关配置示例

图片25.png

在 SmartData 服务下面都是客户端配置,Data-cache enable 的配置默认为零,表示关闭,在集群规模较大或遇到瓶颈的情况下可以打开缓存开关。Client 是客户端配置,不需要重启任何服务的,后续的读写已经打开了缓存开关,在这种情况下第一次读文件的时候会将 OSS 后端的数据块下载到本地的缓存中。

关于缓存的其他高级配置可以在 storage 配置页里找到,主要涉及到缓存相关的配置是 watermark-low 和 watermark-high。

图片27.pngwatermark-high 是指所配置磁盘的使用的上水位,后面是比例的设置,默认设成0.4,表示最多利用40%的磁盘去做缓存。watermark-low 是指触发磁盘水位清理时会把磁盘上的缓存数据清理到下水位。默认是20%的磁盘总容量。用户可以在使用过程中根据自己的实际情况配相应配额的磁盘水位来做数据缓存。

·Block 模式使用演示

Cache 模式的使用无需做过多的配置,直接通过 DCP 完成数据的导入,最多配置缓存开关来打开或者关闭对应的缓存功能。Block 模式是通过本地的 namespace 去管理数据,数据是以数据块的形式放在 OSS 后端上,Block 模式的使用需要一些相关的配置。可以在帮助文档里看到详细说明。

 

主要关于 Block 的使用在 namespace 标签,注册一个 namespace。

图片28.png

注册一个名为 text 的namespace。

图片29.png

另外加两个配置

图片30.png

一个是 mode,一个是 oss.uri。

Mode对应 Block 模式,oss.uri 指 Block 模式因为数据块是放在 OSS 后端上的,要配置一个 OSS 的地址去作为数据缓存块的放置地址。

由于这是服务端的配置,需要重启 Namespace 的 Service。

图片31.png

重启之后 text 的 Namespace 就可以使用了。

登陆集群,jfs Block 模式前缀是 jfs 开头的,刚才配置的

namespace 是 text,底下什么都没有,是一个新建出来的

namespace,然后 put 一个文献上去,把 hello 的测试文件放到

下面。但是在 OSS 上并不是 hello的对象,OSS 只是作为存储后

端来放置数据块,所有的原数据信息都是通过自己的 namespace

服务进行管理的。

图片28.png


前三部分主要内容是如何在 EMR 集群中利用计算存储分离架构使用 JindoFS 的存储方案来实现数据上云。

 

四、云上云下互联

1.JindoFS加速云下存储

JindoFS HDFS Cache模式

图片31.png

这是一种类似于云上云下打通的场景,比如用户原有云下自建或线下的存储集群,这些集群多数都是用 HDFS 来做大数据存储,随着业务的扩展,相对资源不够,这种情况下线下扩容比较复杂,需要采购机器,机房扩容来增加计算能力。

对于多出来的资源可以选择上云,利用云上的弹性对动态资源进行扩容和缩容,来满足不同时间段的业务需求。

有一种情况是计算集群在云上,实际数据在云下机房或用户自建的 HDFS 集群中,此时云上的集群需要分析云下 HDFS 存储上的数据,传统做法是通过拉专线或网络打通的方式访问 HDFS,带来的问题是由于 HDFS 并不是本地集群的 HDFS,可能是跨远端网络的或跨专线的远端集群,这种分离情况下,JindoFS 可以对于远端的 HDFS 集群进行压缩,利用计算集群里的存储资源缓存线下的 HDFS 集群上的数据,利用本地资源或云上资源去减少通过专线或外部网络访问远端 HDFS 集群的数据拉取的过程。

 

 

 

 

 

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
存储 SQL 分布式计算
阿里云全托管flink-vvp平台hudi connector实践(基于emr集群oss-hdfs存储)
阿里云全托管flink-vvp平台hudi sink connector实践,本文数据湖hudi基于阿里云E-MapReduce产品,以云对象存储oss-hdfs作为存储
|
SQL 存储 DataWorks
视频-《 EMR 数据开发》|学习笔记(四)
快速学习视频-《 EMR 数据开发》
236 0
视频-《 EMR 数据开发》|学习笔记(四)
|
弹性计算 资源调度 运维
视频-《 EMR 集群运维与排障》|学习笔记(四)
快速学习视频-《 EMR 集群运维与排障》
204 0
视频-《 EMR 集群运维与排障》|学习笔记(四)
|
存储 SQL 弹性计算
走进开源大数据平台 EMR | 学习笔记
快速学习走进开源大数据平台 EMR
走进开源大数据平台 EMR | 学习笔记
|
存储 消息中间件 弹性计算
EMR 开通与演示 | 学习笔记
快速学习 EMR 开通与演示
EMR  开通与演示 | 学习笔记
|
存储 SQL 机器学习/深度学习
走进开源大数据平台 EMR | 学习笔记
快速学习走进开源大数据平台 EMR,介绍了走进开源大数据平台 EMR 系统机制, 以及在实际应用过程中如何使用。
走进开源大数据平台 EMR | 学习笔记
|
存储 SQL 弹性计算
EMR 开通与演示 | 学习笔记
快速学习 EMR 开通与演示,介绍了 EMR 开通与演示系统机制, 以及在实际应用过程中如何使用。
EMR 开通与演示 | 学习笔记
|
存储 缓存 分布式计算
EMR 的存储解决方案 | 学习笔记
快速学习 EMR 的存储解决方案,介绍了 EMR 的存储解决方案系统机制, 以及在实际应用过程中如何使用。
EMR 的存储解决方案 | 学习笔记
|
SQL 存储 分布式计算
EMR 产品使用入门 | 学习笔记
快速学习 EMR 产品使用入门
|
4月前
|
分布式计算 大数据 MaxCompute
EMR Remote Shuffle Service实践问题之阿里云RSS的开源计划内容如何解决
EMR Remote Shuffle Service实践问题之阿里云RSS的开源计划内容如何解决