2011-12-20 93 views
4

我最近在java中編寫了幾個map/reduce程序。但我也知道像php這樣的腳本語言也可以使用。但是,大多數人都推薦java或python。我目前在php工作。所以我想知道哪種語言更適合地圖/減少程序開發?Hadoop Map/Reduce程序使用哪種語言? Java還是PHP?

用於map/reduce實現的php的一個主要缺點是,它不是多線程的。另外,hadoop有專門用java編寫的類,接口和方法的廣泛框架,這些php程序無法使用。而且,php的設計並不是爲了處理繁重的數據處理任務。因此,任何人都可以在廣泛的角度告訴我哪一個選擇作爲地圖/減少實施的武器選擇?

+2

使用你可以使用的東西。我喜歡Python,所以我會使用Python。你喜歡PHP,所以使用PHP。這是一個偏好問題。 – Blender 2011-12-20 08:02:33

+0

好的,你可能是對的。但是有什麼明確的好或壞的使用PHP來完成這項任務?因爲,現在爲了簡化編程,如果我選擇php,從長遠來看,不應該發生PHP或類似問題的可擴展性問題。你有什麼想法嗎?你能否向我提供任何有用的鏈接? – Shades88 2011-12-20 08:50:08

+0

java vs python學習hadoop/mapreduce? – tilaprimera 2014-07-20 09:26:19

回答

7

shanthanu,你的第一個問題是

Q),其腳本語言是好的Hadoop的? A)大多數腳本語言如php,python,perl,ruby bash都不錯。任何能夠從標準輸入讀取,寫入sdtout和解析選項卡以及換行字符的語言都可以工作:Hadoop Streaming只是將鍵值對的字符串表示與選項卡連接到一個任意程序,該程序必須在每個任務跟蹤器節點上可執行。

在大多數用於設置hadoop集羣的linux發行版中,python,bash,ruby,perl ...已經安裝,但是沒有任何東西可以阻止您爲自己喜歡的腳本或編譯的編程語言彙總自己的執行環境。

Q)PHP不是多線程的?

答:是的,但是,我們可以通過這些方法使PHP成爲多線程。例如,使用:pnctl_fork()(但是,這在窗口中不起作用)

在使用hadoop編寫腳本語言之前,應該始終牢記的問題不是「哪種腳本語言?因爲任何事都可以。

但是,java和腳本語言的區別在於,「當我們使用腳本語言時,子節點的心跳不會被髮送到父節點」。

+3

當您說「當我們使用腳本語言時,子節點的心跳不會被髮送到父節點」,您能澄清一下您的意思嗎?你能給這個參考嗎? – emisilva 2016-04-12 23:47:31