是否可以在没有HDFS的情况下以伪分布式操作运行Hadoop?

是否可以在没有HDFS的情况下以伪分布式操作运行Hadoop?,hadoop,mapreduce,local-storage,hdfs,Hadoop,Mapreduce,Local Storage,Hdfs,我正在探索在本地系统上运行hadoop应用程序的选项 与许多应用程序一样,前几个版本应该能够在单个节点上运行,只要我们可以使用所有可用的CPU内核(是的,这与)。目前的限制是,在我们的生产系统上,我们有Java1.5,因此我们必须将Hadoop 0.18.3作为最新版本(请参阅)。不幸的是,我们还不能使用 第一种选择是简单地以伪分布式模式运行hadoop。本质上:创建一个完整的hadoop集群,其上的所有内容都在一个节点上运行 这种形式的“缺点”是它还使用了成熟的HDFS。这意味着为了处理输入数

我正在探索在本地系统上运行hadoop应用程序的选项

与许多应用程序一样,前几个版本应该能够在单个节点上运行,只要我们可以使用所有可用的CPU内核(是的,这与)。目前的限制是,在我们的生产系统上,我们有Java1.5,因此我们必须将Hadoop 0.18.3作为最新版本(请参阅)。不幸的是,我们还不能使用

第一种选择是简单地以伪分布式模式运行hadoop。本质上:创建一个完整的hadoop集群,其上的所有内容都在一个节点上运行

这种形式的“缺点”是它还使用了成熟的HDFS。这意味着为了处理输入数据,必须首先将其“上载”到DFS。。。它是本地存储的。因此,这需要额外的输入和输出数据传输时间,并使用额外的磁盘空间。当我们停留在单节点配置上时,我希望避免这两种情况

所以我在想:是否有可能覆盖“fs.hdfs.impl”设置,并将其从“org.apache.hadoop.dfs.DistributedFileSystem”更改为(例如)“org.apache.hadoop.fs.LocalFileSystem”

如果这能起作用,“本地”hadoop集群(只能由一个节点组成)可以使用现有文件,而无需任何额外的存储需求,而且启动速度更快,因为不需要上传文件。我希望仍然有一个作业和任务跟踪器,也许还有一个namenode来控制整个过程

以前有人试过这个吗? 它能起作用吗?或者这个想法离预期用途太远了吗

或者有没有更好的方法来达到同样的效果:没有HDFS的伪分布式操作

谢谢你的见解


编辑2:

这是我为hadoop 0.18.3创建的配置 conf/hadoop-site.xml,使用bajafresh4life提供的答案

<?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>

fs.default.name
文件:///
mapred.job.tracker
本地主机:33301
mapred.job.tracker.http.address
本地主机:33302
作业跟踪器http服务器地址和服务器将侦听的端口。
如果端口为0,则服务器将在空闲端口上启动。
mapred.task.tracker.http.address
本地主机:33303
任务跟踪器http服务器地址和端口。
如果端口为0,则服务器将在空闲端口上启动。

是的,这是可能的,尽管我使用的是0.19.2。我对0.18.3不太熟悉,但我很确定它不会有什么不同

只需确保将
fs.default.name
设置为默认值(即
文件://
),并将
mapred.job.tracker
设置为指向您的jobtracker所在的位置。然后使用bin/start-mapred.sh启动守护进程。您不需要启动namenode或datanodes。此时,您应该能够使用
bin/hadoop jar…


我们使用此配置在一个小型计算机集群上运行Hadoop,该集群使用安装在NFS上的Netapp设备。

是的,谢谢。这很有效。在我做了一些进一步的测试之后,我会发布我的配置。