# 六、HDInsight 和 PowerShell

PowerShell 是 Windows 脚本语言，支持对 Windows 环境的操作和自动化。[<sup>【9】</sup>](12.html#_ftn9)它是一个极其强大的实用程序，允许执行从清除本地事件日志到在 Azure 上部署 HDInsight 集群的任务。

当 HDInsight 进入通用可用性领域时，非常强调通过 PowerShell 提交所有类型的作业。这背后的一个动机是避免与让远程桌面访问头节点相关的一些安全风险(这是一个在构建集群时默认禁用的功能，尽管可以通过门户轻松启用)。第二个驱动因素是实现作业和任务的远程自动化执行。这为有效利用资源提供了极大的灵活性。比方说，来自 Azure 托管站点的 web 日志存储在 Azure Blob Storage 中，每天需要运行一次作业来处理这些数据。从客户端使用 PowerShell，可以加速集群，执行任何 MapReduce、Pig 或 Hive 作业，并将输出存储在更持久的地方，例如 SQL Azure 数据库，然后关闭集群。

要覆盖 PowerShell，需要一本书，所以在这里我们将进行一个简单的概述。更多细节可以在 TechNet 上找到。[<sup>【10】</sup>](12.html#_ftn10)

PowerShell 的功能是通过 cmdlets 发布的。这些命令接受参数来执行某些功能。

例如，以下 cmdlet 列出了控制台中指定订阅中可用的 HDInsight 群集:

```cs
      Get-AzureHDInsightCluster -Subscription $subid

```

对于作业执行，例如提交 Hive 作业，cmdlets 如下所示:

```cs
      Invoke-Hive "select * from hivesampletable limit 10"

```

这些行为与直接通过服务器上的命令行提交作业非常相似。

可用 cmdlets 的完整文档可在 CodePlex 上的 Hadoop(软件开发工具包)页面上找到。[<sup>【11】</sup>](12.html#_ftn11)

安装 PowerShell 扩展是一件简单的事情，只需安装几个软件包并遵循一些配置步骤。这些都记录在官方文档中。[<sup>【12】</sup>](12.html#_ftn12)