客戶端提交作業時發生的乙個常見錯誤

2021-06-02 16:32:21 字數 1020 閱讀 4150

(注:這個例子是我拷貝一位網友的)

我可以肯定這個異常絕大多數初學者都遇到過,所以我想說,你們遇到這個尷尬的問題是因為你們不懂hadoop的原始碼。下面我來好好分析這個問題。

首先我想先說乙個這個配置檔案的載入,其實這位網友的conf.addresource("core-site.xml")在configuration conf = new configuration()之後根本就是多此一舉,因為為在configuration

類的靜態**中加入了

另外,在jobconf

類的靜態**中也加入了

也就是說,job的配置檔案已經會預設包含core-default.xml、

core-site.xml、mapred

-default.xml、mapred

-site.xml,這裡還要特別注意的是,如果你不想要這些預設的配置檔案,當你建立時應該這樣

//false表示忽略預設的配置檔案,true表示載入預設的配置檔案,預設情況下是true

configuration conf = new configuration(false);

好,現在就來看看出現上面異常的原因,這個問題主要出在myjob.setjarbyclass(myhadoopcounter.class)這條語句的本質是想獲取myhadoopcounter

所在的jar包絕對路徑,然後把這個絕對路徑配置到作業的maprd.jar項,如果當前project中沒有myhadoopcounter

所在的jar包的話,作業的配置檔案中就沒有maprd.jar項

,當tasktracker在執行該作業的任務時就找不到myhadoopcounter

類了,因此也就出現了上面的異常。

解決辦法:

1.將上面的而是**打成乙個jar包,並將其引入加到當前工程中。

2.在客戶端的配置檔案mapred.site.xml中配置

maprd.jar

myhadoopcounter

所在jar包的

絕對路徑

property>

1 2 4寫乙個 echo 客戶端

客戶端要做的是 跟寫伺服器一樣,我們提供 channelinboundhandler 來處理資料。下面例子,我們用 channelinboundhandler 來處理所有的任務,需要覆蓋三個方法 listing 2.4 channelhandler for the client sharable 1...

乙個基本的SOCKET客戶端程式

標頭檔案 include include 定義常量 define recv buffer size 8192 主函式 int main int argc,char argv 建立套接字 connectsocket socket af inet,tcp ip協議 sock stream,tcp傳輸 i...

客戶端訪問Web Service方法的乙個細節

之前遇到乙個要求,需要能夠取消乙個正在進行中的web service。這也是我第一次遇到這個功能,不過不難,我想。既然asp.net ajax的客戶端與伺服器端通訊完全通過microsoft ajax library的非同步通訊層進行,那麼我們只要得到正在請求web service的sys.net....