Hadoop第一階段複習 3

2021-10-01 23:49:54 字數 3376 閱讀 8354

mapreduce

一.mapreduce是個分布式運算程 序的程式設計框架,是使用者開發「基於hadoop的

資料分析應用」的核心框架。

mapreduce核心功能是將使用者編寫的業務邏輯**和自帶預設元件整合成乙個

完整的分布式運算程式,併發執行在乙個hadoop集群 上。

二.mapreduce優缺點

1.2.1優點

mapreduce籲程式設計

它簡單的實現一些介面,就可以完成乙個分布式程式,這個分布式程式可

以分布到大量廉價的pc機器上執行。也就是說你寫乙個分布式程式, 跟寫

-個簡單的序列程式是一模樣的。 就是因為這個特點使得mapreduce編

程變得非常流行。

2.良好的擴充套件性

當你的計算資源不能得到滿足的時候,你可以通過簡單的增加機器來擴充套件.

它的計算能力。

3.容錯性

mapreduce設計的初衷就是使程式能夠部署在廉價的pc機器上,這就要求

它具有很高的容錯性。比如其中一台機器掛了,它可以把上面的計算任務

轉移到另外乙個節點上執行,不至於這個任務執行失敗,而且這個過程不

需要人工參與,而完全是由hadoop內部完成的。

4.適合pb級以上海量資料的離線處理

可以實現上千臺伺服器集群併發工作,提供資料處理能力。

mapreduce優缺點

1.2.2缺點

1.不擅長實時計算

mapreduce無法像mysql-樣,在毫秒或者秒級內返回結果。

2.不擅長流式計算

流式計算的輸入資料是動態的,而mapreduce的輸入資料集是靜態的,不能

動態變化。這是因為mapreduce自身的設計特點決定了資料來源必須是靜態的。

3.不擅長dag (有向圖)計算

多個應用程式存在依賴關係,後乙個應用程式的輸入為前乙個的輸出。在

這種情況下,mapreduce並不是不能做,而是使用後,每個mapreduce作業

的輸出結果都會寫入到磁碟,會造成大量的磁碟io,導致效能非常的低下。

三.(1)必須實現writable介面

(2)反序列化時,需要反射呼叫空參建構函式,所以必須有空參構造

public flowbean()

(3)重寫序列化方法

@override

public void write(dataoutput out) throws ioexception

(4)重寫反序列化方法

@override

public void readfields(datainput in) throws ioexception

(5)注意反序列化的順序和序列化的順序完全一致

(6)要想把結果顯示在檔案中,需要重寫tostring(),可用」\t」分開,方便後續用。

(7)如果需要將自定義的bean放在key中傳輸,則還需要實現comparable介面,因為mapreduce框中的shuffle過程要求對key必須能排序。詳見後面排序案例。

@override

public int compareto(flowbean o)

四.五.

1)maptask收集我們的map()方法輸出的kv對,放到記憶體緩衝區中

2)從記憶體緩衝區不斷溢位本地磁碟檔案,可能會溢位多個檔案

3)多個溢位檔案會被合併成大的溢位檔案

4)在溢位過程及合併的過程中,都要呼叫partitioner進行分割槽和針對key進行排序

5)reducetask根據自己的分割槽號,去各個maptask機器上取相應的結果分割槽資料

6)reducetask會取到同乙個分割槽的來自不同maptask的結果檔案,reducetask會將這些檔案再進行合併(歸併排序)

7)合併成大檔案後,shuffle的過程也就結束了,後面進入reducetask的邏輯運算過程

(從檔案中取出乙個乙個的鍵值對group,呼叫使用者自定義的reduce()方法)

六.(1)combiner的意義就是對每乙個maptask的輸出進行區域性彙總,以減小網路傳輸量;

(2)並不是任何情況都能夠使用combiner,我們需要在不影響業務的情況下使用它。

七.小檔案的優化無非以下幾種方式:

(1)在資料採集的時候,就將小檔案或小批資料合成大檔案再上傳hdfs。

(2)在業務處理之前,在hdfs.上使用mapreduce程式對小檔案進行合併。

(3)在mapreduce處理時,可採用combinetextinputformat提高效率。

hdfs小檔案解決方案

hadoop archive

是乙個高效地將小檔案放入hdfs塊中的檔案存檔工具,它能夠將多個小

檔案打包成乙個har檔案, 這樣就減少了namenode的記憶體使用。

sequence file

sequence file由一系列的二進位制key alue組成,如果key為檔名,value為

檔案內容,則何以將大批小檔案合併成乙個大檔案。

combinefilelnputformat

combinef ileinputf ommat是一種新的inputformat, 用於將多個檔案合併成一

個單獨的split,另外,它會考慮資料的儲存位置

hdfs小檔案解決方案

4.開啟jvm重用

對於大量小檔案job,可以開啟jvm重用會減少45%執行時間。

jvm重用原理: -個map執行在乙個jvm上, 開啟重用的話,該map在jvm

上執行完畢後,jvm繼續執行其他map.

具體設定: . mapreduce job jvm nuntasks值在10-20之間。 八.

4.3.2 bzip2壓縮

bzip2壓縮

優點:支援split; 具有很高的壓縮率,比gzip壓縮率都高; hadoop本身自

帶,使用方便。

缺點:壓縮解壓速度慢。

應用場景:適合對速度要求不高,但需要較高的壓縮率的時候;或者輸出

之後的資料比較大,處理之後的資料需要壓縮存檔減少磁碟空間並且以後數

據用得比較少的情況;或者對單個很大的文字檔案想壓縮減少儲存空間,同

時又需要支援split,而且相容之前的應用程式的情況。

4.3 lzo壓縮

lzo壓縮

優點:壓縮解壓速度也比較快,合理的壓縮率;支援split, hadoop中最

流行的壓縮格式;可以在l inux系統下安裝lzop命令,使用方便。

缺點:壓縮率比gzip要低-些; hadoop本身不支援,需要安裝;在應用中

對lzo格式的檔案需要做一些特殊處理(為 了支援split需要建索引,還需要指

定inputf ormat為lzo格式)。

應用場景:乙個很大的文字檔案,壓縮之後還大於200m以上的可以考慮,

而且單個檔案越大,lzo優點越越明顯。

python複習第一階段

linux基礎命令 cd 切換目錄和路徑 pwd 檢視當前路徑 clear 清屏 mv 移動 剪下 重新命名檔案 ls 檢視當前資料夾下的內容 ls a 顯示指定目錄下所有子目錄和檔案,包括隱藏檔案 ls l 以列表方式顯示檔案的詳細資訊 touch 建立檔案 mkdir 建立目錄 mkdir p ...

第一階段練習

1 輸入乙個整數,把該整數分別按照八進位制 十進位制 十六進製制形式輸出 include stdio.h main 2 輸入乙個小數 整數部分3位 小數部分5位 把該小數分別按照以下格式輸出 小數部分4位寬度,整個數字8位寬度 小數部分3位寬度,整個數字9位寬度,空白部分使用0填充 include ...

第一階段 2015 12 2016 03

距離上一次寫部落格,大半年就過去了,這半年,都做了些什麼呢,生活又都有些什麼變化呢。2015的下半年是收穫的半年吧。第二,學ios的過程中結識了新的朋友,耳機哥,是很棒的一件事。第三,得到了乙份很美滿的愛情。最終在一起,還好沒錯過。第四,開始正視自己的不足,不再逃避,開始認真製作簡歷,並開始找工作,...