2010-08-23 74 views
8

我正在探索在本地系統上運行hadoop應用程序的選項。是否可以在沒有HDFS的僞分佈式操作中運行Hadoop?

與許多應用程序一樣,只要我們可以使用所有可用的CPU核心(是的,這與this question有關),前幾個版本應該能夠在單個節點上運行。目前的限制是,在我們的生產系統中,我們擁有Java 1.5,因此我們必須將Hadoop 0.18.3作爲最新版本(請參閱this question)。很遺憾,我們目前還不能使用this new feature

第一個選項是簡單地以僞分佈模式運行hadoop。本質上:創建一個完整的hadoop集羣,其中的所有內容都在一個節點上運行。

這種形式的「缺點」是它也使用了一個完整的HDFS。這意味着爲了處理輸入數據,必須首先將其「上載」到本地存儲的DFS上。因此,這需要額外的輸入和輸出數據傳輸時間,並使用額外的磁盤空間。我們希望避免這兩種情況,同時保持單一節點配置。

所以我在想:是否可以重寫「fs.hdfs.impl」設置並將其從「org.apache.hadoop.dfs.DistributedFileSystem」更改爲(例如)「org.apache.hadoop」。 fs.LocalFileSystem「?

如果這樣工作,「本地」hadoop羣集(只能由一個節點組成)可以使用現有文件,而無需任何額外的存儲要求,並且可以更快地啓動,因爲不需要上傳文件。我希望仍然有一個工作和任務跟蹤器,也許還有一個namenode來控制整個事情。

有沒有人試過這個? 它可以工作,或者這個想法遠遠沒有預期的用途?

或者是否有更好的方式獲得相同的效果:沒有HDFS的僞分佈式操作?

感謝您的見解。


編輯2:

這是我使用由bajafresh4life提供的答案爲hadoop的創建0.18.3 CONF/Hadoop的site.xml中的配置。

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 

<!-- Put site-specific property overrides in this file. --> 

<configuration> 
    <property> 
    <name>fs.default.name</name> 
    <value>file:///</value> 
    </property> 

    <property> 
    <name>mapred.job.tracker</name> 
    <value>localhost:33301</value> 
    </property> 

    <property> 
    <name>mapred.job.tracker.http.address</name> 
    <value>localhost:33302</value> 
    <description> 
    The job tracker http server address and port the server will listen on. 
    If the port is 0 then the server will start on a free port. 
    </description> 
    </property> 

    <property> 
    <name>mapred.task.tracker.http.address</name> 
    <value>localhost:33303</value> 
    <description> 
    The task tracker http server address and port. 
    If the port is 0 then the server will start on a free port. 
    </description> 
    </property> 

</configuration> 

回答

6

是的,這是可能的,雖然我使用0.19.2。我對0.18.3不太熟悉,但我確信它不應該有所作爲。

只要確保fs.default.name被設置爲默認(這是file:///)和mapred.job.tracker被設置爲指向您的JobTracker的託管。然後使用bin/start-mapred.sh啓動守護進程。您不需要啓動namenode或datanode。此時,您應該能夠使用bin/hadoop jar ...

運行您的映射/減少作業我們已經使用此配置,通過使用NFS上安裝的Netapp設備在一小羣計算機上運行Hadoop。

+0

是的,謝謝。這很好。我將在完成一些進一步測試後發佈我的配置。 – 2010-08-23 19:53:35

相關問題