maven打包
MapReduce是一個分布式運算程序的編程框架,是用戶開發“基于Hadoop的數據分析應用”的核心框架。
MapReduce核心功能是將用戶編寫的業務邏輯代碼和自帶默認組件整合成一個完整的分布式運算程序(例如:jar包),并發運行在一個Hadoop集群上。
(二)設置編譯版本
我們集群上安裝的java環境是1.8的,那么我們生成的代碼也必須是這個版本的,否則,就會無法運行。
(三)修改代碼,設置執行環境和文件路徑
我們集群上安裝的java環境是1.8的,那么我們生成的代碼也必須是這個版本的,否則,就會無法運行。
(四)上傳到節點運行
使用finalshell上到任意節點,例如hadoop100上的/opt下,。
然后通過命令來執行執行WordCount程序,注意要寫Driver類的全名
(五)修改執行參數
在上面的代碼中,我們的程序只能完成固定目錄下的功能。現在希望它能處理不同的目錄。
修改代碼,讓程序能指定要執行的輸入目錄和要保存結果的輸出目錄。
修改driver類的代碼,更新輸入和輸入路徑。
MapReduce無法像MySQL一樣,在毫秒或者秒級內返回結果。它的任務會跑好幾個小時,好幾天。
2)不擅長流式計算
流式計算的輸入數據是動態的,會一條一條的過來,是動態產生的,而MapReduce的輸入數據集是靜態的,不能動態變化。這是因為MapReduce自身的設計特點決定了數據源必須是靜態的。
3)不擅長DAG(有向無環圖)計算
多個應用程序存在依賴關系,后一個應用程序的輸入為前一個的輸出。在這種情況下,MapReduce并不是不能做,而是使用后,每個MapReduce作業的輸出結果都會寫入到磁盤,會造成大量的磁盤IO,導致性能非常的低下。