什麼是 Azure HDInsight 中的 Apache Hadoop?

Apache Hadoop 是原始的開放原始碼架構,用於在叢集上分散式處理和分析巨量數據集。 Hadoop 生態系統包含相關的軟體和公用程式,其中包括 Apache Hive、Apache HBase、Spark、Kafka 等等。

Azure HDInsight 是企業雲端中完全受控、全方位、開放原始碼的分析服務。 Azure HDInsight 中的 Apache Hadoop 叢集類型可讓您使用 Apache Hadoop 分散式文件系統 (HDFS)Apache Hadoop YARN 資源管理,以及簡單的 MapReduce 程式設計模型,以平行處理和分析批次數據。 HDInsight 中的 Hadoop 叢集與 Azure Blob 儲存體Azure Data Lake 儲存體 Gen1Azure Data Lake 儲存體 Gen2 相容。

若要查看 HDInsight 上可用的 Hadoop 技術堆疊元件,請參閱 HDInsight 可用的元件和版本。 若要深入瞭解 HDInsight 中的 Hadoop,請參閱 HDInsight 的 Azure 功能頁面。

什麼是 MapReduce

Apache Hadoop MapReduce 是一種軟體架構,可用來撰寫處理大量數據的工作。 輸入數據會分割成獨立的區塊。 每個區塊會跨叢集中的節點平行處理。 MapReduce 作業包含兩個函式:

  • 對應程式:取用輸入數據、分析數據(通常是使用篩選和排序作業),併發出 Tuple(索引鍵/值組)

  • 歸納器:取用 Mapper 所發出的 Tuple,並執行摘要作業,以從 Mapper 數據建立較小的合併結果

下圖說明基本字數 MapReduce 作業範例:

HDI.WordCountDiagram.

此作業的輸出是文字中每個單字發生次數的計數。

  • 對應程式會從輸入文字取得每一行做為輸入,並將它分成單字。 它會在每次出現單字後面接著 1 時發出索引鍵/值組。 輸出會在傳送至歸納器之前排序。
  • 歸納器會為每個單一單字加總這些個別計數,併發出單一索引鍵/值組,其中包含單一字,後面接著其出現次數的總和。

MapReduce 可以用各種語言實作。 Java 是最常見的實作,並用於本檔中的示範用途。

開發語言

以 Java 和 Java 虛擬機為基礎的語言或架構可以直接以 MapReduce 作業的形式執行。 本檔中使用的範例是 Java MapReduce 應用程式。 非 Java 語言,例如 C#、Python 或獨立可執行文件,必須使用 Hadoop 串流

Hadoop 串流會透過 STDIN 和 STDOUT 與對應器和歸納器進行通訊。 對應器和歸納器會一次從 STDIN 讀取一行數據,並將輸出寫入 STDOUT。 對應器和歸納器所讀取或發出的每一行都必須是索引鍵/值組的格式,並以製表符分隔:

[key]\t[value]

如需詳細資訊,請參閱 Hadoop 串流

如需搭配 HDInsight 使用 Hadoop 串流的範例,請參閱下列檔:

我要從何處開始

下一步