2

我对如何设置 Hadoop 分布式文件系统以及我的特定设置如何影响它有点困惑。我使用本指南在 Virtual Box 上使用两个虚拟机设置http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/并运行了示例(只是一个带有 txt 文件输入的简单字数)。到目前为止,我知道 datanode 管理和检索其节点上的文件,而 tasktracker 分析数据。

1) 当您使用命令 -copyFromLocal 时,您是否正在将文件/输入复制到 HDFS?Hadoop是否知道如何在slave/master之间划分信息,它是如何做到的?

2)在上面链接的指南中概述的配置中,技术上是否有两个从设备(主设备既作为主设备又作为从设备)?这是常见的还是主机通常只给jobtracker/namenode任务?

4

2 回答 2

1

这里有很多问题。

问题2)

  1. 有两台机器
  2. 这些机器针对 HDFS 和 Map-Reduce 进行了配置。
  3. HDFS 配置需要 Namenode (master) 和 Datanodes (Slave)
  4. Map-reduce 需要 Jobtracker (master) 和 Tasktracker (Slave)
  5. 只配置了一个 Namenode 和 Jobtracker,但您可以在两台机器上拥有 Datanode 和 Tasktracker 服务。不是机器充当主机和从机。这只是服务。您还可以在包含主服务的机器上安装从服务。它适用于简单的开发设置。在大规模部署中,您将主服务专用于不同的机器。

问题 1 第 2 部分)

  1. 以复制的方式创建文件块并存储在多个数据节点上是 HDFS 的工作。你不必担心。

问题 1 第 1 部分)

  1. Hadoop 文件操作的模式类似于典型的 Unix 文件操作 - ls、put 等
  2. Hadoop fs -put localefile /data/somefile --> 将本地文件复制到路径 /data/somefile 的 HDFS
  3. 使用 put 选项,您还可以从标准输入读取并写入 HDFS 文件
  4. copyFromLocal 类似于 put 选项,只是行为仅限于从本地文件系统复制到 HDFS
  5. 请参阅:http ://hadoop.apache.org/common/docs/r0.20.0/hdfs_shell.html#copyFromLocal
于 2012-07-03T22:59:52.643 回答
0

1)

  • 客户端连接到名称节点以在 HDFS 中注册一个新文件。
  • 名称节点创建有关文件的一些元数据(使用默认块大小或文件的配置值)
  • 对于要写入的每个数据块,客户端查询名称节点以获取块 ID 和目标数据节点列表以将数据写入。然后将数据写入每个数据节点。

Javadoc 中有更多信息org.apache.hadoop.hdfs.DFSClient.DFSOutputStream

2) 一些生产系统将被配置为使主节点成为自己的专用节点(允许最大可能的内存分配,并避免 CPU 争用),但如果您有一个较小的集群,那么一个包含名称节点和数据节点的节点可以接受

于 2012-07-03T23:16:00.707 回答