Hadoop DFS 的 CopyFromLocal 命令如何工作



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

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

2) 在上面链接的指南中概述的配置中,技术上是否有两个从站(主站同时充当主站和从站)?这是常见的还是主机器通常只被赋予作业跟踪器/名称节点任务?

这里问了很多问题。

问题2)

  1. 有两台机器
  2. 这些机器配置为HDFS和Map-Reduce。
  3. HDFS配置需要名称节点(主节点)和数据节点(从节点)
  4. Map-reduce需要Jobtracker(主)和Tasktracker(从)
  5. 仅配置了一个名称节点和作业跟踪器,但您可以在两台计算机上使用数据节点和任务跟踪器服务。它不是充当主从的机器。这只是服务。您也可以在包含主服务的计算机上安装从属服务。它适用于简单的开发设置。在大规模部署中,您将主服务专用于单独的计算机。

问题 1 第 2 部分)

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

问题 1 第 1 部分)

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

1)

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

Javadoc 中提供了更多信息org.apache.hadoop.hdfs.DFSClient.DFSOutputStream

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

最新更新