如何使用eclipse除錯Hadoop作業

2021-09-01 22:58:50 字數 2720 閱讀 4855

[b][color=green][size=large]使用eclipse來除錯hadoop作業是非常簡潔方便的,散仙以前也有用eclipse開發過hadoop程式,但是一直沒有深入了解eclipse除錯的一些模式,有些時候也會出一些莫名奇妙的異常,最常見的就是下面這個[/size][/color][/b]

其實這並不是程式的問題,而是對eclipse的除錯模式不夠了解的問題,eclipse上執行hadoop總的來說有2種模式,第一種就是local模式,也叫本地模式,第二種就是我們正式的線上集群模式,當執行本地模式的時候,程式並不會被提交到hadoop集群上,而是基於單機的模式跑的,但是單機的模式,執行的結果仍在是儲存在hdfs上的,只不過沒有利用hadoop集群的資源,單機的模式不要提交jar包到hadoop集群上,因此一般我們使用local來測試我們的mr程式是否能夠正常執行,

下面我們來看下,基於local模式跑的乙個排序作業:

[/size][/color][/b]

排序資料:

a 784

b 12

c -11

dd 99999

[b][color=olive][size=large]程式原始碼:[/size][/color][/b]

[b][color=olive][size=large]列印結果如下:[/size][/color][/b]

[b][color=olive][size=large]排序結果如下:[/size][/color][/b]

dd	99999

a 784

b 12

c -11

[b][color=green][size=large]單機模式除錯通過之後,我們就可以考慮採用hadoop集群的模式來跑,這時候有2種方式,可以來完成這件事,第一是,為了方便將整個專案打成乙個jar包,上傳到linux上,然後執行shell命令:

bin/hadoop jar tt.jar com.qin.sort.testsort

來進行測試,注意,散仙是為了方便,路徑是寫死在程式裡面所以後面不用輸入,輸入和輸出路徑,正式的開發,為了靈活性,一般會通過外部傳產來指定輸入和輸出路徑。

第二種方式,也比較方便,直接在eclipse中提交到hadoop集群作業中,不過即使是使用eclipse來提交作業,還是需要將整個專案打成乙個jar包,只不過這時是eclipse幫我們提交作業的,這樣我們就可以win平台上直接提交執行hadoop作業了,但是主流的還是使用上傳jar包的方式。關於把整個專案打成乙個jar包,散仙在後面會上傳乙個ant指令碼,直接執行它就可以了,這樣就可以把有依賴關係的類打在一起,把一整個專案做為乙個整體,在hadoop上,只需要指定jar,指定類的全名稱,和輸入,輸出路徑即可。ant的指令碼內容如下:

[/size][/color][/b]

[b][color=olive][size=large]執行上面的這個ant指令碼之後,我們的專案就會被打成乙個jar包,截圖如下:[/size][/color][/b]

[img]

[b][color=olive][size=large]jar包有了之後,我們先測試在eclipse上如何把作業提交到hadoop集群上,只要把main方面的**,稍加改動即可:[/size][/color][/b]

[b][color=olive][size=large]執行程式,輸出,如下:[/size][/color][/b]

[b][color=green][size=large]我們可以看出,執行正常,排序的內容如下:[/size]

[/color][/b]

dd	99999

a 784

b 12

c -11

[b][color=green][size=large]結果和local模式下的一樣,還有乙個與local模式不同的地方是,我們可以在的任務頁面上找到剛才執行的任務狀況,這一點在local模式下執行程式,是沒有的。/size][/color][/b]

[img]

[b][color=olive][size=large]最後,散仙再來看下,如何將jar包,上傳到linux提交作業到hadoop集群上。剛才,我們已經把jar給打好了,現在只需上傳到linux上即可:[/size][/color][/b]

[img]

[b][color=green][size=large]然後開始執行shell命令執行程式:[/size][/color]

[/b]

[img]

[b][color=olive][size=large]到此,我們已經完美的執行成功,最後一點需要注意的是,在執行排序任務時,如果出現異常:[/size][/color][/b]

[b][size=large][color=green]這個異常的出現,多半是因為,我們沒有指定輸出的key,或者value,或者指定的型別不一致,導致,我們只需要正確的設定輸出的key或者value的型別即可.[/color][/size][/b]

job.setoutputkeyclass(intwritable.class);

job.setoutputvalueclass(text.class);

[b][color=green][size=large]設定完後,就可以正常測試執行了。[/size][/color][/b]

使用Eclipse對FFMpeg進行除錯

在研究 的過程中,除錯執行是一種非常有效的方法。我們常用的visual studio建立的工程可以很方便地對程式進行除錯執行。但是對於ffmpeg這樣的工程,想要進行單步除錯就沒這麼容易了。如果一定要除錯執行ffmpeg,最好按照我們之前博文的描述編譯完成之後,放在eclipse中進行除錯執行。在開...

使用Eclipse對FFmpeg進行除錯

在研究 的過程中,除錯執行是一種非常有效的方法。我們常用的visual studio建立的工程可以很方便地對程式進行除錯執行。但是對於ffmpeg這樣的工程,想要進行單步除錯就沒這麼容易了。如果一定要除錯執行ffmpeg,最好按照我們之前博文的描述編譯完成之後,放在eclipse中進行除錯執行。在開...

如何使用eclipse打包

作為乙個小白,經常使用eclipse開發,想引入什麼依賴直接用buildpath也能實現。每天使用eclipse開發除錯已經成為習慣,需要什麼jar包的時候只需要configure build path引入乙個即刻輕鬆搞定,但突然有一天當我需要打乙個jar包的時候我卻發現自己還不會。當時的情況是醬紫...