Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2023-03-29, 12:45

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 5 篇文章 ] 
發表人 內容
 文章主題 : Hadoop streaming mapper and reducer
文章發表於 : 2017-04-15, 17:19 
離線

註冊時間: 2012-11-12, 14:12
文章: 4
Hi

最近在學寫mapper and reducer 程式,使用python3 來寫,但出現一個疑問,想請教,如下:

為什麼mapper and reducer 程式要分開來寫跟寫在一起同一個檔案裡面的差異?如果寫在同一個mapper.py檔案,這樣hadoop streaming,只能下 -mapper 選項,對於運算結果沒有差異,這是我試的結果,還有其他見解嗎?這樣hadoop 系統在執行只會使用到mapper 功能,不會用到reducer功能嗎?因為我在同一個檔案做完所有工作,這樣運算會比較慢嗎?


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop streaming mapper and reducer
文章發表於 : 2017-04-16, 23:27 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
dearjack 寫:
Hi
最近在學寫mapper and reducer 程式,使用python3 來寫,但出現一個疑問,想請教,如下:
為什麼mapper and reducer 程式要分開來寫跟寫在一起同一個檔案裡面的差異?如果寫在同一個mapper.py檔案,這樣hadoop streaming,只能下 -mapper 選項,對於運算結果沒有差異,這是我試的結果,還有其他見解嗎?這樣hadoop 系統在執行只會使用到mapper 功能,不會用到reducer功能嗎?因為我在同一個檔案做完所有工作,這樣運算會比較慢嗎?


hadoop streaming 的 mapper 與 reducer 的限制是用 STDIN 當輸入,用 STDOUT 當輸出。
因此 -mapper 後面接的執行檔縱使裡面也包含了其他 reduce 函數,那 main 函數該怎麼切換 map 或 reduce 函數呢?

只下 -mapper 不用 -reducer 的意思是使用 identity function ( f(N) = N ) 當 reducer
一樣會額外加跑 sort by key ,結果會是根據 key 排序過的結果。
除非額外再加上 -D mapred.reduce.tasks=0 參數
https://hadoop.apache.org/docs/r1.2.1/s ... -Only+Jobs

至於運算的速度,就是一個常見的迷思。快與慢牽涉到你跑 Local Mode 還是 Dsitrbuted Mode
牽涉到資料量的大小,資料搬運的時間是否遠小於運算的時間。因此不會有標準答案說會比較快或比較慢。
學理上請參考 阿姆達爾定律(Amdahl‘s law)
https://zh.wikipedia.org/wiki/%E9%98%BF ... A%E5%BE%8B

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop streaming mapper and reducer
文章發表於 : 2017-04-18, 08:51 
離線

註冊時間: 2012-11-12, 14:12
文章: 4
謝謝,Jazz

您說mapper及reducer函數,是python3的標準函數庫的嗎?因為我在寫,mapper and reducer , 都是自己寫,沒有使用標準函數功能?


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop streaming mapper and reducer
文章發表於 : 2017-04-23, 21:23 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
dearjack 寫:
謝謝,Jazz
您說mapper及reducer函數,是python3的標準函數庫的嗎?因為我在寫,mapper and reducer , 都是自己寫,沒有使用標準函數功能?


不是,Hadoop Streaming 可以指定任意「執行檔」當作 mapper 或 reducer 函數,只要符合 STDIN 當輸入,STDOUT 當輸出即可。
例如,http://trac.3du.me/cloud/wiki/Streaming 寫了 Shell 與 PHP 的範例。
所以不管你用 Python2 還 Python3,只要該函數符合用 STDIN 當輸入,STDOUT 當輸出就可以餵給 Hadoop Streaming。
參考簡報 - http://trac.3du.me/cloud/raw-attachment/wiki/III150110/part-6.pdf

實際上 Hadoop Streaming 還是用 Java 執行,只是透過類似 Python 的 system 指令去執行 Shell/PHP/Python 等執行檔。

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop streaming mapper and reducer
文章發表於 : 2017-05-08, 09:33 
離線

註冊時間: 2012-11-12, 14:12
文章: 4
謝謝,Jazz

jazz 寫:
dearjack 寫:
謝謝,Jazz
您說mapper及reducer函數,是python3的標準函數庫的嗎?因為我在寫,mapper and reducer , 都是自己寫,沒有使用標準函數功能?


不是,Hadoop Streaming 可以指定任意「執行檔」當作 mapper 或 reducer 函數,只要符合 STDIN 當輸入,STDOUT 當輸出即可。
例如,http://trac.3du.me/cloud/wiki/Streaming 寫了 Shell 與 PHP 的範例。
所以不管你用 Python2 還 Python3,只要該函數符合用 STDIN 當輸入,STDOUT 當輸出就可以餵給 Hadoop Streaming。
參考簡報 - http://trac.3du.me/cloud/raw-attachment/wiki/III150110/part-6.pdf

實際上 Hadoop Streaming 還是用 Java 執行,只是透過類似 Python 的 system 指令去執行 Shell/PHP/Python 等執行檔。

- Jazz


回頂端
 個人資料 E-mail  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 5 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 3 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作