编辑: 木头飞艇 | 2019-08-26 |
huawei.com 版权所有?
2015 华为技术有限公司 HDFS架构原理 第1页 版权所有?
2015 华为技术有限公司 目标 ? 学完本课程后,您将能够: ? 了解HDFS使用的场景 ? 了解HDFS功能与架构 ? 了解常用命令和参数 第2页 版权所有?
2015 华为技术有限公司 目录 1. HDFS概述 2. HDFS功能与架构 3. HDFS常见命令和参数 第3页 版权所有?
2015 华为技术有限公司 HDFS概述 ? HDFS(Hadoop Distributed File System)基于Google发布的 GFS论文设计开发,其除具备其他分布式文件系统相同特性 外,还有自己特有的特性: ? 高容错:认为硬件总是不可靠的 ? 高吞吐量:为大量数据访问应用提供高吞吐量支持 ? 大文件存储:支持存储TB-PB级别的数据 HDFS适合做什么 大文件存储、流式数据访问 HDFS不适合做什么 大量小文件、随机写入、低延 迟读取 第4页 版权所有?
2015 华为技术有限公司 目录 1. HDFS概述 2. HDFS功能与架构 3. HDFS常见命令和参数 第5页 版权所有?
2015 华为技术有限公司 目录 1. HDFS概述 2. HDFS功能与架构 ? HDFS设计目标 ? HDFS基本系统架构 ? HDFS架构关键设计 ? HDFS高可靠性 第6页 版权所有?
2015 华为技术有限公司 HDFS设计目标 硬件失效 ? 硬件的异常 比软件的异 常更加常见. ? 对于有上百 台服务器的 数据中心来 说,认为总 有服务器异 常,硬件异 常是常态. ? HDFS需要监 测这些异常, 并自动恢复 数据. 流式数据访 问?基于HDFS 的应用仅采 用流式方式 读取数据. ? 运行在HDFS 上的应用并 非以通用业 务为目的的 应用程序 ? 应用程序关 注的是吞吐 量,而非响 应时间. ? 非POSIX标 准接口的数 据访问. 存储数据较 大?运行在 HDFS的应用 程序有较大 的数据需要 处理. ? 典型的文件 大小为GB到TB级别. 数据一致性 ? 应用程序采 用WORM (Write Once Read Many)的数 据读写模型. ? 文件仅支持 追加,而不 允许修改. 多硬件平台 ? HDFS易 于运行不 同的平台 上. 移动计算能 力?计算和存储 采用就近原 则,计算离 数据最近. ? 就近原则将 有效减少网 络的负载, 降低网络拥 塞. 第7页 版权所有?
2015 华为技术有限公司 目录 1. HDFS概述 2. HDFS功能与架构 ? HDFS设计目标 ? HDFS基本系统架构 ? HDFS架构关键设计 ? HDFS高可靠性 第8页 版权所有?
2015 华为技术有限公司 HDFS主要采用主备模式,其架 构包含NameNode,DataNode ,Client三个部分 ? NameNode:NameNode用于存 储、生成文件系统的元数据.运 行一个实例. ? DataNode:DataNode用于存 储实际的数据,将自己管理的数 据块上报给NameNode ,运行 多个实例. ? Client:支持业务访问HDFS, 从NameNode ,DataNode获取 数据返回给业务.多个实例,和 业务一起运行. HDFS基本系统架构 第9页 版权所有?
2015 华为技术有限公司 目录 1. HDFS概述 2. HDFS功能与架构 ? HDFS设计目标 ? HDFS基本系统架构 ? HDFS架构关键设计 ? HDFS高可靠性 第10页 版权所有?
2015 华为技术有限公司 HDFS 架构关键设计 第11页 版权所有?
2015 华为技术有限公司 HDFS数据读取流程如下: 1. 业务应用调用HDFS Client提 供的API打开文件. 2. HDFS Client联系 NameNode,获取到文件信 息(数据块、DataNode位置 信息) 3. 业务应用调用read API读取 文件. 4. HDFS Client根据从 NameNode获取到的信息, 联系DataNode,获取相应的 数据块.(Client采用就近原 则读取数据) 5. HDFS Client会与多个 DataNode通讯获取数据块. 6. 数据读取完成后,业务调用 close关闭连接 HDFS数据读取流程 第12页 版权所有?
2015 华为技术有限公司 HDFS数据写入流程如下: 1. 业务应用调用HDFS Client提供的 API创建文件,请求写入. 2. HDFS Client联系NameNode, NameNode在元数据中创建文件 节点. 3. 业务应用调用write API写入文件. 4. HDFS Client收到业务数据后,从NameNode获取到数据块编号、 位置信息后,联系DataNode,并 将需要写入数据的DataNode建立 起流水线,完成后,客户端再通过 自有协议写入数据到Datanode1, 再有DataNode1复制到 DataNode2,DataNode3. 5. 写完的数据,将返回确认信息给 HDFS Client. 6. 所有数据确认完成后,业务调用 HDFS Client关闭文件. 7. 业务调用close, flush后,HDFS Client联系NameNode,确认数 据包写入完成,NameNode持久 化元数据. HDFS数据写入流程 第13页 版权所有?
2015 华为技术有限公司 HDFS Federation ?应用场景 Federation 支持上层 应 用使 用多 个独 立 的基 于NameNode/Namespace 的文件系统.这些NameNode之间相互独立且不需要互相协调,各 自分工管理自己的区域. ?解决方案 ? 一个namespace使用一个block pool管理数据 块,每个block pool内部自治,不会与其他 block pool交流 . ? 命名空间管理: Federation中存在多个命名空 间,可以使用Client Side Mount Table对命名 空间划分和管理. ?用户价值 【扩展性】 支持NameNode/Namespace水平扩展,后向兼容, 结构简单. 【性能】 文件操作的性能不再制约于单个namenode的吞吐 量,支持多个namenode. 【隔离性】可按照应用程序的用户和种类分离 Namespace volume,进而增强了隔离性 APP HDFS Namespace-1 Namespace-k Namespace-n Client-1 Client-k Client-n Common Storage Pool
1 Pool k Pool n Block Pools Na mespace Block Storage NN1 NN-k NN-n NS1 NS-k NS-n Datanode
1 Datanode
2 Datanode m … … … … … 第14页 版权所有?
2015 华为技术有限公司 副本距离计算公式: ? Distance(Rack1/D1, Rack1/D1)=0 同一台服务器的距 离为0 ? Distance(Rack1/D1, Rack1/D3)=2 同一机架不同的服 务器距离为2 ? distance(Rack1/D1, Rack2/D1)=4 不同机架的服务器 距离为4 副本放置策略: ? 第一个副本在本地机器 ? 第二个副本在远端机架 ? 第三个副本看之前的两个副本是否 在同一机架,如果是则选择其他机 架,否则选择和第一个副本相同机 架的不同节点. ? 第四个及以上,随机选择副本存放 位置 数据副本机制 D1 D3 D2 D4 D5 D1 D3 D2 D4 D5 D1 D3 D2 D4 D5 第15页 版权所有?
2015 华为技术有限公司 元数据持久化的流程如下: 1. 主用NameNode接收文件系统操作请求, 生成EditLog,并回滚日志,向EditLog.new中记录日志. 2. 备用NameNode从主用NameNode上下 载FSImage,并从共享存储中读取 EditLog. 3. 备用NameNode将日志和旧的元数据合 并,生成新的元数据FSImage.ckpt 4. 备用 NameNode将元数据上传到主用 NameNode 5. 主用NameNode将上传的元数据进行回 滚. 6. 循环步骤1. 元数据持久化 第16页 版权所有?
2015 华为技术有限公司 元数据持久化健壮机制 HDFS主要目的是保证存储数据的完整性,对于各个组件的失效,做了可靠性处理. ? 重建失效数据盘的副本数据. ? DataNode与NameNode之间通过心跳周期汇报数据状态,NameNode管理数据块是否上报完整,如果 DataNode因硬盘损坏未上报数据块,NameNode将发起副本重建动作恢复丢失的副本. ? 集群数据均衡 ? HDFS架构设计了数据均衡机制,此机制保证数据在各个DataNode上存储是平均的. ? 数据有效性保证 ? DataNode存储在硬盘上的数据块,都有一个校验文件已之对应,在读取数据时,DataNode会校验器有 效性,若校验失败,则HDFS客户端将从其他数据节点读取数据,并通知NameNode,发起副本恢复. ? 元数据可靠性保证 ? 采用日志机制操作元数据,同时元数据存放在主备NameNode上. ? 快照机制实现了文件系统常见的快照机制,保证数据误操作时,能及时恢复. ? 安全模式 ? HDFS提供独有安全模式机制,在数据节点故障,硬盘故障时,能防止故障扩散. 第17页 版权所有?
2015 华为技术有限公司 HDFS 架构其他关键设计要点说明 ? 统一的文件系统名字空间 ? HDFS对外仅呈现一个统一的文件系统. ? 统一的通讯协议: ? 统一采用RPC方式通信.NameNode被动的接收Client, DataNode的RPC请求 . ? 空间回收机制: ? 支持回收站机制,以及副本数的动态设置机制. ? 数据组织: ? 数据存储以数据块为单位,存储在操作系统文件系统之上. ? 访问方式: ? 提供JAVA API,HTTP方式,SHELL方式访问HDFS数据. 第18页 版权所有?
2015 华为技术有限公司 目录 1. HDFS概述 2. HDFS功能与架构 ? HDFS设计目标 ? HDFS基本系统架构 ? HDFS架构关键设计 ? HDFS高可靠性 第19页 版权所有?
2015 华为技术有限公司 HDFS的高可靠性(HA)架构 在基本架构上增加了以下组件: ? ZooKeeper: 分布式协调,主要用来存储HA下的状 态文件,主备信息.ZK个数建议是3个 (含)以上且为奇数个. ? NameNode主备 NameNode主备模式,主提供服务, 备用于合并元数据并作为主的热备. ? ZKFC: ZKFC(ZooKeeper Failover Controller)用于控制NameNode节点 的主备状态. ? JN: JN(JournalNode)用于共享存储 NameNode生成的Editlog. HDFS高可靠性 第20页 版权所有?
2015 华为技术有限公司 目录 1. HDFS概述 2. HDFS功能与架构 3. HDFS常见命令和参数 第21页 版权所有?
2015 华为技术有限公司 HDFS常用Shell命令 命令类别 命令 命令说明 dfs -cat 显示文件内容 -ls 显示目录列表 -rm 删除文件 -put 上传文件到HDFS -get 从HDFS下载文件到 本地 -mkdir 创建目录 -chmod/-chown 改变文件属组 … … dfsadmin -safemode 安全模式操作 -report 报告服务状态. balancer -threshold 容量均衡阈值 第22页 版权所有?
2015 华为技术有限公司 HDFS参数配置介绍 HDFS服务的参数配置在FusionInsight Hadoop上进行,配置界面进 入步骤为: 登录FunsionInsight ->
Services ->
HDFS ->
Configuration HDFS的配置包含了,HDFS服务,NameNode 组件 DataNode组件,ZKFC组件 每个组件节点的配置包含了各类型的配置参数. 第23页 版权所有?
2015 华为技术有限公司 HDFS服务配置参数类型说明 HDFS的配置包含了,HDFS服务,NameNode组件,DataNode组件,ZKFC 组件 每个组件节点的配置包含了各类型的配置参数. 类别 说明 Data Storage 数据存储相关的配置 High Availability 可靠性相关的配置 Performance 服务性能相关的配置 Port 服务端口相关的配置 Backup 服务数据备份相关的配置 Checkpointing 周期类扫描服务相关的配置 Log 服务日志相关的配置 GC JAVA虚拟机相关的参数配置 Default hadoop共有参数配置 Security 安全相关的配置. 第24页 版权所有?
2015 华为技术有限公司 HDFS服务关键配置说明 参数 默认 值 说明 dfs.replication
3 HDFS存储数据的副本数.建议 为3份,修改后,HDFS将全局刷 新副本数 dfs.client.block.wr ite.replace- datanode-on- failure.replication
2 客户端在写入数据时,会强制要 求所有数据写成功,否则就写入 失败. 当数据节点数为3台时,建议修 改为2,以防止数据节点复位, 写入失败. dfs.namenode.rpc .port
802 0 HDFS内部RPC的通讯端口 dfs.namenode.htt p.port
250 00 HDFS HTTP服务的端口. 第25页 版权所有?
2015 华为技术有限公司 NameNode关键配置说明 参数 默认值 说明 dfs.namenode.im age.backup.enabl e true NameNode元数据是否周期备份到 OMS服务器上的开关. 备份文件在 system - >
backup 中可以看到. dfs.namenode.im age.backup.nums
48 元数据备份个数,元数据备份为每 30分钟一备份,48可以备份一天的 元数据. dfs.blocksize
134217 728 数据块大小,默认为128M,单位为 字节.系统安装后,不建议修改. dfs.name........