hadoop 中文件是怎么存储的

假如集群中有2个数据节点,那我存储文件的时候需要给这个文件确定明确的存储路径吗?我该怎么知道我存储的文件是存放在哪个节点上?新手,求帮忙,先谢过了... 假如集群中有2个数据节点,那我存储文件的时候需要给这个文件确定明确的存储路径吗?我该怎么知道我存储的文件是存放在哪个节点上?新手 ,求帮忙,先谢过了 展开
 我来答
w390445576
2011-12-04 · TA获得超过349个赞
知道小有建树答主
回答量:116
采纳率:100%
帮助的人:91.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);
匿名用户
2011-12-04
展开全部
不需掘帆要知道,由namenode结点去帮你存储文件,我们只需要操作逻辑文件,建立一个文件,然后上传文件,然后编写mapreduecer程序,利用参数bin/hadoop jar World.jar Word input output
注意input输入文件的目录应该写清楚,不然回抛出衫散冲异常阿,建议你看看或歼hadoop的doc和hadoop权威指南。
追问
那我是不是可以把这些数据节点理解成一个共享的存储环境,假如有一个很大的数据,我们通过编写mapreduecer程序实现存储,输入的路径是数据在本机上存储的路径,输出的路径就是名称节点内的虚拟路径,数据节点的路径相当于映射到名称节点上了。
是这样理解的吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式