hadoop 中文件是怎么存储的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop 中文件是怎么存储的相关的知识,希望对你有一定的参考价值。

假如集群中有2个数据节点,那我存储文件的时候需要给这个文件确定明确的存储路径吗?我该怎么知道我存储的文件是存放在哪个节点上?新手 ,求帮忙,先谢过了

1、存储文件的时候需要指定存储的路径,这个路径是HDFS的路径。而不是哪个节点的某个目录。比如./hadoop fs -put localfile hdfspat

一般操作的当前路径是/user/hadoop比如执行./hadoop fs -ls .实际上就相当于./hadoop fs -ls /user/hadoop

2、HDFS本身就是一个文件系统,在使用的时候其实不用关心具体的文件是存储在哪个节点上的。如果需要查询可以通过页面来查看,也可以通过API来实现查询。

追问

那假如数据节点1有500G的空间,数据节点2有300G的空间,那我就可以往HDFS里存800G的数据,是吗?我们是不是就不用担心一下存入600G数据的时候,会出现一个数据节点不够存的问题?

追答

这要看你设置的参数dfs.replication(文件的副本系数,就是一个文件存储多少份相同的备份。默认是3)是多少。
如果是1,理论上就可以存储800G的内容。不过这样,数据就不够安全了。
当然,如果是自己学习的话配置成1也无所谓。生产系统是不可以这样配置的。

该参数的配置:
1、conf目录中的hdfs-site.xml文件中,如下配置。这个是默认的配置值。如果没有特殊指定,都是用这个文件中的配置值。

dfs.replication
3

2、也可以在运行时指定。如hadoop -fs -D dfs.replication=1 -put ****.txt ./
3、编程时,是用Configuration类对象的set方法。如conf.set("dfs.replication","1");或conf.setInt("dfs.replication",1);

参考技术A 不需要知道,由namenode结点去帮你存储文件,我们只需要操作逻辑文件,建立一个文件,然后上传文件,然后编写mapreduecer程序,利用参数bin/hadoop jar World.jar Word input output
注意input输入文件的目录应该写清楚,不然回抛出异常阿,建议你看看hadoop的doc和hadoop权威指南。追问

那我是不是可以把这些数据节点理解成一个共享的存储环境,假如有一个很大的数据,我们通过编写mapreduecer程序实现存储,输入的路径是数据在本机上存储的路径,输出的路径就是名称节点内的虚拟路径,数据节点的路径相当于映射到名称节点上了。
是这样理解的吗?

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

如何清洗存储在hadoop(HDFS)中的原始数据

在hadoop中存储多个小文件的最佳位置是啥

hadoop文件格式和压缩

hadoop是怎么存储大数据的

Hadoop——HDFS概念

Hadoop之HDFS的存储原理(运行原理)