从fs -ls从列出来的文件看,这个文件夹/user/root/input是通过root用户创建的。说明你在从本地文件系统拷贝input目录到hdfs系统的时候,不是采用的hadoop用户,而是用root用户执行的拷贝命令,你可能忘记切换用户了,可以删除现在的input目录(采用root用户运行hadoop的删除命令,或者不删除也没关系),重新使用hadoop用户把input导入到hdfs系统中试试看。
frostfish425说的是对的!/user/hadoop是安装目录,就是说你hadoop相关的配置和代码都是放在这个位置,这个你自己定就可以了,但是要注意你配置文件和环境变量中的相关配置都要相应的发生改变。而/tmp/hadoop-hadoop/dfs/name是你配置的hdfs目录,也就是数据存放目录,在hdfs-site.xml中配置的,当然你也可以改变这个目录!
这个目录挂载的磁盘要足够大,不然数据存放不下,你初始化的时候报的这个Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted其实就是在/tmp/hadoop-hadoop/dfs这个目录下创建了name目录,意思就是告诉你,数据存放目录已经创建成功了!
方法如下:1、添加本地文件到hdfs目录:hadoopfs-put的命令后面的第一个参数是本地路径,第二个参数是hadoopHDFS上的路径,意思就是将本地路径加载到HDFS上。
2、创建文件夹:在hadoop的HDFS上创建文件夹。
3、上面命令在HDFS的tmp目录下穿件了input文件夹。
1.Hadoop 分布式 文件系统。特点:性能高、效率高、速度快
2.可以在廉价的机器上运行的 可容错 文件系统。
当集群中有机器挂掉时,HDFS会自动将挂掉的机器上的任务分配给正常的机器,使任务继续保持正常工作。
2.HDFS处理更加容易。当对一个大型文件进行写 *** 作时,如果将该文件整个写入一个节点,那么该节点的负载便会急剧增加,这样就丧失了分布式文件系统的意义。所以,应该利用HDFS将文件拆分成不同的块,然后将不同的块分配到不同的节点上去,此时,DFS就需要管理者确定文件如何进行拆分,以及每一个块应该分配到哪一个节点。对文件进行 *** 作时,在单机情况下,首先需要知道文件被拆分成多少块,每一个块被放在了哪一个节点上,以及块之间的顺序(文件的粘连)。而HDFS的出现,使得分布式文件集群不再需要人进行管理,利用HDFS读取文件时,我们不需要关心文件如何拆分,分配,粘连。只用告诉HDFS文件的路径即可。
HDFS的指令类似于linux下的指令。
查看文件:hdfs dfs -ls /查询的文件目录
删除文件:hdfs dfs -rm r /删除的文件
创建文件夹:hdfs dfs -mkdir /文件夹名称
上传文件至HDFS:hdfs dfs -put 需要上传的文件 /上传的文件路径
为什么需要学习HDFS结构?
1.面试中,能够运用于所有分布式文件系统设计。
既然分布式系统下是多节点运行,那么节点之间是否通信?slave节点只接受来自master节点的命令,向master节点发送心跳指令,slave节点之间不会主动通信。
a.Master slaver 模式:
1.High consistency:一致性。当文件中的一个数据块写入slave节点时,当且仅当数据块被成功写入到所有备份的slave节点,slave节点向client反馈写入 *** 作成功,否则,重传写入;
2.Simple design:易设计:不需要考虑子节点如何通信。只需要考虑主节点的工作;
3.单master节点不具有鲁棒性。
b.Peer peer 模式:
1.所有的读写 *** 作均匀分布在每一个节点上,每一个节点的负载不会很高;
2.任意一个节点挂掉不会影响其他节点;
3.低一致性。没有数据的复制步骤。
2.更好的理解hadoop生态系统
a.master节点会传输数据吗?
不会,master节点只接收client的请求,决定哪一个slave节点进行读写 *** 作,然后,client直接与slave节点进行通信。如果数据从master节点传输,那么master节点就会成为影响数据传输的瓶颈。
b.slave节点如何存储数据?
整个大文件?小的文件块?。HDFS借鉴GFS的设计理念,以block为传输单位,将大文件拆分成一个一个小文件,而一个小文件就是block。block的大小可以由Configuration定义,默认大小是128M。
c.谁来决定将文件拆分成块?
master?slave?。两者都不是,由HDFS client决定将大文件拆分成block(块)。HDFS的目的是将所有的节点包装起来,可以理解成将所有的节点放在一个黑箱里,我们不需要知道黑箱里到底发生了什么,只需要告诉黑箱需要做什么工作,这里的HDFS client相当于HDFS与user通信的中间媒介。HDFS client相当于一个软件包(api),可以存放在master或者slave或者额外的一个新节点上。
写入in memory失败(ACK出现问题)时,master会重新选择3个新的slave节点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)