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


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

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 最常用於已存儲數據的批處理。

  • 什么是 MapReduce

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

  • 什么是 Java

這個真有必要解釋?

通過 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 命令,為項目生成基架。

 

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

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

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

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

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

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

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

 

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

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

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

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

 

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

 

3、保存 pom.xml 文件。

 

3創建 MapReduce 應用程序

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

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

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

3、保存文件。

 

4構建應用程序

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

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

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

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

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

 

5上傳 jar 運行 MapReduce 作業

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

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

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

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

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

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

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

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

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

搞定收工!

我有一條不成熟的小建議

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

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

立即訪問http://market.azure.cn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM