2010-08-23 52 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

相关问题