你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将本地 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 还在中国和德国的 Azure 政府版中提供,满足关键主权领域的企业需求。

  • 安全且兼容 - 通过 HDInsight,你可使用 Azure 虚拟网络加密和与 Microsoft Entra ID 的集成来保护企业数据资产。 HDInsight 还满足最常用的行业和政府符合性标准

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

  • 针对特定工作负载优化的较小群集与组件之间的依赖关系较少 - 典型的本地 Hadoop 设置使用具有多种用途的单个群集。 使用 Azure HDInsight,可创建特定于工作负载的群集。 为特定工作负载创建群集消除了维护单个群集日益复杂的复杂性。

  • 生产力 - 可在首选开发环境中使用 Hadoop 和 Spark 的各种工具。

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

  • 轻松经营、管理和监视 - Azure HDInsight 与 Azure Monitor 日志进行集成,以通过单个界面来监视所有群集。

  • 与其他 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、磁盘等。
数据节点配置 m/y、cpu、磁盘等。
边缘节点配置 m/y、cpu、磁盘等。
是否 HDFS 加密?
高可用性 HDFS 高可用性、元存储高可用性
灾难恢复/备份 是否备份群集?
依赖于群集的系统 SQL Server、Teradata、Power BI、MongoDB
第三方集成 Tableau、GridGain、Qubole、Informatica、Splunk
主题:安全性
外围安全性 防火墙
群集身份验证和授权 Active Directory、Ambari、Cloudera Manager,不进行身份验证
HDFS 访问控制 手动,SSH 用户
Hive 身份验证和授权 Sentry、LDAP、带有 Kerberos 的 AD、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 数据库类型 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 需求问卷

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

后续步骤

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