hadoop 中的文件系统

Posted

技术标签:

【中文标题】hadoop 中的文件系统【英文标题】:File system in hadoop 【发布时间】:2016-06-01 11:36:20 【问题描述】:

最近开始学习hadoop多集群

文件系统如何在 hadoop 中工作。

例如。如果我有一个包含完整农民详细信息的 test.txt 文件。 我是否需要在主 HDFS 服务器或从服务器中上传文件。

【问题讨论】:

【参考方案1】:

要了解 Hadoop 文件系统的工作原理,请参阅Hadoop:权威指南

一书

暂时,要将文件加载到HDFS,只需要从集群的edgenode运行-put-copyFromLocal命令(意思是你可以从哪里运行hadoop命令),其余的将被占用由 Hadoop 框架处理。 你的命令可能看起来像

hadoop fs设置

$ hadoop fs -copyFromLocal /home/user1/farmer_details.txt /user/user1

$ hadoop fs -put /home/user1/farmer_details.txt /user/user1

你也可以试试hdfs dfs设置

$ hdfs dfs -copyFromLocal /home/user1/farmer_details.txt /user/user1

$ hdfs dfs -put /home/user1/farmer_details.txt /user/user1

其中/home/user1/farmer_details.txt 是本地文件系统中的源位置,/user/user1 是 hadoop 文件系统中的目标位置。

要验证上传的文件,可以运行命令

$ hadoop fs -ls /user/user1

你应该得到/user/user1/farmer_details.txt文件。

【讨论】:

非常感谢您的回复。您已经提到 /user/user1 是 hadoop 文件系统中的目标位置。这个 /user/user1 路径在哪里?无论是主服务器还是从服务器。 您只需使用 Hadoop fs - mkdir 创建此目录。它的元数据将存储在 Namenode 上,即。主节点。当您加载数据时,数据将存储在 Datanode 上,即。从节点。 非常感谢您的回答。因此文件将存储在 Datanode(Slave) 中,并且可以使用主服务器中的 Hadoop 进行访问。我现在知道了。我可以要您的电子邮件 ID:我仍然对 hadoop 有很多疑问【参考方案2】:

首先,您需要将文件:text.txt 上传到集群的一个节点(可以是主服务器或从服务器),例如,上传到/tmp 文件夹,您得到:/tmp/text.txt,然后使用命令:

# hadoop fs -put /tmp/text.txt /tmp

然后使用命令:

# hadoop fs -ls /tmp

你会发现文件:text.txt 已经在那个 hdfs 文件夹中:/tmp

【讨论】:

你不能目录目录 "hadoop fs -put /tmp/text.txt /tmp" 假设如果我在数据节点 1(从属服务器)中创建一个 tmp 文件夹,如何在主服务器中访问它,例如 /tmp/text .txt 以及 /tmp 文件夹在哪里,无论是在主服务器还是从服务器中。如果是 HDFS,那么整个 test.txt 文件是上传到主服务器还是该文件的元数据。请更清楚地解释一下这个 是的,请将 cat 改为 ls 的那个可以列出文件夹内容的命令。文件的元数据存储在namenode服务器中,文件的内容存储在从服务器中。在主服务器或namenode服务器中,您仍然可以使用Hadoop命令访问从服务器中的文件

以上是关于hadoop 中的文件系统的主要内容,如果未能解决你的问题,请参考以下文章

直接使用FileSystem以标准输出格式显示hadoop文件系统中的文件

Hadoop文件系统中目录的路径是啥?

Hadoop与分布式开发

hadoop文件系统上的小文件合并-Hadoop Archives

请问hadoop的hdfs文件系统和本地windows文件系统或linux文件系统是啥关系啊,谢谢

hadoop-HDFS概述