天天看點

使用 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 站點​​上的快速入門。

  • ​​.NET Map/Reduce​​
  • ​​LINQ to Hive​​

運作工作

想要運作任意一項工作,有如下幾個方法:

  • 直接從頭節點運作它們。若要執行此操作,遠端連接配接到您的群集,打開 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部署和管理群集。