搜索
查看: 2057|: 0

Hadoop 组件HDFS详解

[复制链接]

152

主题

47

回帖

2991

积分

管理员

积分
2991
发表于 2014-1-21 01:45:19 | 显示全部楼层 |阅读模式
概念
HDFS
HDFS(Hadoop Distributed File System)是一种专门为MapReduce这类框架下的大规模分布式数据处理而设计的文件系统。可以把一个大数据集(100TB)在HDFS中存储为单个文件,大多数其他的文件系统无力实现这一点。
数据块(block)
HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块。
和普通文件相同的是,HDFS文件系统中的数据是被分成64M一块的数据块存储的。
不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。
元数据节点(NameNode),从元数据节点(Secondary NameNode)和数据节点(DataNode)
元数据节点(NameNode)用来管理文件系统的命名空间
其将所有文件和文件夹的元数据保存在一个文件系统树当中。

这些信息也会在硬盘上保存成一下文件:命名空间镜像(namespace image)以及修改日志(edit log)。
其还保存了一个文件包括哪些数据块,分布在哪些数据节点上。然而这些信息并不存储在硬盘上,而是在系统启动的时候从数据节点收集而成的。

从元数据节点(secondary NameNode)  
从元数据节点并不是元数据节点出现问题的时候的备用节点,它和元数

据节点负责不同的事情。  其主要功能就是周期性将元数据节点命名空间的镜像文件和修改日志文件合并,以防日志文件过大。  合并过后的命名空间镜像文件也在从元数据节点保存了一份,以防元数据节点失败的时候,可以恢复。

数据节点(DataNode)是文件系统中真正存储数据的地方。  
客户端(client)或者元数据信息(NameNode)可以向数据节点请求写入或者读出数据块。  其周期性的向元数据节点回报其存储的数据块信息。
基本文件命令
HDFS文件系统命令采取的形式为:
hadoop fs –cmd <args> 其中cmd是具体的文件命令,<args>是一组数目可变的参数,cmd命令通常与Unix对应的命令相同。例如,文件列表命令为:
  1. hadoop fs –ls.  
复制代码
下面看看在hadoop中最常用的文件管理任务:
添加文件和目录
  1. Hadoop fs –mkdir /user/MDSS  
复制代码
Hadoop的mkdir命令会自动创建父目录(如果此前不存在),类似于unix中的 –p选项的mkdir命令。 Hadoop fs –ls
该命令列出目录及文件信息 Hadoop fs –lsr
该命令循环列出目录、子目录及文件信息 Hadoop fs –put example.txt /user/MDSS
该命令将本地文件系统的example.txt文件放入到HDFS文件系统的/user/MDSS目录下。
检索文件
  1. Hadoop fs –get /user/MDSS/example.txt .
复制代码
该命令将HDFS中的example.txt文件取回到本地文件系统中,与-put命令截然相反。
  1. Hadoop fs –cat user/MDSS/example.txt
复制代码
显示HDFS文件系统中example.txt的文件内容。
我们可以在hadoop的文件命令中使用unix的管道,将其结果发送给其他的unix命令做进一步处理。例如,如果该文件非常大(正如典型的hadoop文件那样),并且你希望快速的检查其内容,就可以把hadoop中cat命令的输出用管道传递给unix命令head.
  1. Hadoop fs –cat /user/MDSS/example.txt | head
复制代码
Hadoop内在支持tail命令来查看最后一千字节。 Hadoop fs –tail /user/MDSS/example.txt
删除文件
rm从HDFS文件系统删除example.txt文件,rm命令也可以删除空目录。
  1. Hadoop fs –rm /user/MDSS/example.txt
复制代码
Rmr命令可以循环删除目录以及子目录下的文件。
  1. Hadoop fs –rmr /user/MDSS/
复制代码
将会删除/user/MDSS/目录以及子目录
复制文件
从本地文件系统复制文件到HDFS文件系统命令:
  1. copyFromLocal Hadoop fs –copyFromLocal example.txt /user/MDSS/example.txt
复制代码
从HDFS文件系统复制文件到本地文件系统命令:copyToLocal Hadoop fs –copyToLocal /user/MDSS/example.txt example.txt
查阅帮助
查阅某个命令的帮助命令如下:
  1. Hadoop fs –help ls
复制代码
HDFS文件命令列表
  1. cat hadoop fs –cat file [file …]
复制代码

显示文件内容。若要读取压缩文件,应该使用text命令。
  1. chgrp hadoop fs –chgrp [-R] GROUP PATH [PATH …]
复制代码
变更文件和目录的群组。选项-R递归的执行变更。用户必须为文件的所有者或超级用户。
  1. chmod hadoop fs –chmod [-R] MODE[,MODE …] PATH [PATH …]
复制代码
变更文件和目录的访问权限。类似于unix对应的命令,MODE可以为一个3位8进制数,或{augo}+/-{rwxX}.选项-R递归的执行变更。用户必须为文件所有者或超级用户。
  1. chown hadoop fs –chown [-R] [OWNER] [:[GROUP]] PATH [PATH …]
复制代码
变更文件和目录的所有者。选项-R为递归执行变更。用户必须为超级用户。
  1. copyFromLocal hadoop fs –copyFromLocal LOCALSRC [LOCALSRC …] DST
复制代码
等同于put,从本地文件系统中复制文件。
  1. copyToLocal hadoop fs –copyToLocal [-ignoreecrc] [-crc] SRC [SRC …] LOCALDST
复制代码
等同于get,将文件复制到本地文件系统中。
  1. count hadoop fs –count [-q] PATH [PATH …]
复制代码
显示由PATH确定的子目录个数、文件个数、使用字节个数,以及所有的文件/目录名。选项-q显示额度信息。
  1. cp hadoop fs –cp SRC [SRC …] DST
复制代码
将文件从源复制到目的地。如果指定了多个源,目的端必须为一个目录。
  1. du hadoop fs –du PATH [PATH ..]
复制代码
显示文件大小,如果PATH是一个目录,会显示该目录中每个文件的大小。文件名用完整的URI协议前缀表示。请注意虽然du反映了磁盘使用情况,但不能望文生义,因为真实的磁盘使用情况依赖于块大小和副本系数。
  1. dus hadoop fs –dus PATH [PATH …]
复制代码

类似于du,但是当作用于目录时,dus会显示文件大小之和。
  1. expunge hadoop fs –expunge
复制代码
清空回收站。如果打开回收站属性,当文件被删除时,它首先会移动到临时目录.Trash/中。只有超过用户设置的延迟之后,文件才会被永久删除。而expunge命令强制删除.Trash/目录中的所有文件。
  1. get hadoop fs –get [ignorecrc] [-crc] SRC [SRC …] LOCALDST
复制代码
将文件复制到本地文件系统。如果指定了多个源文件,本地目的端必须为一个目录。如果LOCALDST被置为-,文件被复制到stdout。
  1. getmerge hadoop fs –getmerge SRC [SRC …] LOCALDST [addnl]
复制代码

获取由SRC指定的所有文件,将它们合并为单个文件,并写入打本地文件系统中的LOCALDST。选项addnl将在每个文件的末尾处加上一个换行符。
  1. help hadoop fs –help [CMD]
复制代码
显示命令CMD的用法信息。如果不显示CMD,则显示所有命令的用法信息。
  1. ls hadoop fs –ls PATH [PATH…]
复制代码
列出文件和目录,每个入口点会显示文件名、权限、所有者、组、大小和修改时间。文件入口点还会显示它们的副本系数。
  1. lsr hadoop fs –lsr PATH [PATH …]
复制代码
ls的递归版本。
  1. mkdir hadoop fs –mkdir PATH [PATH ..]
复制代码
创建目录,会创建路径中所有缺失的父目录(类似于unix的mkdir –p) .
  1. moveFromLocal hadoop fs –moveFromLocal LOCALSRC [LOCALSRC …] DST
复制代码
类似于put,只是本地的源在复制之后会被删除。
  1. moveToLocal hadoop fs –moveToLocal [-crc] SRC [SRC …] LOCALDST
复制代码
显示一条“not implemented yet”消息。
  1. mv hadoop fs –mv  SRC [SRC …] DST
复制代码
将文件从源移动到目的地。如果指定多个源文件,目的端必须为一个目录。不允许跨文件系统的移动。
  1. put hadoop fs –put LOCALSRC [LOCALSRC …] DST
复制代码
从本地文件系统中复制文件或目录到HDFS。如果LOCALSRC被置为-,则输入为stdin且DST必须为文件。 rm hadoop fs –rm PATH [PATH…]  删除文件和空目录。
  1. rmr  hadoop fs –rmr PATH [PATH …]
复制代码
rm的递归版本。
  1. setrep hadoop fs –setrep [-R] [-w] REP PATH [PATH …]
复制代码
改变文件的目标副本系数,放入REP中。选项-R将递归的改变PATH指定的目录中所有文件的目标副本系数。副本系数需要一定的时间才能达到目标值。选项-w将等待副本系数以与目标值相匹配。
  1. stat hadoop fs –stat [FORMAT] PATH [PATH …]
复制代码
显示文件中的统计信息。FORMAT字符串完全被打印出来,但会按照以下设定的格式进行替换            
%b 以数据块为单位的文件大小            
%F根据文件类型为字符串“directory”或“regular file”           
%n文件名            
%o块大小            
%r 副本            
%y 以yyyy-MM-dd HH:mm:ss格式显示的UTC时间。            
%Y 自1970年1月1日起(UTC)计的毫秒数。
  1. tail hadoop fs –tail [-f] FILE
复制代码
显示FILE中最后的1KB数据。
  1. test hadoop fs –test –[ezd] PATH
复制代码
对PATH进行如下类型的检查。   
-e PATH是否存在。如果PATH存在,返回0.   
-z 文件是否为空。如果长度为0,返回0.   
-d 是否为目录。如果PATH为目录,返回0.

  1. text hadoop fs –text FILE [FILE …]
复制代码
显示文件的文本内容。当文件为文本文件时,等同于cat。文件为压缩格式(gzip以及hadoop的二进制序列文件格式)时,会先解压缩。
  1. touchz hadoop fs –touchz FILE [FILE …]
复制代码
创建长度为0的文件。如果文件已存在,且长度非0,则报错。
大数据中国(http://www.bigdatas.cn),以数据的力量改变生活!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大数据中国微信

QQ   

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2024-11-15 17:02 , Processed in 0.063380 second(s), 27 queries .

快速回复 返回顶部 返回列表