学习目标

理解分布式文件存储的概念与实现
掌握HDFS分块存储、副本机制等特性
学会shell操作HDFS
掌握HDFS读写流程
理解NameNode元数据管理机制
理解SecondaryNameNode checkpoint机制

内容大纲

#HDFS入门HDFS介绍如何模拟实现分布式文件存储系统? 具备哪些特性。分布式、分块存储、副本机制、元数据管理HDFS设计目标和重要特性
#HDFS操作shell command
#HDFS原理(重中之重)工作机制--读写流程  角色之间如何配合的 每个角色承担了什么职责NN DN角色职责概述总结
#HDFS辅助功能distcp 跨集群复制数据 Archive 归档文件  处理小文件
#HDFS元数据管理机制namenode如何管理元数据secondarynamenode职责checkpoint机制
#HDFS安全模式
#理清两个东西  数据data 元数据metadata
元数据:data about data关于数据的数据  描述性的数据

01_传统文件系统及其面临的挑战

   大数据场景下,传统文件系统如何才能支撑海量数据存储?

02_分布式文件存储系统核心特性与作用

场景互动:如何模拟实现分布式文件系统。

或者说一个成熟的分布式文件系统应该要具备哪些属性、功能呢?

  • 分布式存储
  • 元数据记录
  • 分块存储
  • 副本机制

03_Hadoop HDFS 简介

  • 首先是一个文件系统,就是用来存储文件、存储数据。是大数据最底层一个服务。

  • 其次是一个分布式的文件系统。分布式意味着多台机器存储。

04_Hadoop HDFS 起源发展和设计目标

  • 具备故障检测和快速恢复的能力(容错)
  • 面对海量数据的存储,注重吞吐能力,而不是交互式。(延迟高)
  • 支持大文件存储(越大越开心)
  • 一次写入多次读取模型 (不支持修改操作)
  • 异构存储、可移植性

05_Hadoop HDFS 核心重要特性解读


(1)master|slaves 主从架构

   主角色:namenode 管理维护着元数据:目录树结构 文件 大小 副本 备份 位置信息
   从角色:datanode 存储着最终的数据块

(2)分块存储

   物理上把文件分开了。
   block size =128M 134217728 hadoop2.x (hadoop1.x 64M)
   e.g:
   1.txt 300M
   blk-1 0–128
   blk-2 128-256
   blk-3 256-300

   2.txt 100M
   blk-4 0–100

(3)副本机制

   默认是3副本。
   1+2=3 本身一份 额外两份 最终3副本。

   namespace 名字空间 命名空间
   namespace即“命名空间”,也称“名称空间”
   层次感结构 兼顾传统对应文件系统的认知 目录树结构
   用户可以针对目录树进行文件夹、文件的增删改查。
   统一的抽象目录树。

(4)metadata 元数据

   元数据:记录数据的数据 描述性数据、解释性数据
   对于HDFS来说,目录结构及文件分块位置信息叫做元数据。
   元数据是有namenode维护的。

(5)write one read many

   hdfs的模式是一次写入多次读取
   hdfs没有随机修改编辑的操作 只能对已有的数据进行追加。
   设计目标是这么决定的。

   侧重于数据吞吐量 不注重实时交互性 意味着hdfs操作延迟很高。


06_Hadoop HDFS shell 操作 命令行功能及使用说明

hadoop  fs <args>  文件系统的路径#hadoop  fs可以操作的文件系统不仅仅有HDFS,还包括本地文件系统、GFS、TFS。
#如何区分操作访问的是什么文件系统呢?  根据文件系统协议hadoop fs -ls hdfs://node1:8020/hadoop fs -ls file:///
hadoop fs -ls gfs://#如果不写协议 直接/目录 操作访问的是谁?
[root@node1 ~]# hadoop fs -ls /
Found 4 items
drwxr-xr-x   - root supergroup          0 2021-05-23 16:49 /itcast
drwx------   - root supergroup          0 2021-05-23 16:12 /tmp
drwxr-xr-x   - root supergroup          0 2021-05-23 16:12 /user
drwxr-xr-x   - root supergroup          0 2021-05-23 16:16 /wc#默认是谁,取决于参数fs.defaultFS
<property><name>fs.defaultFS</name><value>hdfs://node1:8020</value>
</property>#如果fs.defaultFS没有配置  默认的是file:///#新旧命令  推荐使用hadoop fs
hadoop fs <args> = hdfs dfs <args>

07_Hadoop HDFS shell 操作 常见命令操作

# 查看指定目录下信息
hadoop fs -ls [-h] [-R] <args>-h 人性化显示-R 递归显示#创建文件夹
hadoop fs -mkdir [-p] <paths>-p 创建父目录#上传文件
hadoop fs -put src  dst
将单个 src 或多个 srcs 从本地文件系统复制到目标文件系统#src代表的是本地目录 所谓的本地指的是客户端所在的机器 #dst代表的是HDFS-p:保留访问和修改时间,所有权和权限。-f:覆盖目的地(如果已经存在)hadoop fs -put file:///root/itcast.txt hdfs://node1:8020/itcast   hadoop fs -put itcast.txt /itcast#下载文件
hadoop fs -get  src  localdst#将文件复制到本地文件系统。
hadoop fs -get hdfs://node1:8020/itcast/itcast.txt file:///root/
hadoop fs -get /itcast/itcast.txt ./#追加内容到文件尾部 appendToFile
[root@node3 ~]# echo 1 >> 1.txt
[root@node3 ~]# echo 2 >> 2.txt
[root@node3 ~]# echo 3 >> 3.txt
[root@node3 ~]# hadoop fs -put 1.txt /
[root@node3 ~]# hadoop fs -cat /1.txt
1
[root@node3 ~]# hadoop fs -appendToFile 2.txt 3.txt /1.txt
[root@node3 ~]# hadoop fs -cat /1.txt
1
2
3
[root@node3 ~]# #追加的用途:把本地的小文件上传中合并成为大文件 解决小文件场景的。#文件内容的查看
cat 适合小文件
tail 将文件的最后一千字节内容显示到stdout  -f参数支持实时追踪查看#权限 拥有者 所属组修改hdfs在设计的时候 借鉴模仿着linux权限管理模式也有所谓的读写执行 user group others  777
chgrp  修改所属组
chmod  修改权限
cgown  修改拥有者hadoop fs -chmod 755 /1.txt#文件移动 复制 删除
mv cp
rm -r递归删除 #合并下载 getmerge
合并下载多个文件  其功能和appendToFile相反的动作
[root@node3 ~]# hadoop fs -mkdir /small
[root@node3 ~]# hadoop fs -put *.txt /small
[root@node3 ~]# hadoop fs -getmerge /small/* ./merge.txt
[root@node3 ~]# cat merge.txt #统计HDFS可用空间  指定目录大小
[root@node3 ~]# hadoop fs -df -h /
Filesystem            Size   Used  Available  Use%
hdfs://node1:8020  111.1 G  5.0 M     98.3 G    0%#修改文件的副本数
hadoop fs -setrep -w N -R   N就是修改之后的副本数
-w wait等待 修改副本客户端是否等待修改完毕再推出[root@node3 ~]# hadoop fs -setrep 2 /small/1.txt
Replication 2 set: /small/1.txt[root@node3 ~]# hadoop fs -setrep -w 2 /small/2.txt
Replication 2 set: /small/2.txt
Waiting for /small/2.txt ...
WARNING: the waiting time may be long for DECREASING the number of replications.
. done#企业中避免使用setrep修改文件的副本数。
副本的修改操作可能会影响hdfs正常的读写服务请求。
因此在实际工作中 事先根据数据的重要性在上传之前就决定该文件的备份数是多少 避免线上修改。

08_Hadoop HDFS 工作机制 角色与角色职责

  • namenode 管理元数据 维护namespace
  • datanode 管理数据

09_Hadoop HDFS 工作机制 上传文件流程(写文件流程)

上传文件流程:
(1)客户端RPC请求NN上传文件、NN校验通过,返回可以上传
(2)客户端请求NN上传第一个block(连带副本),NN根据3副本策略返回3台DN位置
(3) 客户端跟返回的DN列表建立pipeline管道(client–>DN1–>DN4–>DN666)
(4)客户端以packet(64k)往pipeline中发送数据
(5)pipeline传输的反方向上进行ack校验
(6)如果本次上传的文件还有其他的block,重复2-5
(7)上传完毕,client向NN汇报上传情况,只要每个block有一个副本成功,就算成功

10_Hadoop HDFS 工作机制 下载文件流程(读文件流程)


下载文件流程:
(1)客户端RPC请求NN下载文件、NN校验通过,视情况分批返回块的位置信息
(2)返回的副本位置信息是排序好的,离客户端近的靠前(所谓的近是网络拓扑中的远近 不是空间上的)
(3)客户端连接到第一个block读取数据,在块读取完毕连结到第二个block
(4)如果还有剩余批次,继续请求NN返回块位置信息
(5)把所有数据块读取到本地 按顺序拼接成为文件的最终样子 CRC循环冗余码校验

11_Hadoop HDFS 工作机制 NN和DN之间的通信机制

11.1 DN启动时

   datanode向nameNode进行注册 并行汇报自己持有数据块信息
   注册表示自己启动成功 汇报是告诉namenode自己保存了哪些数据块

11.2 DN后续工作时

(1) 心跳机制
   datanode每隔3S向namenode进行心跳 目的:报活 dfs.heartbeat.interval

(2)数据块汇报机制 blockreport
   datanode每隔6小时向nameNode进行数据块汇报自己数据块信息
   dfs.blockreport.intervalMsec

12_Hadoop HDFS 辅助工具(distcp、archive)

12.1 跨集群复制数据 distcp(distributed copy)

  • 功能:实现在不同的hadoop集群之间进行数据复制同步。

  • 用法:

    #同一个集群内 复制操作
    hadoop fs -cp /zookeeper.out /itcast
    #跨集群复制操作
    hadoop distcp hdfs://node1:8020/1.txt  hdfs:node5:8020/itcast
    

12.2 文件归档工具 archive

  • 背景

    hdfs的架构设计不适合小文件存储的。
    因为小文件不管多小 都需要一定的元数据记录它 元数据保存在内存中的,
    如果集群小文件过多 就会造成内存被撑爆。 俗称 小文件吃内存。
    
  • archive功能

    • 将一批小文件归档一个档案文件。
    • 底层是通过MapReduce程序将小文件进行合并的。启动yarn集群执行mr程序
    • 企业中可以根据时间 定时进行归档,比如一周创建一个档案。
  • 使用

    #创建档案
    hadoop archive -archiveName test.har -p /small /outputdir基于自己的需求 删除小文件 减少对内存的消耗
    hadoop fs -rm /small/*#查看档案文件 --归档之后的样子
    [root@node1 ~]# hadoop fs -ls hdfs://node1:8020/outputdir/test.har
    Found 4 items
    hdfs://node1:8020/outputdir/test.har/_SUCCESS
    hdfs://node1:8020/outputdir/test.har/_index
    hdfs://node1:8020/outputdir/test.har/_masterindex
    hdfs://node1:8020/outputdir/test.har/part-0#查看档案文件 --归档之前的样子
    [root@node1 ~]# hadoop fs -ls har://hdfs-node1:8020/outputdir/test.har
    Found 3 itemshar://hdfs-node1:8020/outputdir/test.har/1.txthar://hdfs-node1:8020/outputdir/test.har/2.txthar://hdfs-node1:8020/outputdir/test.har/3.txt#从档案文件中提取文件
    [root@node1 ~]# hadoop fs -cp har://hdfs-node1:8020/outputdir/test.har/* /small/
    [root@node1 ~]# hadoop fs -ls /small
    Found 3 items
    -rw-r--r--   3 root supergroup          2 2021-05-24 17:58 /small/1.txt
    -rw-r--r--   3 root supergroup          2 2021-05-24 17:58 /small/2.txt
    -rw-r--r--   3 root supergroup          2 2021-05-24 17:58 /small/3.txt
    
  • 注意

    • archive没有压缩的功能 就是简单的合二为一的操作 减少小文件个数

13_Hadoop HDFS namenode 安全模式

  • 安全模式(safe mode)是HDFS集群处于一种保护状态,文件系统只可以读,不可以写

  • 安全模式如何进入离开的?

    • 自动进入离开

      #在HDFS集群刚启动时候 会自动进入 为了演示方便  使用单个进程逐个启动方式#step1:启动namenode
      hadoop-daemon.sh start namenode#step2: 执行事务性操作 报错
      [root@node1 ~]# hadoop fs -mkdir /aaaa
      mkdir: Cannot create directory /aaaa. Name node is in safe mode.Safe mode is ON. The reported blocks 0 needs additional 52 blocks to reach the threshold 0.9990 of total blocks 52. The number of live datanodes 0 has reached the minimum number 0. Safe mode will be turned off automatically once the thresholds have been reached.#1、条件1:已经汇报的block达到总数据块的 0.999
      #2、条件2:存活的dn数量大于等于0  说明这个条件不严格#step3:依次手动启动datanode
      hadoop-daemon.sh start datanodeSafe mode is ON. The reported blocks 52 has reached the threshold 0.9990 of total blocks 52. The number of live datanodes 2 has reached the minimum number 0. In safe mode extension. Safe mode will be turned off automatically in 25 seconds.
      #3、条件3:满足12条件的情况下 持续30s 结束自动离开安全模式Safemode is off.#为什么集群刚启动的时候 要进入安全模式
      文件系统元数据不完整 无法对外提供可高的文件服务  属于内部的元数据汇报、校验、构建的过程。
    • 手动进入离开

      hdfs dfsadmin -safemode enter
      hdfs dfsadmin -safemode leaveSafe mode is ON. It was turned on manually. Use "hdfs dfsadmin -safemode leave" to turn safe mode off.#运维人员可以手动进入安全模式 进行集群的维护升级等动作 避免了群起群停浪费时间。
      
  • 安全模式的注意事项

    • 刚启动完hdfs集群之后 等安全模式介绍才可以正常使用文件系统 文件系统服务才是正常可用。
    • 后续如果某些软件依赖HDFS工作,必须先启动HDFS且等安全模式结束才可以使用你的软件。
    • 启动–>启动成功–>可用(安全模式结束)

14_Hadoop HDFS namenode元数据管理机制 整体概述

(1)元数据

   元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。

   记录数据的数据 描述数据的数据

(2)hdfs中元数据

   文件系统的元数据(namespace、块的位置)
   datanodes状态信息(健康、磁盘使用率)

(3)hdfs文件系统元数据存储位置

   内存中元数据
   磁盘上元数据文件(fsimage edits log)

15_Hadoop HDFS namenode元数据相关目录文件

  • 回想首次启动HDFS集群的时候 进行format操作

    • 本质就是初始化操作 初始化namenode工作目录和元数据文件。

    • 元数据存储的目录由参数dfs.namenode.name.dir决定 在NN部署机器的本地linux文件系统中

16_Hadoop HDFS SNN概述和checkpoint

- secondarynamenode要想成为namenode的备份 需要具备两个东西

  • 数据状态要和namenode保持一致。

  • 承担和namenode一样的职责

  • secondarynamenode根本不是namenode的备份,其主要职责帮助nameNode进行元数据的合并。

  • checkpoint

17_Hadoop HDFS 元数据文件恢复方式

  • NameNode存储多目录
  • 从SecondaryNameNode部分恢复

2021-12-30大数据学习日志——Hadoop离线阶段——HDFS相关推荐

  1. 大数据学习之hadoop——07阿里云服务器搭建集群以及遇到的问题解决办法

    在这段服务器搭建伪分布集群中我遇到了如下问题 1.进入远程连接界面却不知道密码 2.使用MobaXtem工具连接服务器失败 3.集群格式化失败 4.web访问失败 按照下面的所有步骤操作.以上的问题都 ...

  2. 大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门到熟练操作)

    系列博客 1.大数据技术之Hadoop完全分布式集群搭建+Centos7配置连通外网和主机 2.大数据技术之Hadoop编译源码 3.大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门 ...

  3. 自学大数据者请进:大数据学习线路及各阶段学习书籍推荐

    大数据学习路线及各阶段学习书籍推荐!废话不多说,直接切入主题,有需要的小伙伴可以参考学习! 阶段一.大数据基础--java语言基础方面 自学大数据者请进:大数据学习线路及各阶段学习书籍.视频推荐 (1 ...

  4. 大数据学习线路及各阶段学习书籍推荐

    大数据学习路线及各阶段学习书籍推荐!废话不多说,直接切入主题,有需要的小伙伴可以参考学习! 阶段一.大数据基础--java语言基础方面 (1)Java语言基础 Java开发介绍.熟悉Eclipse开发 ...

  5. 2021最全大数据学习路线(建议收藏)

    个人简介:非科班双一流硕士,CAE仿真方向转行大数据,现杭州某大厂大数据工程师! 我可以给你提供最全的[大数据学习路线]:帮助你搭建大数据知识体系,从入门到精通:亲自指导你大数据工程师面试的简历该如何 ...

  6. 2021-11-03大数据学习日志——数据埋点+网络爬虫——后端开发入门

    01_mini-web 本章节学习目标 能够知道Web开发流程 能够知道使用web应用程序处理客户端的动态资源请求操作 能够知道路由列表的实现 能够知道装饰器方式的添加路由 能够知道logging日志 ...

  7. 大数据学习1 - hadoop环境搭建及操作

    目录 目录 目录 一.什么是大数据? 二.什么是hadoop? 1.Hadoop核心组件 2.HDFS架构 3.MapReduce 3.Yarn架构 ​编辑 三.Hadoop的集群模式 1.完全分布模 ...

  8. 2021-10-19大数据学习日志——数据埋点+网络爬虫——前端开发入门

    01_Web开发 学习目标: 简单了解应用程序开发的分类:桌面应用程序和 Web 应用程序 1.1 桌面应用程序开发 桌面应用程序开发,是一种比较基本的传统的软件开发方式,是基于 C/S 架构模式的软 ...

  9. 大数据学习之Hadoop生态圈(一)

    文章目录 前言 1.什么是hadoop 2.Hadoop起源 3.Hadoop的四大特点 4.Hadoop的三大发行版本 5.Hadoop的版本迭代 6.Hadoop的优点及缺点 7.Hadoop组成 ...

最新文章

  1. 表达不同与构建不同: 对计算机的唯一真正的要求 (TrustNo.1 ) -- 待修改!!!...
  2. 逻辑运算符和||与(和|)的区别
  3. element-ui 表格table,动态显示每一列的,重置全选
  4. android通过c调用shmat函数,编译可在Android上运行的qemu user mode
  5. 面试 技术 教训_我如何应用从失败的技术面试中学到的经验教训来获得5个工作机会
  6. vue cli 对解析的html内容的图片添加样式
  7. leetcode 179 python
  8. 环,模,补码,负数的表示与减法实现
  9. LeetCode【119. 杨辉三角 II】
  10. 《勿忘初心,不负梦想》
  11. ssm项目之Bookstrap创建页面并分页查询
  12. python爬虫-book118
  13. 分布式系统互斥算法---令牌环算法
  14. 菜鸟的草缸 篇五:五个月的草缸血泪史:除藻-鱼病-翻缸的经验(完结篇)
  15. C#编程--ribbon界面介绍
  16. 【寒江雪】圆与扇形物体的碰撞检测
  17. Google员工的工作环境
  18. Redis从入门到集群分布式实践
  19. 乌合之众 -- 群体的意见和信念
  20. git 清除版本库中的忽略文件

热门文章

  1. 如何使用沙箱测试单笔转账到支付宝账号(php版)
  2. BLE低功耗蓝牙组网流程及蓝牙角色介绍
  3. layui分成两列相同的表格_干货!layui动态显示表格的列 自己动手 丰衣足食
  4. QII中,用JTAG接口配置EPCS器件
  5. 4、Qt设备识别(简单的密钥生成器)
  6. 无痛减肥黑科技:拍照识热量
  7. 全民经纪人v2.7.49 房产小程序
  8. ftrace--------------trace points
  9. 策略 | 通过 NFTScan 进行 NFT 投资组合的管理和信息追踪
  10. Flink基础系列6-flink run参数