概念
HDFS
HDFS(Hadoop Distributed FileSystem)是一种专门为MapReduce这类框架下的大规模分布式数据处理而设计的文件系统。可以把一个大数据集(100TB)在HDFS中存储为单个文件,大多数其他的文件系统无力实现这一点。
数据块(block)
HDFS(Hadoop Distributed FileSystem)默认的最基本的存储单位是64M的数据块。
和普通文件相同的是,HDFS文件系统中的数据是被分成64M一块的数据块存储的。
不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。
元数据节点(NameNode),从元数据节点(Secondary NameNode)和数据节点(DataNode)
元数据节点(NameNode)用来管理文件系统的命名空间
从元数据节点(secondaryNameNode)
数据节点(DataNode)是文件系统中真正存储数据的地方。
HDFS:(Hadoop Distributed File System)分布式文件系统,提供高吞吐量的应用程序数据访问,对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。
存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。
HDFS基本概念介绍
1、Block:HDFS默认的基本存储单位是64M的数据块,和普通文件系统相同的是,HDFS中的文件是被分成64M一块的数据块存储的。 不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。
2、元数据节点(NameNode)和数据节点(DataNode)
元数据节点保存内容:
a、主要用来管理文件系统的命名空间,其将所有的文件和文件夹的元数据保存在一个文件系统树中。 这些信息也会在硬盘上保存成以下文件:命名空间镜像(namespace image)及修改日志(edit log)
b、其还保存了一个文件包括哪些数据块,分布在哪些数据节点上。然而这些信息并不存储在硬盘上,而是在系统启动的时候从数据节点收集而成的。
数据节点保存内容
真正存储数据的地方。客户端(client)或者元数据信息(namenode)可以向数据节点请求写入或者读出数据块。 其周期性的向元数据节点回报其存储的数据块信息。
3、从元数据节点(secondary namenode)
从元数据节点并不是元数据节点出现问题时候的备用节点,它和元数据节点负责不同的事情。 其主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并,以防日志文件过大。这点在下面会相信叙述。 合并过后的命名空间镜像文件也在从元数据节点保存了一份,以防元数据节点失败的时候,可以恢复。
基本文件命令
HDFS文件系统命令采取的形式为:
hadoop fs –cmd 其中cmd是具体的文件命令,是一组数目可变的参数,cmd命令通常与Unix对应的命令相同。例如,文件列表命令为:hadoop fs –ls.
下面看看在hadoop中最常用的文件管理任务:
添加文件和目录
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目录下。
检索文件
Hadoop fs –get /user/MDSS/example.txt .
该命令将HDFS中的example.txt文件取回到本地文件系统中,与-put命令截然相反。
Hadoop fs –cat user/MDSS/example.txt
显示HDFS文件系统中example.txt的文件内容。
我们可以在hadoop的文件命令中使用unix的管道,将其结果发送给其他的unix命令做进一步处理。例如,如果该文件非常大(正如典型的hadoop文件那样),并且你希望快速的检查其内容,就可以把hadoop中cat命令的输出用管道传递给unix命令head.
Hadoop fs –cat /user/MDSS/example.txt | head
Hadoop内在支持tail命令来查看最后一千字节。
Hadoop fs –tail /user/MDSS/example.txt
删除文件
rm从HDFS文件系统删除example.txt文件,rm命令也可以删除空目录。
Hadoop fs –rm /user/MDSS/example.txt
Rmr命令可以循环删除目录以及子目录下的文件。
Hadoop fs –rmr /user/MDSS/ 将会删除/user/MDSS/目录以及子目录
复制文件
从本地文件系统复制文件到HDFS文件系统命令:copyFromLocal
Hadoop fs –copyFromLocal example.txt/user/MDSS/example.txt
从HDFS文件系统复制文件到本地文件系统命令:copyToLocal
Hadoop fs –copyToLocal /user/MDSS/example.txtexample.txt
查阅帮助
查阅某个命令的帮助命令如下:
Hadoop fs –help ls
HDFS文件命令列表
cat
chgrp
chmod
chown
copyFromLocal
copyToLocal hadoop fs –copyToLocal[-ignoreecrc] [-crc] SRC [SRC …] LOCALDST等同于get,将文件复制到本地文件系统中。
count
cp
du
dus
expunge
get
getmerge
help
ls
lsr
mkdir hadoop fs–mkdir
moveFromLocal
moveToLocal
mv
put
rm
rmr
setrep
stat hadoop fs –stat [FORMAT]PATH [PATH …]
tail
test hadoop fs –test –[ezd]PATH
text hadoop fs –text FILE [FILE…]
touchz