Hadoop DFS的CopyFromLocal命令如何工作?

时间:2012-07-03 21:51:16

标签: hadoop hdfs

我对如何设置Hadoop分布式文件系统以及我的特定设置如何影响它有点困惑。我使用本指南在虚拟盒上使用两个虚拟机来设置它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任务?

2 个答案:

答案 0 :(得分:1)

这里有很多问题。

问题2)

  1. 有两台机器
  2. 这些机器配置为HDFS和Map-Reduce。
  3. HDFS配置需要Namenode(主设备)和Datanodes(从设备)
  4. Map-reduce需要Jobtracker(master)和Tasktracker(Slave)
  5. 只配置了一个Namenode和Jobtracker,但您可以在两台计算机上安装Datanode和Tasktracker服务。它不是充当主人和奴隶的机器。这只是服务。您还可以在包含主服务的计算机上安装从属服务。这对简单的开发设置很有用。在大规模部署中,您将主服务专用于单独的计算机。
  6. 问题1第2部分)

    1. 创建文件块并以复制方式存储在多个数据节点上是HDFS作业。你不必担心它。
    2. 问题1第1部分)

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

答案 1 :(得分:0)

1)

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

Javadoc中有org.apache.hadoop.hdfs.DFSClient.DFSOutputStream

的更多信息

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