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

标签 hadoop mapreduce local-storage hdfs

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

与许多应用程序一样,前几个版本应该能够在单个节点上运行,只要我们可以使用所有可用的 CPU 内核(是的,这与 this question 相关)。当前的限制是在我们的生产系统上我们有 Java 1.5,因此我们绑定(bind)到 Hadoop 0.18.3 作为最新版本(参见 this question)。所以很遗憾我们不能使用 this new feature还没有。

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

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

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

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

有没有人试过这个? 它可行吗?还是这个想法与预期用途相去甚远?

或者是否有更好的方法来获得相同的效果:没有 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>

最佳答案

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

只需确保 fs.default.name 设置为默认值(即 file:///),并且 mapred.job.tracker 设置为指向托管 jobtracker 的位置。然后使用 bin/start-mapred.sh 启动你的守护进程。您不需要启动名称节点或数据节点。此时,您应该能够使用 bin/hadoop jar ...

运行您的 map/reduce 作业

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

关于hadoop - 在没有HDFS的情况下是否可以在伪分布式运行中运行Hadoop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3546025/

相关文章:

sql - Hive sql 结构不匹配

JavaScript INDEX_SIZE_ERR : DOM Exception 1

apache-spark - Hadoop 3和spark.sql:与HiveWarehouseSession和spark.sql一起使用

hadoop - 可以使用 Map Reduce 和 Hadoop 并行处理批处理作业吗?

java - 在hadoop中进行mapreducing后,part-r-00000和成功文件为0 kb

java - Hadoop MapReduce输出最大

javascript - 保留用户脚本中设置的变量

javascript - angularjs本地存储无法正常工作?

csv - hadoop如何读取输入文件?

mysql - 如何使用nifi CaptureChangeMySQL?