-
目录的严格原子重命名
-
细化的 HDFS 权限
-
HDFS 符号链接
-
Azure 存储拥有异地冗余复制,但使用它并不总是明智的。 它确实提供数据冗余和地理恢复,但是向更远的位置进行故障转移会严重降低性能并产生额外的成本。 考虑为数据提供更高的可用性是否值得。
-
如果文件的名称具有相同的前缀,HDFS 会将它们视为单个分区。 因此,如果使用 Azure 数据工厂,则所有数据移动单位 (DMU) 都将写入单个分区。
-
如果使用数据工厂进行数据传输,请扫描除快照外的所有目录,并使用
hdfs du
命令查看目录大小。 如果有多个子目录和大量数据,请在数据工厂中启动多个复制活动。 例如,对每个子目录使用一个复制,而不是通过使用单个复制活动传输整个目录。
-
数据平台通常用于长期保留可能已从记录系统中删除的信息。 应计划为已存档数据创建磁带备份或快照。 请考虑将信息复制到恢复站点。 通常,存档数据是出于合规性或历史数据目的。 在存档数据之前,应该有一个明确的理由来保留它。 此外,还应确定何时删除存档数据,并建立删除数据时应遵循的过程。
-
Data Lake Storage 存档访问层的低成本使其成为存档数据的一个有吸引力的选项。 有关详细信息,请参阅
存档访问层
。
-
当 HDFS 客户端使用 ABFS 驱动程序访问 Blob 存储时,可能会出现客户端使用的方法不受支持,AzureNativeFileSystem 引发 UnsupportedOperationException 的情况。 例如,目前不支持
append(Path f, int bufferSize, Progressable progress)
。 若要检查与 ABFS 驱动程序相关的问题,请参阅
Hadoop 功能和修补程序
。
-
有一个后移植版本的 ABFS 驱动程序可用于较旧的 Hadoop 群集。 有关详细信息,请参阅
ABFS 驱动程序的后移植
。
-
在 Azure 虚拟网络环境中,DistCp 工具不支持与 Azure 存储虚拟网络终结点进行 Azure ExpressRoute 专用对等互连。 有关详细信息,请参阅
使用 Azure 数据工厂将数据从本地 Hadoop 群集迁移到 Azure 存储
。
将 HDFS 迁移到 Data Lake Storage 的典型方法使用以下步骤:
HDFS 评估
本地评估脚本提供了有助于确定哪些工作负载可以迁移到 Azure 的信息,以及数据是一次全部迁移还是一次迁移一部分。 Unravel 等第三方工具可以提供指标并支持本地 HDFS 的自动评估。 规划时要考虑的一些重要因素包括:
-
数据的所有权
-
处理复杂性
-
提取、转换和加载 (ETL) 复杂性
-
个人身份信息 (PII) 和其他敏感数据
根据此类因素,可以制定一个计划,将数据移动到 Azure,以最大程度地减少停机时间和业务中断。 也许敏感数据可以保留在本地。 在移动增量负载之前,可以移动和测试历史数据。
以下决策流有助于确定要运行的条件和命令,以获取正确的信息。
用于从 HDFS 获取评估指标的 HDFS 命令包括:
-
列出位置中的所有目录:
hdfs dfs -ls books
-
以递归方式列出位置中的所有文件:
hdfs dfs -ls -R books
-
获取 HDFS 目录和文件的大小:
hadoop fs -du -s -h command
hadoop fs -du -s -h
命令显示 HDFS 文件和目录的大小。 由于 Hadoop 文件系统复制每个文件,因此文件的实际物理大小是文件副本数乘以一个副本的大小。
-
确定是否启用 ACL。 为此,请获取 Hdfs-site.xml 中 dfs.namenode.acls.enabled 的值。 了解该值有助于在 Azure 存储帐户上计划访问控制。 有关此文件的内容的信息,请参阅
默认文件设置
。
合作伙伴工具(如 Unravel)提供用于计划数据迁移的评估报告。 这些工具必须在本地环境中运行,或连接到 Hadoop 群集以生成报告。
-
以下 Unravel 报告提供有关每个目录下的小文件的统计信息:
-
以下报告提供有关每个目录下的文件的统计信息:
必须按照迁移计划中所述将数据传输到 Azure。 传输需要以下活动:
-
标识所有引入点。
如果由于安全要求,无法直接将数据登陆到云,则本地可以充当中间登陆区域。 可以在数据工厂中生成管道,以便从本地系统拉取数据,或使用 AZCopy 脚本将数据推送到 Azure 存储帐户。
常见引入源包括:
-
SFTP 服务器
-
数据库引入
-
数据库转储
-
更改数据捕获
-
计划所需的存储帐户数。
若要计划所需的存储帐户数,请了解当前 HDFS 上的总负载。 可以使用 TotalLoad 指标,它是当前跨所有 DataNode 的并发文件访问数。 根据本地 TotalLoad 值和 Azure 上的预期增长,设置区域中存储帐户的限制。 如果可以增加限制,单个存储帐户可能就足够了。 但是,对于数据湖,最好为每个区域保留单独的存储帐户,以便为将来的数据量增长做好准备。 保留单独的存储帐户的其他原因包括:
-
复原能力要求
-
数据复制要求
-
公开数据供公众使用
在存储帐户上启用分层命名空间时,无法将其更改回平面命名空间。 备份和 VM 映像文件等工作负载不会从分层命名空间中获得任何好处。
有关通过专用链接保护虚拟网络与存储帐户之间的流量的信息,请参阅
保护存储帐户
。
有关 Azure 存储帐户默认限制的信息,请参阅
标准存储帐户的可伸缩性和性能目标
。 流入量限制适用于发送到存储帐户的数据。 流出量限制适用于从存储帐户接收的数据
-
确定可用性要求。
可以在 hdfs-site.xml 中指定 Hadoop 平台的复制因子,或逐个文件指定。 可以根据数据的性质在 Data Lake Storage 上配置复制。 如果应用程序要求在数据丢失的情况下重构数据,则区域冗余存储 (ZRS) 是一种选择。 在 Data Lake Storage ZRS 中,跨主要区域中的 3 个可用性区域同步复制数据。 对于需要高可用性且可在多个区域中运行的应用程序,请将数据复制到次要区域。 这是异地冗余复制。
-
检查是否损坏或缺失块。
检查块扫描程序报告是否损坏或缺失块。 如果有,请等待文件还原后再传输。
-
检查是否已启用 NFS。
通过检查 core-site.xml 文件,检查本地 Hadoop 平台上是否启用了 NFS。 它具有 nfsserver.groups 和 nfsserver.hosts 属性。
NFS 3.0 功能在 Data Lake Storage 中处于预览状态。 尚不支持一些功能。 有关详细信息,请参阅
Azure Blob 存储的网络文件系统 (NFS) 3.0 协议支持
。
-
检查 Hadoop 文件格式。
使用以下决策流程图获取有关如何处理文件格式的指导。
-
选择 Azure 数据传输解决方案。
数据传输可以通过网络进行在线传输,也可以通过物理设备进行离线传输。 使用哪种方法取决于数据量、网络带宽和数据传输频率。 历史数据只需传输一次。 增量负载需要重复的持续传输。
下面的列表中讨论了数据传输方法。 有关选择数据传输类型的详细信息,请参阅
选择 Azure 数据传输解决方案
。
-
Azcopy
AzCopy 是一个命令行实用工具,可用于将文件从 HDFS 复制到存储帐户。 这是高带宽传输(超过 1 GBPS)的一个选项。
下面是移动 HDFS 目录的示例命令:
*azcopy copy "C:\local\path" "https://account.blob.core.windows.net/mycontainer1/?sv=2018-03-28&ss=bjqt&srt=sco&sp=rwddgcup&se=2019-05-01T05:01:17Z&st=2019-04-30T21:01:17Z&spr=https&sig=MGCXiyEzbtttkr3ewJIh2AR8KrghSy1DGM9ovN734bQF4%3D" --recursive=true*
DistCp
DistCp 是 Hadoop 中的一个命令行实用工具,可在 Hadoop 群集中执行分布式复制操作。 DistCp 在 Hadoop 群集中创建多个映射任务,将数据从源复制到接收器。 当有足够的网络带宽时,此推送方法很好,并且不需要为数据迁移预配额外的计算资源。 但是,如果源 HDFS 群集已耗尽容量,并且无法添加其他计算,请考虑将数据工厂与 DistCp 复制活动配合使用来拉取文件,而不是推送文件。
*hadoop distcp -D fs.azure.account.key.<account name>.blob.core.windows.net=<Key> wasb://<container>@<account>.blob.core.windows.net<path to wasb file> hdfs://<hdfs path>*
用于大型数据传输的 Azure Data Box
Azure Data Box 是一款从 Microsoft 订购的物理设备。 它提供大规模数据传输,当网络带宽有限且数据量很大时(例如,当容量介于几 TB 到几 PB 之间),它是脱机数据传输选项。
将 Data Box 连接到 LAN 以将数据传输到 LAN。 然后将数据发送回 Microsoft 数据中心,在那里,Microsoft 工程师将数据传输到配置的存储帐户。
有多个 Data Box 选项,它们因可以处理的数据量而异。 有关 Data Box 方法的详细信息,请参阅 Azure Data Box 文档 - 脱机传输。
数据工厂是一种数据集成服务,可帮助创建数据驱动的工作流,用于协调和自动化数据移动和数据转换。 当有足够的网络带宽可用并且需要协调和监视数据迁移时,可以使用它。 当增量数据作为第一跃点到达本地系统,并且由于安全限制而无法直接传输到 Azure 存储帐户时,可以使用数据工厂进行常规的增量数据加载。
有关各种传输方法的详细信息,请参阅具有中高网络带宽的大型数据集的数据传输。
有关使用数据工厂从 HDFS 复制数据的信息,请参阅使用 Azure 数据工厂或 Synapse Analytics 从 HDFS 服务器复制数据
合作伙伴解决方案,例如 WANdisco LiveData 迁移
适用于 Azure 的 WANdisco LiveData Platform 是 Microsoft 用于从 Hadoop 迁移到 Azure 的首选解决方案之一。 可以使用 Azure 门户和 Azure CLI 访问其功能。 有关详细信息,请参阅使用适用于 Azure 的 WANdisco LiveData Platform 迁移 Hadoop 数据湖。
- Sunil Sattiraju | 高级云解决方案架构师
- Amanjeet Singh | 首席项目经理
- Nagaraj Seeplapudur Venkatesan | 高级云解决方案架构师 - 工程
若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
Azure 产品简介
- Azure Data Lake Storage Gen2 简介
- Azure HDInsight 中的 Apache Spark 是什么
- 什么是 Azure HDInsight 中的 Apache Hadoop?
- Azure HDInsight 中的 Apache HBase 简介
- 什么是 Azure HDInsight 中的 Apache Kafka
Azure 产品参考
- Azure Active Directory 文档
- Azure Cosmos DB 文档
- Azure 数据工厂文档
- Azure Databricks 文档
- Azure 事件中心文档
- Azure Functions 文档
- Azure HDInsight 文档
- Microsoft Purview 数据治理文档
- Azure 流分析文档
- Azure Synapse Analytics
- 适用于 Azure HDInsight 的企业安全性套餐
- 为 Apache Hadoop on HDInsight 开发 Java MapReduce 程序
- 在 HDInsight 中将 Apache Sqoop 与 Hadoop 配合使用
- Apache Spark 流式处理概述
- 结构化流教程
- 使用 Apache Kafka 应用程序中的 Azure 事件中心
- Hadoop 迁移到 Azure
- Apache HBase 迁移到 Azure
- Apache Kafka 迁移到 Azure
- Apache Sqoop 迁移到 Azure