Hadoop 分布式文件系统

Preview:

DESCRIPTION

Hadoop 分布式文件系统. by余磊. 分布式文件系统. 分布式文件系统 当数据及大小超过一台独立计算机存储能力,就有必要对其进行分区并存储到若干单独的计算机上。 挑战 容忍节点故障不丢失数据. HDFS设计 1.流式数据访问模式 一次写入多次读取效率最高 2.商用硬件 可运行在普通硬件的集群上 3.低延迟数据访问 可能会以高时间延迟为代价 4.大量小文件 文件总数受限于namenode的内存容量 5.多用户写入,任意修改文件 写操作将数据添加在文件末尾,不支持多个写入者和文件任意位置修改. HDFS概念. “. - PowerPoint PPT Presentation

Citation preview

Hadoop 分布式文件系统by 余磊

分布式文件系统

分布式文件系统当数据及大小超过一台独立计算机存储能力,就有必要对其进行分区并存

储到若干单独的计算机上。

挑战容忍节点故障不丢失数据

HDFS 设计1. 流式数据访问模式 一次写入多次读取效率最高2. 商用硬件 可运行在普通硬件的集群上3. 低延迟数据访问 可能会以高时间延迟为代价4. 大量小文件 文件总数受限于 namenode 的内存容量5. 多用户写入,任意修改文件 写操作将数据添加在文件末尾,不支持多个写入者和文件任意位置修改

HDFS 概念

数据块磁盘进行数据读写的最小单位

HDFS块默认为 64MB , HDFS 中小与一个块大小的文件不会占据整个块

““HDFS 块为什么这么大

目的:最小化寻址开销

块设置足够大,从磁盘传输数据时间可以明显大于定位块开始位置所需时间

不宜过大,任务数太少会减缓 mapreduce 中的 map 任务运行速度

HDFS 块抽象设计的优点

1.一个文件大小可以大于网络中任意一个磁盘的容量 文件的所有块不需要存储在同一磁盘上

2.使用块作为存储单元大大简化了存储子系统的设计 简化存储管理 消除了元数据的顾虑

3.块适合用于数据备份提供数据容错力和可用性 将块复制到少数几个独立机器上,在发生磁盘故障时不丢失数据

HDFS 集群两类节点: namenode 和 datanode

管理者 - 工作者运行模式namenode (管理者)管理文件系统的命名空间维护文件系统树和所有文件目录,以命名镜像文件和编辑日志文件形式永久保存在本地磁盘

datanode (工作节点)根据需要存储并检索数据快,定期向 namenode 发送所需存储块的列表

Hadoop namenode 容错机制没有 namenode 文件系统无法使用!!运行 namenode 服务的机器损坏则所有文件丢失

容错机制:1. 备份组成文件系统元数据持久状态的文件

2. 运行一个辅助 namenode ,定期通过编辑日志合并命名空间镜像。但保存状态滞后于主节点,主节点全失效会丢失部分数据。

Hadoop 文件访问权限

1. 只读权限2.写入权限3.可执行权限

每个文件和目录都有所属用户、组别和模式

超级用户对于超级用户,系统不会执行任何权限检查

HDFS 命令行接口

伪分布模式Hadoop 进程运行在本地机器上模拟小规模集群

fs.default.name 设置默认文件系统,设置 namenode 主机和端口 值:“ hdfs://localhost/”dfs.replication 不会按照默认将文件块备份 值:“ 1”

基本文件操作将本地系统文件复制到 HDFS-copyFromlocal 命令 本地文件被复制到 HDFS 实例

将文件复制回本地( MD5 )校验

HDFS JAVA 抽象类接口

org.apache.hadoop.fs.FileSystem

Hadoop 是 java 写的,通过 java api 可以调用所有 hadoop文件系统的交互操作。其他非java 程序调用 hadoop 比较麻烦

Thrift API 弥补以上不足,把Hadoop 文件系统包装成 Apache Thrift 服务,包含其他语言远程调用的接口

java 接口

FileSystem 类与 Hadoop 某一文件系统交互的 API

FileSystem

FSDataInputStream

写入数据

FileSystem 创建文件方法:

指定 path ,返回写入数据输出流public FsDatatOutputStream creat ( Path f ) throws IOExceptoion

使用 apppend ()方法在已有文件末尾增加数据public FsDatatOutputStream append ( Path f ) throws IOExceptoion

FsDatatOutputStream 对象

文件模式

在一个表达式中使用通配符来匹配多个文件是比较方便的

通配符

通配符并不总是精确表达我们想要访问的文件集, FileSystem 提供了 PathFilter 对象

删除数据

数据流

网络拓补

文件写入

副本的布局

一致模型

文件一致模型描述了对文件读写的可见性(在创建一个文件后希望能在文件系统的命名空间中立即可见,但写入文件的内容并不一定能保证立即可见)

HDFS 强制所有缓存与数据节点同步,调用 FSDataOutputSystem Sync ()方法

distcp 并行复制

并行处理文件,在两个集群间传输大量数据

distcp 作为 mapreduce 作业来实现,通过集群中并行的 map 完成,每个文件通过单一 map 复制,并为每个 map 分配大致相等数据块

hadoop 存档

文件按块存储,元数据存储在 namenode 内存,小文件效率低

HAR Hadoop 存档文件,将文件存入 HDFS 块,减少 namnode 内存使用,允许对文件透明访问,可用作 mapreduce 输入

archieve 指令

HAR 不足之处

1. 创建存档文件会创建原始文件副本,需要多余内存空间

2. 一旦创建存档文件不能被修改

3.HAR 可被作为 mapreduce 输入但 InputFormat 类不知道文件存档。

在此输入标题

输入文字在此录入上述图表的综合分析结论在此录入上述图表的综合分析结论在此录入上述图表的综合分析结论在此录入上述图表的综合分析结论

““谢谢您的耐心阅读!

Recommended