Hadoop实战-初级部分 之 HDFS
第一部分:什么是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.KosmosFileSystem | Cloudstore 是类似 HDFS的 由 C++ 编写的文件系统 |
S3 (本地) | fs.s3native.NativeS3File System | 由 Amazon S3 支持的文件系统 |
S3 (基于块) | fs.s3.S3FileSystem | 由 AmazonS3 支持的文件系 统,以块格式来存储文件 |
HAR | fs.HarFileSystem | 一个构建在其他文件系统来存档的文件系统。 |