设为首页 加入收藏

TOP

HDFS笔记——技术点汇总(一)
2017-10-10 15:10:17 】 浏览:4580
Tags:HDFS 笔记 技术 汇总

目录

· 概况

· 原理

    · HDFS 架构

    · 

    · NameNode

    · SecondaryNameNode

    · fsimage与edits合并

    · DataNode

    · 数据读写

    · 容错机制

    · 数据完整性

    · NameNode HA

    · NameNode Federation

    · HDFS Snapshots

· 操作

· API


 

概况

1. 文件系统抽象类FileSystem

    a) 源码

1 public abstract class FileSystem extends Configured implements Closeable {
2     // ...
3 }

    b) 实现类

文件系统

URI方案

Java实现

定义

Local

file

org.apache.hadoop.fs.LocalFileSystem

已使用客户端校验的本地文件系统。未使用校验的本地磁盘文件系统由RawLocalFileSystem实现。

HDFS

hdfs

org.apache.hadoop.hdfs.DistributedFileSystem

Hadoop分布式文件系统

HFTP

hftp

org.apache.hadoop.hdfs.web.HftpFileSystem

支持通过HTTP方式以只读方式访问HDFS,通常和distcp命令结合使用。

HSFTP

hsftp

org.apache.hadoop.hdfs.web.HsftpFileSystem

支持通过HTTPS方式以只读方式访问HDFS

HAR

har

org.apache.hadoop.fs.HarFileSystem

构建在Hadoop文件系统之上,对文件归档。Hadoop归档文件主要用来减少NameNode内存使用。

FTP

ftp

org.apache.hadoop.fs.ftp.FtpFileSystem

FTP服务器支持的文件系统。

S3(原生)

s3n

org.apache.hadoop.fs.s3native.NativeS3FileSystem

基于Amazon S3的文件系统。

S3(基于块)

s3

org.apache.hadoop.fs.s3.S3FileSystem

基于Amazon S3的文件系统,解决S35GB文件大小限制。

2. HDFS特点

    a) 适合存储超大文件:存储在HDFS的文件大多在GBTB级别,甚至PB级别。

    b) 运行于廉价硬件之上:设计时已考虑集群规模足够大时,节点故障是常态。HDFS无需运行在高可靠且昂贵的服务器,普通的PC服务器即可。

    c) 流式数据访问:HDFS认为一次写入、多次读取时最高效的访问模式。数据集生成后,会长时间在此数据集上进行各种分析,每次分析都将设计该数据集的大部分甚至全部数据。

3. HDFS缺点

    a) 实时数据访问弱:HDFS针对数据吞吐量做了优化,而牺牲了读取效率,无法做到秒级或毫秒级响应。

    b) 大量小文件:HDFS启动时,NameNode将全部元数据加载到内存,而一般一个HDFS文件、目录和数据块的存储信息约150字节,因此文件个数受限于NameNode节点内存。过多小文件很快达到上限。

    c) 多用户写入,任意修改文件:HDFS文件同时只能有一个写入者,且写操作总在文件末。

原理

HDFS 架构

1. 架构图

2. 守护进程

名称

集群中数目

作用

NameNode

1(默认)

存储文件系统元数据,存储文件与数据块映射,并提供文件系统全景图

SecondaryNameNode

1

备份NameNode数据,并负责镜像与NameNode日志数据合并

DataNode

多个(至少1个)

存储块数据

1. 文件系统块:块大小是磁盘块大小的整数倍,如ext34KBNTFS4KB

2. HDFS

    a) HDFS文件:被划分为块大小的多个分块。

    b) 默认大小:64MB

    c) 较大原因:最小化寻址开销(块足够大,从磁盘传输数据块的时间明显大于定位块开始位置所需的时间)。

    d) 配置:hdfs-site.xml的参数“dfs.block.size”。

3. 副本

    a) 含义:每个HDFS块在集群中保存的份数,默认为3

    b) 效果:值越高,冗余性越好,占用存储越多。

    c) 配置:hdfs-site.xml的参数“dfs.replication”。

4. 块分布示例

    a) 环境:文件大小150MB,块大小64MB,副本数2

    b) 分布:第164MB,第264MB,第322MB

5. 块布局策略

    a) 第1个副本:如果HDFS客户端在集群内,默认布局在客户端所在节点;否则随机选择一个节点,但会尽量避免存储太满或太忙的节点。

    b) 第2个副本:与第1个副本不同且随机另外机架中的节点。

    c) 第3个副本:与第2个副本相同机架且随机选择另外一个节点。

    d) 其他副本(副本数>3):集群随机选择节点,但会尽量避免在相同机架上布局太多副本。

    e) 由NameNode选择节点。

   

首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Navicat for MySQL连接mysql数据.. 下一篇[20170728]oracle保留字.txt

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目