Fork me on GitHub

使用 HDInsight进行开发

Windows AzureHDInsight 提供了运行 Apache Hadoop的动态供应群集来处理大数据(Big Data)的能力。您可以在这个系列的第一篇博客中找到更多信息,您也可以点击这里开始在Windows Azure 门户网站中使用它。这篇文章列举了开发人员与HDInsight交互的几种不同方法,首先通过讨论不同的场景,然后深入讨论 HDInsight 中各种不同的功能。因为我们的产品是建立在 Apache Hadoop 之上,所以开发人员可以利用一个有广泛且丰富的工具和功能的生态系统。

说起场景, 就我们合作过的客户而言,有两个截然不同的情形,创建,使用工具来处理大数据的工作,以及在应用程序中整合HDInsight,将工作的输入和输出整合为一个较大的应用程序架构的一部分。HDInsight 的一个关键设计是集成了 Windows Azure Blob Storage作为默认的文件系统。这意味着您可以使用现有的和工具和API's访问 blob 存储中的数据。该文章更详细地解释了我们如何利用Blob Storage。

就创建工作这一点而言,有大量的工具可用。深层次说,它有一套作为现有Hadoop 生态系统的一部分的工具,以及一组我们建立的项目帮助.NET 开发人员开始学习Hadoop,同时我们已经开始了新的项目帮助开发人员利用 JavaScript 与 Hadoop交互。

创建工作
现有的 Hadoop 工具

HDInsight 是通过 Hortonworks Data Platform来使用 Apache Hadoop,对于Hadoop 的生态系统有很高的保真度。因此,许多功能都和原来的完全一样。这意味着你在下面列出的任何工具的投资和知识都在 HDInsight 中可用。分布式处理群集由下面的Apache 项目创建:

  • Map/Reduce
    • 在Hadoop上,Map/Reduce是分布式处理的基础。为了编写工作, 程序员可以使用Java, 或者通过Hadoop Streaming使用其他语言和运行时.
    • 这里提供了在 HDInsight 上编写Map/Reducejobs的简易指南.
  • Hive
    • Hive使用一种类似于 SQL 的语法来表达编译一组被编译成Map/Reduce程序的查询。Hive支持SQL中的许多结构(聚合、 分组、 过滤等),并轻松地在您的群集中的各节点并行化这些查询。
    • 这里提供了使用Hive的方法
  • Pig
    • Pig是一种数据流语言,使用一种叫做Pig Latin的语言编译成一系列的Map/Reduce程序。
    • 这里提供了在HDInsight上使用Pig的入门指南.
  • Oozie
    • Oozie 是一种工作流调度程序, 用来管理行动的有向无循环图,其中的行动可以是Map/Reduce, Pig, Hive或其他工作。详细信息请点击这里参阅快速入门指南.

您可以在这里找到 Hadoop 组件更新列表。下表表示为当前预览版中各组件的版本:

Apache Hadoop

1.0.3

Apache Hive

0.9.0

Apache Pig

0.9.3

Apache Sqoop

1.4.2

Apache Oozie

3.2.0

Apache HCatalog

0.4.1

Apache Templeton

0.1.4

此外,Hadoop 空间的其他项目, 例如Mahout(参见示例) 或Cascading, 也可以方便地用在 HDInsight之上。有关这些主题我们将在今后另外写文章介绍。

.NET工具

我们正努力开发一组工具让开发人员能利用他们的.NET技能和投资来使用 Hadoop。这些项目放在CodePlex上,你可以从NuGet上下载这个工具包创建运行在HDInsight上的工作。有关这些介绍请参阅CodePlex 站点上的快速入门。

运行工作

想要运行任意一项工作,有如下几个方法:

  • 直接从头节点运行它们。若要执行此操作,远程连接到您的群集,打开 Hadoop 命令提示符,并直接使用命令行工具
  • 在群集上使用REST API's远程提交它们(更多详细信息请参见下一节关于如何集成HDInsight到您的应用程序中的说明)
  • 利用 HDInsight 仪表板上的工具。创建您的群集后,群集仪表板中提供了一些功能用来提交工作:
    • 创建工作
    • 交互式控制台
集成 HDInsight到您的应用程序
打开REST API's

为了提供一个简单的接口供客户端应用程序集成,我们努力确保群集上的所有功能都通过一组安全的REST API's暴露给客户端。

  • WebHCatalog— — 元数据管理及远程工作提交、 历史记录和管理
  • Ambari— — 运行中群集的监测
  • Oozie— — 管理和调度 Oozie 工作流

我们目前已经对这些 API 提供了.NET 客户端类库,点击这里下载,你能够自行在其他语言中轻松地使用HTTP 堆栈构建客户端。

通过 ODBC 连接

利用 ODBC 客户端 (说明请参阅这里),就可以轻松地整合现有的应用程序 (例如Excel) 访问存储在HDInsight上 Hive表中的数据。

调试/测试

为了能在Azure上不连接群集都可以工作,我们开发了HDInsight Developer Preview,你可以轻松从 Web Platform Installer上一键安装。您可以利用它通过一小组数据来实验、调试和测试前面提及的所有技术。然后您可以将项目部署到 Azure 并运行Blob Storage上的大数据。若要安装它,只需在Web Platform Installer上搜索HDInsight,或点击这里直接从 web安装。

总结

本文为您编写Hadoop jobs以及集成HDInsight到您的应用程序介绍了多种方法。HDInsight 使您能够用自己选择的用平台和工具进行开发,从Java到.NET 到JavaScript都可以,并且很容易地使用 Windows Azure部署和管理群集。

我们HDInsight 5篇博客系列的最后一篇将探讨如何用Excel分析 HDInsight中的数据。敬请关注 !

文章翻译自:http://blogs.msdn.com/b/windowsazure/archive/2013/03/22/developing-for-hdinsight.aspx

posted @ 2013-04-04 21:55  张善友  阅读(7526)  评论(0编辑  收藏  举报