同樣的Java,完全不一樣的HDInsight大數據開發體驗

大數據的熱潮一直居高不下,每個人都在談。你也許不知道,早些年這個領域可是有個非常「惹眼球」的段子:

同樣的Java,完全不一樣的HDInsight大數據開發體驗


同樣的Java,完全不一樣的HDInsight大數據開發體驗

同樣的Java,完全不一樣的HDInsight大數據開發體驗

簡單翻譯一下:大數據就像青少年之間的【敏感詞】:每個人都在談,可沒人真正知道該怎麼做,但每個人都認為其他人正在做,所以所有人都說自己也正在做……反正前美國麻省理工大學(MIT)教授,現美國杜克大學(Duke University)教授 Dan Ariely 是這麼說的

同樣的Java,完全不一樣的HDInsight大數據開發體驗

那麼,具體該怎麼做呢?今天,我要教教大家如何運用 Java 語言,為 HDInsight 上的 Hadoop 開發一個 MapReduce 程序,藉此玩轉大數據。


1首先開始科普

  • 什麼是 HDInsight

Azure HDInsight 是 Hortonworks Data Platform (HDP) 提供的 Hadoop 組件的雲發行版,適用於對計算機集群上的大數據集進行分佈式處理和分析。目前 HDInsight 可提供以下集群類型:Apache Hadoop、Apache Spark、Apache HBase、Apache Storm、Apache 交互式 Hive(預覽版),以及其他包含腳本操作的自定義集群。

  • 什麼是 Hadoop

Hadoop 技術堆棧包括相關的軟件和實用程序(Apache Hive、HBase、Spark 等),通常包含 Hadoop 分佈式文件系統 (HDFS)、適用於作業計劃和資源管理的 YARN、適用於並行處理的 MapReduce。Hadoop 最常用於已存儲數據的批處理。

同樣的Java,完全不一樣的HDInsight大數據開發體驗


  • 什麼是 MapReduce

MapReduce 是一箇舊軟件框架,用於編寫並行批量處理大數據集的應用程序。MapReduce 作業將分割大型數據集,並將數據組織成鍵值對進行處理。MapReduce作業在 YARN 上運行。

  • 什麼是 Java
同樣的Java,完全不一樣的HDInsight大數據開發體驗

這個真有必要解釋?

同樣的Java,完全不一樣的HDInsight大數據開發體驗

通過 Azure HDInsight 服務使用 Hadoop,可以獲得很多便利,例如:減少了設置和配置工作,提高了可用性和可靠性,可在不中斷作業的情況下進行動態縮放,可靈活使用組件更新和當前版本,並且能與其他 Azure 服務(包括 Web 應用和 SQL 數據庫)集成。

機智的你理解這些概念了麼,接下來我們一起來用 Java 開發一個 MapReduce 程序,然後通過 HDInsight 服務運行吧。


2前期準備

首先你需要準備好 Java JDK 8 或更高版本以及 Apache Maven,隨後按照下列方式配置開發環境:

1

設置環境變量

請在安裝 Java 和 JDK 時設置以下環境變量(同時請注意檢查這些環境變量是否已經存在並且包含正確的值):

  • JAVA_HOME -應該指向已安裝 Java 運行時環境 (JRE)的目錄。例如在macOS、Unix 或 Linux 系統上,值應該類似於 /usr/lib/jvm/java-7-oracle;在Windows 中,值類似於 c:\\ProgramFiles (x86)\\Java\\jre1.7。
  • PATH - 應該包含以下路徑:

JAVA_HOME(或等效路徑)

JAVA_HOME\\bin(或等效路徑)

安裝 Maven 的目錄

2

創建 Maven 項目


1、在開發環境中,通過中斷會話或命令行將目錄更改為要存儲此項目的位置。

2、使用隨同 Maven 一起安裝的 mvn 命令,為項目生成基架。

同樣的Java,完全不一樣的HDInsight大數據開發體驗

此命令將使用 artifactID 參數指定的名稱(此示例中為 wordcountjava)創建目錄。此目錄包含以下項:

pom.xml - 項目對象模型 (POM),其中包含用於生成項目的信息和配置詳細信息。

src - 包含應用程序的目錄。

3、刪除 src/test/java/org/apache/hadoop/examples/apptest.java 文件,此示例不使用該文件。


3

添加依賴項

1、編輯 pom.xml 文件,並在<dependencies>部分中添加以下文本:/<dependencies>

同樣的Java,完全不一樣的HDInsight大數據開發體驗

這會定義具有特定版本(在<version> 中列出)的庫(在<artifactid> 中列出)。編譯時會從默認 Maven 存儲庫下載這些依賴項,此外也可使用 Maven 存儲庫搜索來查看詳細信息。/<artifactid>/<version>

<scope>provided/<scope>會告知 Maven 這些依賴項不應與此應用程序一起打包,因為它們在運行時由 HDInsight 集群提供。


注意:使用的版本應與集群上存在的 Hadoop 版本匹配。有關版本的詳細信息,請參閱 HDInsight 組件版本控制文檔。

2、將以下內容添加到 pom.xml 文件中。 此文本必須位於文件中的 <project>.../<project>標記內;例如 和 之間。

同樣的Java,完全不一樣的HDInsight大數據開發體驗

第一個插件配置 Maven Shade Plugin,用於生成 uberjar(有時稱為 fatjar),其中包含應用程序所需的依賴項。 它還可以防止在 jar 包中複製許可證,複製許可證在某些系統中可能會導致問題。

第二個插件配置目標 Java 版本。


注意:HDInsight 3.4 及更早版本使用 Java 7,HDInsight3.5 使用 Java 8。


3、保存 pom.xml 文件。


同樣的Java,完全不一樣的HDInsight大數據開發體驗


3創建 MapReduce 應用程序

1、轉到 wordcountjava/src/main/java/org/apache/hadoop/examples 目錄,並將App.java 文件重命名為 WordCount.java。

2、在文本編輯器中打開 WordCount.java 文件,然後將其內容替換為以下文本:

同樣的Java,完全不一樣的HDInsight大數據開發體驗

請注意,包名稱為 org.apache.hadoop.examples,類名稱為 WordCount。提交MapReduce 作業時需要使用這些名稱。

3、保存文件。


4構建應用程序

1、如果尚未到達此目錄,請更改為 wordcountjava 目錄。

2、使用以下命令生成包含該應用程序的 JAR 文件:


同樣的Java,完全不一樣的HDInsight大數據開發體驗

此命令將清除任何以前構建的項目,下載任何尚未安裝的依賴項,然後生成並打包應用程序。

3、命令完成後,wordcountjava/target 目錄將包含一個名為 wordcountjava-1.0-SNAPSHOT.jar 的文件。

注意:wordcountjava-1.0-SNAPSHOT.jar 文件是一種 uberjar,其中不僅包含 WordCount 作業,還包含作業在運行時需要的依賴項。


5上傳 jar 運行 MapReduce 作業

使用以下命令將該jar 文件上傳到 HDInsight 頭節點:

同樣的Java,完全不一樣的HDInsight大數據開發體驗

USERNAME 替換為集群的 SSH 用戶名,將 CLUSTERNAME 替換為 HDInsight 集群名稱。

此命令會將文件從本地系統複製到頭節點。

隨後通過下列步驟運行這個 MapReduce 作業:

1、使用 SSH 連接到 HDInsight。詳細信息請參閱將 SSH 與 HDInsight 配合使用。

2、在 SSH 會話中,使用以下命令運行 MapReduce 應用程序:

同樣的Java,完全不一樣的HDInsight大數據開發體驗

此命令將啟動 WordCountMapReduce 應用程序。輸入文件是/example/data/gutenberg/davinci.txt,輸出目錄是 /example/data/wordcountout。輸入文件和輸出均存儲到集群的默認存儲中。

3、作業完成後,請使用以下命令查看結果:

同樣的Java,完全不一樣的HDInsight大數據開發體驗

用戶會收到單詞和計數列表,其包含的值類似於以下文本:

同樣的Java,完全不一樣的HDInsight大數據開發體驗

搞定收工!

我有一條不成熟的小建議

你看,使用 Java語言開發 MapReduce 程序也不是很難。

如果你更喜歡用其他語言,或者希望開發其他類型的 HDInsight 應用,那麼這些資源應該能提供一些幫助:

  • 開發 C# 流式處理 MapReduce 程序
  • 開發 Scalding MapReduce 作業
  • 使用 HDInsight 工具創建 Spark 應用
  • 開發 Python 流式處理程序

最後的最後,這篇教程大家看著可還滿意?想看其他任務的教程,或者想要學習瞭解某項 Azure 服務的話,你知道該怎麼辦的!

最後說一下,想要學習大數據的限時領取免費資料及課程

領取方法:

還是那個萬年不變的老規矩

1.評論文章,沒字數限制,一個字都行!

3.私信小編:“大數據開發教程”即可!

謝謝大家,祝大家學習愉快!(拿到教程後一定要好好學習,多練習哦!)


分享到:


相關文章: