第一部分:什么是HDFS
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。 HDFS是高容错性的,可以部署在低成本的硬件之上,HDFS提供高吞吐量地对应用程序数据访问,它适合大数据集的应用程序。
第二部分:HDFS架构设计
HDFS 设计目标
HDFS不适合做什么
存储小文件
大量随机读
需要对文件修改
第三部分:HDFS概念
NameNode
|
DataNode
|
SecondaryNameNode
|
存储元数据
|
存储文件内容
|
将NameNode的fsimage与edit log从NameNode
复制到临时目录
|
元数据保存在内存中与磁盘上
|
文件内容保存在磁盘
|
将fsimage同edit log合并 并产生新的fsimage
|
保存文件,block dataNode之间的映射关系
|
维护block id 到datanode本地文件的映射关系
|
将产生的新的fsimage上传给NameNode
清除NameNode中的edit log
|
Block块
数据块
(block
) HDFS(Hadoop Distributed File System)
默认的最基本存储单
位默认大小是
64M
。
第四部分:HDFS命令行接口
hadoop fs :
[-ls <path>]
[-lsr <path>]
[-du <path>]
[-dus <path>]
[-count[-q] <path>]
[-mv <src> <dst>]
[-cp <src> <dst>]
[-rm [-skipTrash] <path>]
[-rmr [-skipTrash] <path>]
[-put <localsrc> ... <dst>]
[-copyFromLocal <localsrc> ... <dst>]
[-moveFromLocal <localsrc> ... <dst>]
[-getmerge <src> <localdst> [addnl]]
[-cat <src>]
[-text <src>]
[-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
[-moveToLocal [-crc] <src> <localdst>]
[-mkdir <path>]
[-tail [-f] <file>]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-chgrp [-R] GROUP PATH...]
[-help [cmd]]
hadoop dfsadmin :
[-report]
报告文件系统的基本信息
[-safemode enter | leave | get | wait]
安全模式维护命令
[-saveNamespace]
保存当前的命名空间
[-refreshNodes]
重新读取
Hosts
和
eclude
文件,使新的节点或需要退出集群的节点能够重新被
NameNode
识别。
[-finalizeUpgrade]
终结
HDFS
的升级操作
[-upgradeProgress status | details | force]
[-metasave filename]
保存
Namenode
的主要数据结构到
Hadoop.log.dir
属性指定目录下的
filename
上
[-setQuota <quota> <dirname>...<dirname>]
为每个目录设定配额,强制限定目录树下的名字个数。
[-clrQuota <dirname>...<dirname>]
为每个目录清除配额设定。
[-setBalancerBandwidth <bandwidth in bytes per second>]
设定负载均衡时使用的带宽
第五部分:Hadoop文件系统
目前
Hadoop
支持的文件系统:
文件系统
|
Java
实现
|
描述
|
KFS
|
fs.kfs.KosmosFil
eSystem
|
Cloudstore
是类似
HDFS
的
由
C++
编写的文件系统
|
S3
(本地)
|
fs.s3native.Nativ
eS3File
System
|
由
Amazon S3
支持的文件
系统
|
S3
(基于块)
|
fs.s3.S3FileSyst
em
|
由
AmazonS3
支持的文件系
统,以块格式来存储文件
|
HAR
|
fs.HarFileSystem
|
一个构建在其他文件系统来
存档的文件系统。
|