使用 Hadoop、Spark、Kafka 等等在 HDInsight 中设置群集

了解如何使用 Hadoop、Spark、Kafka、Interactive Query、HBase 或 Storm 在 HDInsight 中设置和配置群集。 另外,了解如何自定义群集,并将它们加入域以提高安全性。

Hadoop 群集由用于对任务进行分布式处理的多个虚拟机(节点)组成。 Azure HDInsight 对各个节点的安装和配置的实现细节进行处理,因此你只需提供常规配置信息。

Important

HDInsight 群集计费在创建群集之后便会开始,删除群集后才会停止。 HDInsight 群集按分钟收费,因此不再需要使用群集时,应将其删除。 了解如何删除群集

群集设置方法

下表显示了可用于设置 HDInsight 群集的不同方法。

群集创建方法 Web 浏览器 命令行 REST API SDK
Azure 门户      
Azure CLI(版本 1.0)      
Azure PowerShell      
cURL    
.NET SDK      
Azure Resource Manager 模板      

快速创建:基本群集设置

本文逐步讲解如何通过 Azure 门户进行设置:在门户中使用“快速创建”或“自定义”选项创建 HDInsight 群集。

hdinsight 创建选项 - 自定义快速创建

遵照屏幕上的说明执行基本的群集设置。 下面提供了各项设置的详细信息:

Important

Linux 是 HDInsight 3.4 或更高版本上使用的唯一操作系统。 有关详细信息,请参阅 HDInsight 3.3 停用

资源组名称

可以借助 Azure Resource Manager 以组(称为 Azure 资源组)的形式处理应用程序中的资源。 可以通过单个协调的操作来部署、更新、监视或删除应用程序的所有资源。

群集类型和配置

Azure HDInsight 目前提供以下群集类型,每种类型都具有一组用于提供特定功能的组件。

Important

HDInsight 群集以多种类型提供,每种类型适用于单个工作负荷或技术。 不支持在一个群集上创建合并了多个类型(如 Storm 和 HBase)的群集。 如果解决方案需要分布在多种 HDInsight 群集类型上的技术,可以使用 Azure 虚拟网络连接所需的群集类型。

群集类型 功能
Hadoop Batch 查询和存储数据的分析
HBase 大量无架构 NoSQL 数据的处理
交互式查询 更快的交互式 Hive 查询的内存中缓存
Kafka 分布式流式处理平台,可用于构建实时流数据管道和应用程序
Spark 内存中处理、交互式查询、微批流处理
Storm 实时事件处理

HDInsight 版本

选择此群集的 HDInsight 版本。 有关详细信息,请参阅支持的 HDInsight 版本

群集登录名和 SSH 用户名

使用 HDInsight 群集时,可以在群集创建期间配置两个用户帐户:

  • HTTP 用户:默认用户名为 admin。它使用 Azure 门户上的基本配置。 有时称为“群集用户”。
  • SSH 用户(Linux 群集):用于通过 SSH 连接到群集。 有关详细信息,请参阅 将 SSH 与 HDInsight 配合使用

使用企业安全包可将 HDInsight 与 Active Directory 和 Apache Ranger 集成。 可以使用企业安全包创建多个用户。

群集和存储的位置(区域)

无需显式指定群集位置:群集位于默认存储所在的位置。 有关受支持区域的列表,请单击 HDInsight 定价中的“区域”下拉列表。

群集的存储终结点

Hadoop 的本地安装对群集上的存储使用 Hadoop 分布式文件系统 (HDFS),而在云中,需使用已连接到群集的存储终结点。 HDInsight 群集使用 Azure 存储中的 Blob。 使用 Azure 存储意味着可以安全删除用于计算的 HDInsight 群集,同时仍可保留数据。

Warning

不支持在 HDInsight 群集之外的其他位置使用其他存储帐户。

在配置期间,请为默认存储终结点指定 Azure 存储帐户的某个 Blob 容器。 默认存储包含应用程序日志和系统日志。 也可以选择指定群集可访问的其他 Azure 存储链接帐户。 HDInsight 群集和相关的存储帐户必须在同一个 Azure 位置。

群集存储设置:HDFS 兼容的存储终结点

Note

需要安全传输功能强制通过安全连接来实施针对帐户的所有请求。 仅 HDInsight 群集 3.6 或更高版本支持此功能。 有关详细信息,请参阅在 Azure HDInsight 中使用安全传输存储帐户创建 Hadoop 群集

可选元存储

可创建可选的 Hive 或 Oozie 元存储。 但是,并非所有群集类型都支持元存储,并且 Azure SQL 数据仓库与元存储不兼容。

有关详细信息,请参阅在 Azure HDInsight 中使用外部元数据存储

Important

创建自定义元存储时,请不要在数据库名称中使用破折号、连字符或空格。 否则可能导致群集创建过程失败。

Hive 元存储

如果希望在删除 HDInsight 群集后保留 Hive 表,请使用自定义元存储。 这样,便可以将该元存储附加到另一个 HDInsight 群集。

为一个 HDInsight 群集版本创建的 HDInsight 元存储不能在不同的 HDInsight 群集版本之间共享。 有关 HDInsight 版本的列表,请参阅支持的 HDInsight 版本

Oozie 元存储

若要提高使用 Oozie 时的性能,请使用自定义元存储。 删除群集后,元存储也可提供对 Oozie 作业数据的访问权限。

Important

无法重用自定义 Oozie 元存储。 若要使用自定义 Oozie 元存储,必须在创建 HDInsight 群集时提供一个空的 Azure SQL 数据库。

自定义群集设置

“自定义群集设置”是在“快速创建”设置的基础之上实现的,其中添加了以下选项:

在群集上安装 HDInsight 应用程序

HDInsight 应用程序是用户可以在基于 Linux 的 HDInsight 群集上安装的应用程序。 可以使用 Microsoft、第三方提供的应用程序。

大多数 HDInsight 应用程序安装在空边缘节点上。 空边缘节点是安装并配置了与头节点中相同的客户端工具的 Linux 虚拟机。 可以使用该边缘节点来访问群集、测试客户端应用程序和托管客户端应用程序。 有关详细信息,请参阅在 HDInsight 中使用空边缘节点

配置群集大小

只要群集存在,就会产生节点使用费。 创建群集后便开始计费,删除群集后停止计费。 无法取消分配群集或将其置于暂停状态。

每个群集类型的节点数

每个群集类型有自身的节点数目、节点术语和默认的 VM 大小。 下表中的括号内列出了每个节点类型的节点数目。

类型 Nodes 图示
Hadoop 头节点 (2),数据节点 (1+) HDInsight Hadoop 群集节点
HBase 头服务器 (2),区域服务器 (1+),主控/ZooKeeper 节点 (3) HDInsight HBase 群集节点
Storm Nimbus 节点 (2),监督程序服务器 (1+),ZooKeeper 节点 (3) HDInsight Storm 群集节点
Spark 头节点 (2),辅助角色节点 (1+),ZooKeeper 节点 (3)(对于 A1 ZooKeeper VM 大小免费) HDInsight Spark 群集节点

有关详细信息,请参阅“HDInsight 中的 Hadoop 组件和版本是什么?”中的群集的默认节点配置和虚拟机大小

HDInsight 群集的成本取决于节点数和节点的虚拟机大小。

不同群集类型具有不同的节点类型、节点数和节点大小:

  • Hadoop 群集类型的默认配置:
    • 两个头节点
    • 四个数据节点
  • Storm 群集类型的默认配置:
    • 两个 Nimbus 节点
    • 三个 ZooKeeper 节点
    • 四个监督器节点

如果你只是想要试用 HDInsight,我们建议使用一个数据节点。 有关 HDInsight 定价的详细信息,请参阅 HDInsight 定价

Note

群集大小限制因 Azure 订阅而异。 可联系 Azure 支持部门提高限制。

使用 Azure 门户配置群集时,可通过“节点定价层”边栏选项卡查看节点大小。 在门户中,还可以查看不同节点大小的相关费用。

HDInsight VM 节点大小

虚拟机大小

部署群集时,请根据要部署的解决方案选择计算资源。 以下 VM 用于 HDInsight 群集:

使用不同的 SDK 或使用 Azure PowerShell 创建群集时,若要确定应该使用哪个值来指定 VM 大小,请参阅用于 HDInsight 群集的 VM 大小。 请使用此链接本章的“大小”列中的值。

Important

如果需要在群集中使用 32 个以上的辅助角色节点,则必须选择至少具有 8 个核心和 14 GB RAM 的头节点大小。

有关详细信息,请参阅虚拟机的大小。 有关不同大小的定价信息,请参阅 HDInsight 定价

高级设置:脚本操作

可以在创建期间通过使用脚本安装其他组件或自定义群集配置。 此类脚本可通过 脚本操作调用,脚本操作是一种配置选项,可通过 Azure 门户、HDInsight Windows PowerShell cmdlet 或 HDInsight .NET SDK 使用。 有关详细信息,请参阅使用脚本操作自定义 HDInsight 群集

某些本机 Java 组件(如 Mahout 和 Cascading)可以在群集上作为 Java 存档 (JAR) 文件运行。 可以使用 Hadoop 作业提交机制将这些 JAR 文件分发到 Azure 存储,然后提交到 HDInsight 群集。 有关详细信息,请参阅以编程方式提交 Hadoop 作业

Note

如果在将 JAR 文件部署到 HDInsight 群集或调用 HDInsight 群集上的 JAR 文件时遇到问题,请联系 Azure 支持

HDInsight 不支持级联,因此不符合 Azure 技术支持的条件。 有关支持的组件的列表,请参阅 HDInsight 提供的群集版本有哪些新功能?

在创建过程中,有时需要配置以下配置文件:

  • clusterIdentity.xml
  • core-site.xml
  • gateway.xml
  • hbase-env.xml
  • hbase-site.xml
  • hdfs-site.xml
  • hive-env.xml
  • hive-site.xml
  • mapred-site
  • oozie-site.xml
  • oozie-env.xml
  • storm-site.xml
  • tez-site.xml
  • webhcat-site.xml
  • yarn-site.xml

有关详细信息,请参阅使用 Bootstrap 自定义 HDInsight 群集

高级设置:使用虚拟网络扩展群集

如果解决方案需要分布在多种 HDInsight 群集类型上的技术,可以使用 Azure 虚拟网络连接所需的群集类型。 此配置允许群集以及部署到群集的任何代码直接相互通信。

有关将 Azure 虚拟网络与 HDInsight 配合使用的详细信息,请参阅使用 Azure 虚拟网络扩展 HDInsight

有关在一个 Azure 虚拟网络中使用两种群集类型的示例,请参阅 结合使用 Spark Structured Streaming 和 Kafka。 有关将 HDInsight 与虚拟网络配合使用的详细信息(包括虚拟网络的特定配置要求),请参阅 Extend HDInsight capabilities by using Azure Virtual Network(使用 Azure 虚拟网络扩展 HDInsight 功能)。

排查访问控制问题

如果在创建 HDInsight 群集时遇到问题,请参阅访问控制要求

后续步骤