【Azure Data Platform】Azure Data Lake(1)——简介

本文属于【Azure Data Platform】系列。
接上文:【Azure Data Platform】SQL DW 备份策略

前言

在当前工作中,频繁且广泛使用Azure 的Data Lake服务,毕竟云环境下也要存储,所以几乎所有的数据相关服务,都或多或少涉及了Data Lake的使用。基于最近的学习,有了一些新的认识,在这里记录一下。

数据不管在云上还是本地,都需要存储,大数据带来的首要压力就是数据存储,随着数据的种类和体量越来越大,传统的存储不仅费用昂贵,甚至你愿意付钱也不一定够用。夸张点说,很可能光存储费就可以让一家公司倒闭了。

今时今日系统上云的其中一个常见理由就是希望通过云提供的低廉的无限量的存储服务来解决大数据存储问题。

Azure Data Lake

先了解一个术语:数据湖(Azure Data Lake),它是一个存储库,它可以存储大量的结构化、半结构化和/或非结构化存储格式的原始数据。这与SQL DW的结构化环境不同。虽然数据湖可以作为数据仓库的上游,但实际上,在专业环境中更多是用来做单独的分析和探索。数据科学家、BI 开发人员和分析师可以深入研究任何临时探索和分析。
接下来要搞清楚的是ADLS, Blob Storage, ADLS gen1, gen2 这些概念。

ADLS, Blob Storage, ADLS Gen1, Gen2

经常听到几个词:ADLS, blob storage, data lake, ADLS gen1, gen2 。 但是如何精确描述它们和选择它们,是我其中一个困惑的地方。特别是在某些功能开发时,不同的种类使用的语法也会不同。当然,费用也不同。

Azure Data Lake Store

简称ADLS, 高性能,低延时地处理来自于HDFS工具的数据请求。同时对不管何种数据都保持原本的样子,这一点很重要。过去的存储介质,不仅不能支持所有类型的数据,还因为存储能力的限制需要对数据进行修改后再存储。
同时它的性能也不差,某些功能吞吐量可以到128~256MB/s。对于高可用等安全性要求也自然是必然会有的。
ADLS目前有两种类型:ADLS Gen1 和Gen2。

Gen1

它的特点是:

  1. 由Hadoop组成,使用Hadoop分析框架如Hive,MapReduce可以很直接地进行数据分析。
  2. 无限存储。
    【Azure Data Platform】Azure Data Lake(1)——简介_第1张图片

Gen2

Gen2 实际上跟Gen1 的关系不是很大,反而跟Blob Storage的关系大一点,因为它是建立在blob storage上,而且还具有所有ADLS Gen1 的属性。除此之外,还具有文件系统的行为,比如层级结构,文件级别权限控制,目录。
Gen2与Gen1相比还具有两点特点:

  1. POSIX 权限: ADLS Gen2 支持ACL 和POSIX 权限
  2. 驱动优化:ABFS驱动是专门为大数据分析设计的。
    【Azure Data Platform】Azure Data Lake(1)——简介_第2张图片

何时使用ADLS

  1. Azure常规云对象存储。
  2. 流式处理。
  3. 对存储上的数据进行直接分析,避免额外的复制操作。

简单来说,云上的对象存储可以优先考虑用ADLS, 并且如果没有特殊需求或者明确指明,则建议使用Gen2,因为它几乎同时拥有了ADLS Gen1和Blob的优点,而且ADLS Gen1会在2024年2月29日停止服务,在此之前需要迁移到Gen2,详见文档将 Azure Data Lake Storage 从 Gen1 迁移到 Gen2。 Gen2的实现需要启用“Hierarchical namespace”,如下图:

【Azure Data Platform】Azure Data Lake(1)——简介_第3张图片
ADLS Gen2 的数据访问是通过 rest API 端点:dfs.core.windows.net。

Blob Storage

前面在ADLS Gen2已经提过Blob storage,Gen2 是建立在Blob storage上的。Blob的全称是:Binary Large Object, 是比ADLS更早出现的云存储方案。可以存储所有类型的对象。ADLS 偏向于分析,而Blob偏向于常规存储。
与ADLS相比,Blob是平面的松散地存放文件,而ADLS可以层次化地组织和存储文件。并且授权方面没有ADLS那么小粒度,不能对文件授权。

关于费用,由于ADLS的阶梯式收费,在数据量较少的场景下,Blob比ADLS的费用高。但是到了一定量级,Blob的单价会更低,虽然差异不大。

另外它是有存储大小限制的: 标准存储帐户的缩放目标

Blob 的API 端点时:blob.core.windows.net。

但是它也不是一无是处:

  1. 处理速度快,在SQL DW的polybase操作中,每个读取器(reader)读取ADLS上的数据是128MB/个,读取Blob的数据是256MB/个。
  2. blob支持的SDK更多。
  3. 某些软件,服务只支持blob而不支持ADLS。

何时使用blob

  1. 应用需要直接读取对象如图像或文档时。
  2. 存储用于分布式访问的文件,例如安装包。
  3. 流式传输视频和音频。
  4. 存储用于备份和还原、灾难恢复和归档的数据。
  5. 日志文件存储。

小结

从上面可知,如果程序支持的话,优先考虑ADLS Gen2。 如果单纯追求一定数据量的性能,而不需要进行数据分析,Blob是一个不错的选择。
如果考虑到安全问题,ADLS继承了Azure AD,可以借助AAD进行更加深入的权限控制。不过不代表blob是不安全的。

本文不是把blob storage和ADLS做一个对比,而是粗略弄清楚它们的异同,以便在选型的时候更加准确。

你可能感兴趣的:(Azure,azure,adls)