码迷,mamicode.com
首页 > 其他好文 > 详细

三、HDFS——Hadoop分布式文件系统

时间:2016-08-23 01:13:13      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

一、hdfs的设计目标

1.1、硬件错误是常态而不是异常。Hadoop的设计理念之一就是它可以运行在廉价的普通PC机上,因而硬件故障是常态。在硬件故障时,可通过容错机制保证数据的正确性、完整性,从而保证系统的正常运行。

1.2、大文件存储。hdfs存储的文件大小一般在GB~TB的级别。

1.3、流式数据访问。由于hadoop处理的都是大文件,因此流式数据访问方式更适合。流式数据访问是指一次性地读取一大块文件后再做处理,其特点是吞吐率高,延迟高;与之相反的是随机数据访问,特点是随机性地读取数据,延迟低。

1.4、一次写入、多次读取。用户需要对文件实行一次写、多次读的访问模式。文件一旦上传到hdfs,便不能再做修改,如需修改,需删除文件重新上传。在上传完数据之后,便在该数据集上进行长时间的数据分析,也避免了数据一致性的问题。

 

二、hdfs的缺点

2.1、高延迟。

2.2、不适合存储大量小文件。

 

三、hdfs的基本架构图

技术分享

3.1、几个重要概念

(1)NameNode。NameNode负责管理整个dfs文件系统的元数据,即,存储所有的文件目录、每个文件的具体信息(即:每个文件被分了多少块、每块文件的大小及存放位置)等。

(2)DataNode。DataNode负责存放具体数据内容。

(3)其他。Block是数据块,通常以64MB为单位,具有多个冗余副本。Rack表示机柜,一个数据块的多个副本被分散在多个机柜中,以便机柜宕机时,可及时复原数据。

3.2、读数据流程

client在向hdfs读数据时,首先向NameNode发出请求,获取文件的每个数据块的存放位置,然后client再去指定的DataNode读取数据,最后通知NameNode关闭文件。

3.3、写数据流程

client在向hdfs写数据时,首先告知NameNode创建文件,NameNode经过一系列的检查,反馈给client一个DataNode列表进行写数据操作。然后,client再去找特定的DataNode进行写数据,最后关闭文件。

client在写入某一块特定的数据时,要同时备份多份数据块,假设要备份3份,则写数据的流程如下:

client只向第一个DataNode写数据,随后的备份操作由DataNode传递下去,这样做的目的是减小client的读写压力,当备份完最后一块数据时,由最后一块数据所在DataNode向前一个DataNode发送ack确认包,此操作一直传递到client那里,这样,一份数据块的备份操作结束。

技术分享

 

四、hadoop2.6中的hdfs的常用命令

hdfs官方命令查询:http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-common/FileSystemShell.html#mkdir

4.1、ls——查看文件列表

hadoop fs -ls /

列出hdfs文件系统根目录下的目录和文件。

hadoop fs -ls -R /

列出hdfs文件系统所有的目录和文件。

hadoop fs -ls /input

列出hdfs文件系统中input目录中的目录和文件。

4.2、put——上传文件到hadoop

hdfs dfs -put localfile /input/file1

将本地文件localfile拷贝到hadoop文件系统的input目录下的file1。

hdfs dfs -put localfile1 localfile2 /input

将本地文件localfile1、localfile2拷贝到hadoop文件系统的input目录下。

4.3、get——下载文件到本地

hdfs dfs -get /input/file localfile

将hfds文件系统input目录下的file文件拷贝到本地localfile文件中。

4.4、mkdir——创建目录

hadoop fs -mkdir /input

在hdfs文件系统的根目录下创建input文件夹。该方式只能一级一级地创建目录,父目录必须存在。

hadoop fs -mkdir -p /dir1/dir2

递归创建目录,如果父目录不存在就创建该父目录。

4.5、rm——删除文件、文件夹

hdfs dfs -rm /input/file1

删除文件。

hdfs dfs -rm -R /input
或: hdfs dfs -rm -r /input

删除文件夹。

4.6、cp——复制文件

hdfs dfs -cp /input/file1 /input/file2

重命名文件,file1、file2都会存在。

hdfs dfs -cp /input/file1 /another/file2

不同目录下拷贝文件。

hdfs dfs -cp /input/file1 /input/file2 /another

拷贝多个文件到another目录下。

4.7、mv——移动文件

hdfs dfs -mv /input/file1 /another/file2

不同目录下移动文件。

hdfs dfs -mv /input/file1 /input/file2 /another

移动多个文件到another目录下。

4.8、cat——打印文件内容

hdfs dfs -cat /input/file1

打印/input/file1文件的内容。

4.9、查看hdfs系统状态

hdfs dfsadmin -report

查看hdfs文件系统的基本信息:存储空间使用情况、datanode节点信息等。

 

三、HDFS——Hadoop分布式文件系统

标签:

原文地址:http://www.cnblogs.com/yuan2016/p/5789436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!