代码之家  ›  专栏  ›  技术社区  ›  Niels Basjes

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

  •  8
  • Niels Basjes  · 技术社区  · 16 年前

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

    与许多应用程序一样,只要我们能够使用所有可用的CPU核,那么最初的几个版本应该能够在单个节点上运行(是的,这与 this question this question this new feature

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

    所以我在想:有没有可能fs.hdfs.impl文件“设置和更改”org.apache.hadoop下载.dfs.DistributedFileSystem文件系统“进入(例如)”org.apache.hadoop下载.fs.LocalFileSystem文件系统"?

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

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

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


    编辑2:

    <?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>
    
    1 回复  |  直到 9 年前
        1
  •  6
  •   bajafresh4life    16 年前

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

    只要确保 fs.default.name 设置为默认值(即 file:/// ),和 mapred.job.tracker 设置为指向jobtracker的宿主位置。然后使用bin/start启动守护程序-地图.sh. 您不需要启动namenode或datanodes。此时,您应该能够使用 bin/hadoop jar ...