将本地 Apache Hadoop 群集迁移到 Azure HDInsight - 动机和优势

本文是有关将本地 Apache Hadoop 生态系统部署迁移到 Azure HDInsight 的最佳做法系列中的第一篇。 本系列文章适用于负责在 Azure HDInsight 中设计、部署和迁移 Apache Hadoop 解决方案的人员。 可能受益于这些文章的角色包括云架构师、Hadoop 管理员和 DevOps 工程师。 软件开发人员、数据工程师和数据科学家还应受益于云中不同类型的群集工作原理的说明。

为何迁移到 Azure HDInsight

Azure HDInsight 是 Hadoop 组件的云分发。 Azure HDInsight 使处理大量数据变得简单、快速且经济高效。 HDInsight 包括最常用的开源框架,例如:

  • Apache Hadoop
  • Apache Spark
  • 带有 LLAP 的 Apache Hive
  • Apache Kafka
  • Apache HBase

Azure HDInsight 优于本地 Hadoop

  • 低成本 - 可以通过 按需创建群集 并仅为使用的内容付费来降低成本。 分离的计算和存储提供灵活性,使得数据的存储量独立于集群大小。

  • 自动群集创建 - 自动 群集创建需要最少的设置和配置。 自动化可用于按需群集。

  • 托管硬件和配置 - 无需担心 HDInsight 群集的物理硬件或基础结构。 只需指定群集的配置,Azure 即可设置它。

  • 易于缩放 - HDInsight 使你可以纵向扩展或缩减工作负荷。 Azure 负责数据重新分发和工作负荷重新均衡,而不会中断数据处理作业。

  • 全球可用性 - HDInsight 在比任何其他大数据分析产品/服务更多的 区域中 可用。 Azure HDInsight 在中国也可用,使你能够在关键主权领域满足企业需求。

  • 安全合规 - HDInsight 使你能够使用 Azure 虚拟网络、 加密和与 Microsoft Entra ID 集成来保护企业数据资产。 HDInsight 还符合最受欢迎的行业和政府 合规性标准。

  • 简化的版本管理 - Azure HDInsight 管理 Hadoop 生态系统组件的版本并使其保持最新。 软件更新通常是本地部署的复杂过程。

  • 针对组件之间依赖项较少的特定工作负荷进行优化的较小群集 - 典型的本地 Hadoop 设置使用一个用于多种用途的群集。 使用 Azure HDInsight,可以创建特定于工作负荷的群集。 为特定工作负载创建群集可以简化复杂性,避免维护单个集群时出现的复杂性增加。

  • 工作效率 - 可以在首选的开发环境中对 Hadoop 和 Spark 使用各种工具。

  • 使用自定义工具或第三方应用程序的扩展性 - 可以使用已安装的组件扩展 HDInsight 群集,还可以使用 Azure 市场位置的 一键 式部署与其他大数据解决方案集成。

  • 与其他 Azure 服务集成 - HDInsight 可以轻松地与其他常用 Azure 服务集成,如下所示:

    • Azure 数据工厂 (ADF)
    • Azure Blob 存储
    • Azure Data Lake Storage Gen2
    • Azure Cosmos DB
    • Azure SQL 数据库
    • Azure Analysis Services
  • 自我修复过程和组件 - HDInsight 使用自己的监视基础结构不断检查基础结构和开源组件。 它还可自动修复关键故障,例如开源组件和节点不可用。 如果任何 OSS 组件失败,则会在 Ambari 中触发警报。

有关详细信息,请参阅文章 “什么是 Azure HDInsight”和“Apache Hadoop 技术堆栈”。

迁移规划过程

建议执行以下步骤来规划将本地 Hadoop 群集迁移到 Azure HDInsight:

  1. 了解当前的本地部署和拓扑。
  2. 了解当前项目范围、日程表和团队专业知识。
  3. 了解 Azure 要求。
  4. 根据最佳做法构建详细的计划。

收集准备迁移的详细信息

本部分提供模板问卷来帮助收集有关以下内容的重要信息:

  • 本地部署
  • 项目详细信息
  • Azure 要求

本地部署问卷

问题 示例 答案
主题: 环境
群集分发版本 HDP 2.6.5、CDH 5.7
大数据生态系统组件 HDFS、Yarn、Hive、LLAP、Impala、Kudu、HBase、Spark、MapReduce、Kafka、Zookeeper、Solr、Sqoop、Oozie、Ranger、Atlas、Falcon、Zeppelin、R
群集类型 Hadoop、Spark、Confluent Kafka、Solr
群集数 4
主节点数 2
工作器节点数 100
边缘节点数 5
总磁盘空间 100 TB
主节点配置 m/y、cpu、disk 等。
数据节点配置 m/y、cpu、disk 等。
边缘节点配置 m/y、cpu、disk 等。
HDFS 加密? 是的
高可用性 HDFS 高可用性、元存储高可用性
灾难恢复/备份 备份群集?
依赖于群集的系统 SQL Server、Teradata、Power BI、MongoDB
第三方集成 Tableau、GridGain、Qubole、Informatica、Splunk
主题: 安全性
外围安全 防火墙
群集身份验证和授权 Active Directory、Ambari、Cloudera Manager、无身份验证
HDFS 访问控制 手动,SSH 用户
Hive 身份验证和授权 Sentry,LDAP,AD,Kerberos,Ranger
审计 Ambari、Cloudera Navigator、Ranger
监测 Graphite、collectd、statsd、Telegraf、InfluxDB
警报 Kapacitor、Prometheus、Datadog
数据保留期 三年,五年
群集管理员 单个管理员、多个管理员

项目详细信息问卷

问题 示例 答案
主题: 工作负荷和频率
MapReduce 作业 10 个作业 - 每天两次
Hive 作业 每小时 100 个工作
Spark 批处理作业 50 个作业 - 每 15 分钟
Spark 流式处理作业 5 个作业 - 每 3 分钟
结构化流作业 5 个作业 - 每分钟
编程语言 Python、Scala、Java
脚本编写 Shell、Python
主题: 数据
数据源 平面文件、JSON、Kafka、RDBMS
数据业务流程 Oozie 工作流、气流
内存中查找 Apache Ignite、Redis
数据目标 HDFS、RDBMS、Kafka、MPP
主题: 元数据
Hive DB 类型 Mysql、Postgres
Hive 元存储的数目 2
Hive 表的数目 100
Ranger 策略的数目 20
Oozie 工作流的数目 100
主题:缩放
数据量包括复制 100 TB
每日引入量 50 GB
数据增长率 每年 10%
群集节点增长率 每年 5%
主题: 群集利用率
平均 CPU % 使用率 60%
使用的平均内存 % 75%
使用的磁盘空间 75%
已使用的平均网络百分比 25%
主题: 员工
管理员数 2
开发人员数 10
最终用户数 100
技能 Hadoop、Spark
迁移工作的可用资源数 2
主题: 限制
当前限制 延迟较高
当前挑战 并发问题

Azure 需求问卷

问题 示例 答案
主题: 基础结构
首选区域 中国东部 2
VNet 首选? 是的
需要 HA/DR? 是的
与其他云服务集成? ADF、Azure Cosmos DB
主题: 数据移动
初始加载首选项 DistCp、Data box、ADF、WANDisco
数据传输增量 DistCp、AzCopy
正在进行的增量数据传输 DistCp、Sqoop
主题: 监视和警报
使用 Azure 监控和警报功能与集成第三方监控服务进行比较 使用 Azure 监视和警报
主题: 安全首选项
专用和受保护的数据管道? 是的
已加入域的群集 (ESP)? 是的
本地 AD 同步到云? 是的
要同步的 AD 用户数? 100
可以将密码同步到云端吗? 是的
仅使用云服务的用户? 是的
需要 MFA? 否
数据授权要求? 是的
基于角色的访问控制? 是的
需要审核? 是的
静态数据加密? 是的
在传输中进行数据加密? 是的
主题: Re-Architecture 首选项
单群集与特定群集类型 特定群集类型
共置存储与远程存储? 远程存储
远程存储数据时,群集大小较小? 群集大小更小
使用多个较小的群集而不是单个大型群集? 使用多个较小的群集
使用远程元存储? 是的
在不同群集之间共享元存储? 是的
解构工作负荷? 将 Hive 作业替换为 Spark 作业
使用 ADF 进行数据编排? 否

后续步骤

阅读本系列教程的下一篇文章: