HDFS中的前置知识点
数据 ==data==
通过观察和记录 客观事物的属性等信息
包括文字、图片、声音、视频、可以量化的符号。
元数据 ==metadata==
描述数据的数据 记录数据的数据 关于数据的数据
data about data
往往是数据的属性信息,比如名称、大小、位置、作者、时间等等。
#0、分布式文件系统应该具备哪些属性 作用是什么 分布式特性 为什么大数据存储都是分布式的,而不是单机版本的? 理论层面上分布式可以横向无限扩展 支撑海量数据存储 机器不够加机器 YARN调度策略 为什么大数据存储的软件底层都是分块的,分片的,分区的? 核心字眼:分 期许拆分之后 之间没有依赖 可以并行操作提高效率 另外也能解决单个文件过大 某台机器存储不了的问题 副本机制 也叫做备份,默认设置3副本(1+2) replication 冗余(多余、重复)存储 提高数据的安全性 扩展--->机房:两地三中心 三地五中心(阿里) 元数据记录 为什么在分布式存储软件中需要去专门记录的元数据? 方便管理、查找 快速定位 抽象目录树 文件系统特有的。为什么文件系统都有树结构?? 符合人性 思维 习惯。 目录树结构是一种带有层次的空间结构,也叫做namespace 命名空间。 #1、HDFS原理 读写流程图 自己梳理。 pipeline ack packet 3副本机制 #上传文件 写数据流程 核心要素:pipeline、ack、3 replica 1、客户端通过RPC协议(hdfs://node1:8020)去请求NN,上传文件 2、NN根据请求判断客户端是否可以上传 客户端权限 目标路径是否存在 3、客户端首先请求上传文件的第一个block(告诉NN副本数是几 默认是3) 4、NN根据默认3副本策略返回3台DN位置信息,供客户端建立管道上传数据。 第一副本:优先本地,否则随机 第二副本:不同于第一个副本的其他机架 第三副本:和第二个相同机架的不同机器 要想实现副本策略:运维配置 机架感知 5、客户端跟三个机器通过管道的方式建立连接 client--->A---->B---->C 网络IO input output 6、客户端开始从0开始读取文件,把数据打成包packet(64K)写入到管道中 发送出去 7、在管道传输反方向上,两两之间进行ack校验。 ack 应答响应机制 8、如果至少有一个副本上传成功,本次上传就是成功的,客户端会将上传结果汇报给NN 9、本文件的第二个block、第三个blcok.....根据上述的步骤重复。 从第3步开始 重新请求副本存储位置 重新建立管道 传输数据。 #下载文件 读数据流程 目标:找到文件的所有的块 把它下载过来合并起来就是我们所需要的完整文件的样子。 核心要素: 分批次下载 副本位置排序 CRC循环冗余校验 1、客户端通过RPC协议(hdfs://node1:8020)去请求NN,下载文件 读一个文件 2、NN根据请求判断客户端是否可以读取下载 客户端权限 读的文件是否存在 3、NN返回该文件的block的位置信息 根据文件大小 视情况分批次返回 返回的每个块都有3个副本 位置列表是排序好的 排序规则:离客户端近的靠前 副本所在的机器状态好的靠前 这里的近指的是什么近? 拿个皮尺量一下距离??? 肯定不是 所谓的远近指的是:网络拓扑图中距离的远近 通俗来说就是节点间通信横跨的交换机的数量 在同一个交换机下面的各个机器 之间的距离都是一样的 4、客户端根据返回的位置列表 去指定的DN节点上读取block 5、当第一块读取完毕之前 连接第二个块 如果有下一批次 继续请求位置信息 读取 6、当所有的块最终根据编号合并成文件完整的样子 中间会通过CRC进行数据的校验 保证数据安全 #总结、概况nn dn角色职责 分布式软件主从配合工作场景。 大数据存储类软件都是这一个套路。 HBase Kafka ES #2、HDFS shell基本操作 #3、Archive 归档小文件 面试:大数据如何处理小文件场景,为什么讨厌小文件? 针对文件系统HDFS来说 解决关键:合并小文件变成大文件 合并多大好呢? block size =128M 针对计算程序来说 也有问题 合并的方式: 上传前合并 在本地先把一批小文件合并成为大文件 python、java代码 上传过程中合并 appendToFile 追加合并 上传之后合并 archive 小文件归档 #4、HDFS元数据管理机制 SNN功能职责 NN管理的元数据分为: 1、跟文件系统相关的 目录树结构 文件的属性 文件的数据库位置信息 2、跟hdfs集群状态相关的 DN的心跳信息 数据块汇报信息 元数据存储在哪里? 内存:最新最全 磁盘文件: fsimage 镜像文件 类似于快照 检测点 打游戏的存档 editslog 编辑日志 记录两次fsimage之间的事务性操作 SNN是NN的备份吗?!! 名字看很像。但是实际中和备份没有半毛钱关系。 是帮助NN合并元数据文件。 保证fsimage文件不旧 保证editslog日志不大 保证NN正常服务、性能不受影响 #5、HDFS安全模式是什么 特点:hdfs处于一种受保护状态 只读不能写 如何进入安全模式? 自动进入 时间:hdfs集群namenode启动之后 就立即进入安全模式 为什么:等待各个dn注册 汇报数据块信息 离开条件 1、已经汇报的数据块比例达到0.999 2、满足条件持续30s 手动进入 便于管理员对系统进行升级维护 避免集群启动关闭的麻烦 带给我的启示: 心急吃不了热豆腐~~ hdfs包括其他软件,启动了不代表它能正常使用。