使用 Azure PowerShell 管理 HDInsight 中的 Hadoop 群集

Note

本文涉及的 SDK 和工具是在 Microsoft Corporation 运行的 Azure 服务中使用的,而在中国, Azure 是由 21Vianet 运行的。 请根据需要参阅中国区 Azure 应用程序开发说明

Azure PowerShell 可用于在 Azure 中控制和自动执行工作负荷的部署和管理。 本文介绍了如何使用 Azure PowerShell 管理 Azure HDInsight 中的 Hadoop 群集。 有关 HDInsight PowerShell cmdlet 的列表,请参阅 HDInsight cmdlet 参考

先决条件

在开始阅读本文前,必须具有以下项目:

安装 Azure PowerShell

Important

使用 Azure Service Manager 管理 HDInsight 资源的 Azure PowerShell 支持已弃用,已在 2017 年 1 月 1 日删除。 本文档中的步骤使用的是与 Azure Resource Manager 兼容的新 HDInsight cmdlet。

请按照 Install and configure Azure PowerShell (安装和配置 Azure PowerShell)中的步骤安装最新版本的 Azure PowerShell。 如果你的脚本需要修改后才能使用与 Azure Resource Manager 兼容的新 cmdlet,请参阅 迁移到适用于 HDInsight 群集的基于 Azure Resource Manager 的开发工具 ,了解详细信息。

如果已安装 Azure PowerShell 版本 0.9x,则必须先卸载该版本,再安装新版本。

若要检查所安装的 PowerShell 版本,请执行以下操作:

Get-Module *azure*

若要卸载旧版本,请运行控制面板中的“程序和功能”。

创建群集

请参阅使用 Azure PowerShell 在 HDInsight 中创建基于 Linux 的群集

列出群集

使用以下命令可列出当前订阅中的所有群集:

Get-AzureRmHDInsightCluster

显示群集

使用以下命令可显示当前订阅中特定群集的详细信息:

Get-AzureRmHDInsightCluster -ClusterName <Cluster Name>

删除群集

使用以下命令来删除群集:

Remove-AzureRmHDInsightCluster -ClusterName <Cluster Name>

还可通过删除包含该群集的资源组删除群集。 删除资源群将删除组中的所有资源(包括默认存储帐户)。

Remove-AzureRmResourceGroup -Name <Resource Group Name>

缩放群集

使用群集缩放功能,可更改 Azure HDInsight 中运行的群集使用的辅助节点数,而无需重新创建群集。

Note

只支持使用 HDInsight 3.1.3 或更高版本的群集。 如果不确定群集的版本,可以查看“属性”页面。 请参阅列出和显示群集

更改 HDInsight 支持的每种类型的群集所用数据节点数的影响:

  • Hadoop

    可顺利增加正在运行的 Hadoop 群集中的辅助节点数,而不会影响任何挂起或运行中的作业。 也可在操作进行中提交新作业。 系统会正常处理失败的缩放操作,让群集始终保持正常运行状态。

    减少数据节点数目以缩减 Hadoop 群集时,系统会重新启动群集中的某些服务。 重启服务将导致所有正在运行和挂起的作业在缩放操作完成时失败。 但是,可以在操作完成后重新提交这些作业。

  • HBase

    可在 HBase 群集运行时顺利添加或删除节点。 在完成缩放操作后的几分钟内,区域服务器就能自动平衡。 不过,也可手动均衡区域服务器,方法是登录到群集的头节点,然后在命令提示符窗口中运行以下命令:

    >pushd %HBASE_HOME%\bin
    >hbase shell
    >balancer
    
  • Storm

    可在 Storm 群集运行时顺利添加或删除数据节点。 但是,缩放操作成功完成后,需要重新平衡拓扑。

    可以使用两种方法来完成重新平衡操作:

    • Storm Web UI
    • 命令行界面 (CLI) 工具

      有关详细信息,请参阅 Apache Storm 文档

      HDInsight 群集上提供了 Storm Web UI:

      HDInsight storm 缩放重新平衡

      以下是有关如何使用 CLI 命令重新平衡 Storm 拓扑的示例:

      ## Reconfigure the topology "mytopology" to use 5 worker processes,
      ## the spout "blue-spout" to use 3 executors, and
      ## the bolt "yellow-bolt" to use 10 executors
      $ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
      

若要使用 Azure PowerShell 更改 Hadoop 群集大小,请从客户端计算机运行以下命令:

Set-AzureRmHDInsightClusterSize -ClusterName <Cluster Name> -TargetInstanceCount <NewSize>

授予/撤消访问权限

HDInsight 群集提供以下 HTTP Web 服务(所有这些服务都有 REST 样式的终结点):

  • ODBC
  • JDBC
  • Ambari
  • Oozie
  • Templeton

默认情况下,将授权这些服务进行访问。 可以撤消/授予访问权限。 若要撤消:

Revoke-AzureRmHDInsightHttpServicesAccess -ClusterName <Cluster Name>

若要授予:

$clusterName = "<HDInsight Cluster Name>"

# Credential option 1
$hadoopUserName = "admin"
$hadoopUserPassword = "<Enter the Password>"
$hadoopUserPW = ConvertTo-SecureString -String $hadoopUserPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($hadoopUserName,$hadoopUserPW)

# Credential option 2
#$credential = Get-Credential -Message "Enter the HTTP username and password:" -UserName "admin"

Grant-AzureRmHDInsightHttpServicesAccess -ClusterName $clusterName -HttpCredential $credential

Note

授予/撤销访问权限时,将重设群集用户的用户名和密码。

也可通过门户执行授予和撤消访问权限。 请参阅使用 Azure 门户管理 HDInsight

更新 HTTP 用户凭据

这与授予/撤消 HTTP 访问权限是同一过程。如果已授予群集 HTTP 访问权限,则必须先撤消该访问权限。 然后再使用新的 HTTP 用户凭据授予访问权限。

查找默认存储帐户

以下 PowerShell 脚本演示了如何获取群集的默认存储帐户名称和相关信息:

#Connect-AzureRmAccount -Environment AzureChinaCloud
$clusterName = "<HDInsight Cluster Name>"

$clusterInfo = Get-AzureRmHDInsightCluster -ClusterName $clusterName
$storageInfo = $clusterInfo.DefaultStorageAccount.split('.')
$defaultStoreageType = $storageInfo[1]
$defaultStorageName = $storageInfo[0]

echo "Default Storage account name: $defaultStorageName"
echo "Default Storage account type: $defaultStoreageType"

if ($defaultStoreageType -eq "blob")
{
    $defaultBlobContainerName = $cluster.DefaultStorageContainer
    $defaultStorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $defaultStorageAccountName)[0].Value
    $defaultStorageAccountContext = New-AzureStorageContext -StorageAccountName $defaultStorageAccountName -StorageAccountKey $defaultStorageAccountKey

    echo "Default Blob container name: $defaultBlobContainerName"
    echo "Default Storage account key: $defaultStorageAccountKey"
}

查找资源组

在 Resource Manager 模式下,每个 HDInsight 群集都属于一个 Azure 资源组。 若要查找资源组:

$clusterName = "<HDInsight Cluster Name>"

$cluster = Get-AzureRmHDInsightCluster -ClusterName $clusterName
$resourceGroupName = $cluster.ResourceGroup

提交作业

提交 MapReduce 作业

请参阅在基于 Windows 的 HDInsight 中运行 Hadoop MapReduce 示例

提交 Hive 作业

请参阅使用 PowerShell 运行 Hive 查询

提交 Pig 作业

请参阅使用 PowerShell 运行 Pig 作业

提交 Sqoop 作业

请参阅将 Sqoop 与 HDInsight 配合使用

提交 Oozie 作业

请参阅在 HDInsight 中将 Oozie 与 Hadoop 配合使用以定义和运行工作流

将数据上传到 Azure Blob 存储

请参阅 将数据上传到 HDInsight

另请参阅