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);
注意input输入文件的目录应该写清楚,不然回抛出异常阿,建议你看看hadoop的doc和hadoop权威指南。追问
那我是不是可以把这些数据节点理解成一个共享的存储环境,假如有一个很大的数据,我们通过编写mapreduecer程序实现存储,输入的路径是数据在本机上存储的路径,输出的路径就是名称节点内的虚拟路径,数据节点的路径相当于映射到名称节点上了。
是这样理解的吗?
以上是关于hadoop 中文件是怎么存储的的主要内容,如果未能解决你的问题,请参考以下文章