大数据讲课笔记4.1hdfs基本概念(代码片段)

howard2005 howard2005     2022-10-23     555

关键词:

文章目录

零、学习目标

  1. 了解HDFS的演变
  2. 理解HDFS的基本概念
  3. 熟悉HDFS的特点

一、导入新课

  • 带领学生回顾项目三Hadoop集群相关的知识,由于Hadoop的核心是HDFS和MapReduce。其中,HDFS是解决海量大数据文件存储的问题,是目前应用最广泛的分布式文件系统。因此,本次课将针对HDFS分布式文件系统进行详细讲解。

二、新课讲解

(一)HFDS的演变

  • HDFS 源于 Google 在2003年10月份发表的GFS(Google File System)论文,接下来,我们从传统的文件系统入手,开始学习分布式文件系统,以及分布式文件系统是如何演变而来?

(二)HDFS的基本概念

  • HDFS(Hadoop Distributed Filesystem)是一个易于扩展的分布式文件系统,运行在成百上千台低成本的机器上。它与现有的分布式文件系统有许多相似之处,都是用来存储数据的系统工具,而区别于HDFS具有高度容错能力,旨在部署在低成本机器上。HDFS主要用于对海量文件信息进行存储和管理,也就是解决大数据文件(如TB乃至PB级)的存储问题。
NameNode(名称节点)DataNode(数据节点)
存储元数据存储文件内容
元数据保存在内存中文件内容保存在磁盘上
保存文件、Block与DataNode之间的映射关系维护Block标识到DataNode本地文件的映射关系

1、NameNode(名称节点)

  • NameNode是HDFS集群的主服务器,通常称为名称节点或者主节点。一旦NameNode关闭,就无法访问Hadoop集群。NameNode主要以元数据的形式进行管理和存储,用于维护文件系统名称并管理客户端对文件的访问;NameNode记录对文件系统名称空间或其属性的任何更改操作;HDFS负责整个数据集群的管理,并且在配置文件中可以设置备份数量,这些信息都由NameNode存储。
  • 名称节点负责管理分布式文件系统命名空间(NameSpace),保存了两个核心的数据结构:fsimageedits。元数据镜像文件fsimage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。用户操作日志文件edits中记录了所有针对文件的创建、删除、重命名等操作。

2、DataNode(数据节点)

  • DataNode是HDFS集群中的从服务器,通常称为数据节点。文件系统存储文件的方式是将文件切分成多个数据块,这些数据块实际上是存储在DataNode节点中的,因此DataNode机器需要配置大量磁盘空间。它与NameNode保持不断的通信,DataNode在客户端或者NameNode的调度下,存储并检索数据块,对数据块进行创建、删除等操作,并且定期向NameNode发送所存储的数据块列表。

3、Block(数据块)

  • 每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位,HDFS同样也有块(block)的概念,它是抽象的块,而非整个文件作为存储单元,在Hadoop2.x版本下,默认大小是128M,且备份3份,每个块尽可能地存储于不同的DataNode中。按块存储的好处主要是屏蔽了文件的大小,提供数据的容错性和可用性。
  • HDFS采用抽象块概念的优点
优点具体说明
支持大规模文件存储文件以块为单位进行存储,一个大规模文件可以被分拆成若干个文件块,不同的文件块可以被分发到不同的节点上,因此,一个文件的大小不会受到单个节点的存储容量的限制,可以远远大于网络中任意节点的存储容量。
简化系统设计首先,大大简化了存储管理,因为文件块大小是固定的,这样就可以很容易计算出一个节点可以存储多少文件块;其次,方便了元数据的管理,元数据不需要和文件块一起存储,可以由其它系统负责管理元数据。
适合数据备份每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性。

4、Rack(机架)

  • Rack是用来存放部署Hadoop集群服务器的机架,不同机架之间的节点通过交换机通信,HDFS通过机架感知策略,使NameNode能够确定每个DataNode所属的机架ID,使用副本存放策略,来改进数据的可靠性、可用性和网络带宽的利用率。

5、Metadata(元数据)

  • 元数据从类型上分可分三种信息形式,一是维护HDFS文件系统中文件和目录的信息,例如文件名、目录名、父目录信息、文件大小、创建时间、修改时间等;二是记录文件内容存储相关信息,例如文件分块情况、副本个数、每个副本所在的DataNode信息等;三是用来记录HDFS中所有DataNode的信息,用于DataNode管理。

(三)HDFS的特点

  • 随着互联网数据规模的不断增大,对文件存储系统提出了更高的要求,需要更大的容量、好更的性能以及安全性更高的文件存储系统,与传统分布式文件系统一样,HDFS分布式文件系统也是通过计算机网络与节点相连,也有传统分布式文件系统的优点和缺点。

1、HDFS的优点

(1)高容错性

  • 数据自动保存多个副本。它通过增加副本的形式,提高容错性。
    -某一个副本丢失以后,它可以自动恢复,这是由 HDFS 内部机制实现的,我们不必关心。

(2)适合批处理

  • 它是通过移动计算而不是移动数据。
  • 它会把数据位置暴露给计算框架。

(3)适合大数据处理

  • 数据规模:能够处理数据规模达到 GB、TB、甚至PB级别的数据。
  • 文件规模:能够处理百万规模以上的文件数量,数量相当之大。
  • 节点规模:能够处理10K节点的规模。
  • HDFS默认会将文件分割成block,128M为1个block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。如果小文件太多,那内存的负担会很重。

(4)流式数据访问

  • 一次写入,多次读取,不能修改,只能追加。
  • 它能保证数据的一致性。

(5)可构建在廉价机器上

  • 如普通PC、Linux系统上

2、HDFS的缺点

(1)不适合低延时数据访问

  • 比如毫秒级的来存储数据,无法处理。
  • 它适合高吞吐率的场景,就是在某一时间内写入大量的数据。但是它在低延时的情况 下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。

(2)无法高效的对大量小文件进行存储

  • 存储大量小文件的话,它会占用 NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。
  • 小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。 改进策略

(3)并发写入、文件随机修改

  • 一个文件只能有一个写,不允许多个线程同时写。
  • 仅支持数据 append(追加),不支持文件的随机修改。

三、归纳总结

  • 回顾本节课所讲的内容,并通过提问的方式引导学生解答问题并给予指导。

四、上机操作

  • 形式:单独完成
  • 题目:理解HDFS基本概念、优点和缺点
  • 要求:观看尚硅谷大数据视频中关于HDFS基本概念、优缺点的内容。

大数据讲课笔记4.3hdfs的shell操作(代码片段)

...ff08;2)退出安全模式(四)案例-Shell定时采集数据到HDFS1、配置环境变量2、准备日志存放目录和待上传文件3、设置日志文件上传的路径4、实现文件上传5、执行程序展示运行结果三、归纳总结四、上机操作零、 查看详情

大数据讲课笔记4.3hdfs的shell操作(代码片段)

...ff08;2)退出安全模式(四)案例-Shell定时采集数据到HDFS1、配置环境变量2、准备日志存放目录和待上传文件3、设置日志文件上传的路径4、实现文件上传5、执行程序展示运行结果三、归纳总结四、上机操作零、 查看详情

大数据讲课笔记4.4使用javaapi操作hdfs(代码片段)

...DFS服务5、在HDFS上创建文件6、写入HDFS文件(1)将数据直接写入HDFS文件(2)将本地文件写入HDFS文件7、读取HDFS文件(1)读取HDFS文件直接在控制台显示(2)读取HDFS文件,保存为本地文件8、重命... 查看详情

大数据讲课笔记4.4使用javaapi操作hdfs(代码片段)

...DFS服务5、在HDFS上创建文件6、写入HDFS文件(1)将数据直接写入HDFS文件(2)将本地文件写入HDFS文件7、读取HDFS文件(1)读取HDFS文件直接在控制台显示(2)读取HDFS文件,保存为本地文件8、重命... 查看详情

大数据讲课笔记4.2hdfs架构和原理

...#xff09;HDFS存储架构(二)HDFS文件读写原理1、HDFS写数据原理2、HDFS读数据原理三、归纳总结四、上机操作零、学习目标了解HDFS存储架构理解HDFS文件读写原理一、导入新课通过上次课的学习,学生对HDFS有了一定的认识&#... 查看详情

大数据讲课笔记3.4hadoop集群测试(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)通过UI界面查看Hadoop运行状态1、hadoop2和hadoop3端口区别表2、查看HDFS集群状态3、查看YARN集群状态(二)Hadoop集群初体验——词频统计1、启动Hadoop集群2、在... 查看详情

大数据讲课笔记3.4hadoop集群测试(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)通过UI界面查看Hadoop运行状态1、hadoop2和hadoop3端口区别表2、查看HDFS集群状态3、查看YARN集群状态(二)Hadoop集群初体验——词频统计1、启动Hadoop集群2、在... 查看详情

hadoop学习笔记--hdfs(代码片段)

文章目录引言1.基本特征1.1高容错性1.2数据容量大1.3可扩展性1.4高吞吐量1.5就近计算2.体系架构2.1NameNode2.2DataNode3.存储机制3.1Block3.2副本管理策略4.数据读写过程4.1数据的读取过程4.2数据的写入过程5.JavaAPI编程6.HDFS的高可靠性机制6... 查看详情

大数据讲课笔记3.3hadoop集群配置(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)配置Hadoop集群1、在master虚拟机上配置hadoop(1)编辑Hadoop环境配置文件-hadoop-env.sh(2)编辑Hadoop核心配置文件-core-site.xml(3)编辑HDFS配置文... 查看详情

大数据讲课笔记3.3hadoop集群配置(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)配置Hadoop集群1、在master虚拟机上配置hadoop(1)编辑Hadoop环境配置文件-hadoop-env.sh(2)编辑Hadoop核心配置文件-core-site.xml(3)编辑HDFS配置文... 查看详情

大数据讲课笔记5.1初探mapreduce(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)MapReduce核心思想(二)MapReduce编程模型(三)MapReduce编程实例——词频统计1、词频统计设计思路(1)Map阶段(2)Reduce阶段2、词频统... 查看详情

安卓讲课笔记4.1安卓按键事件(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)安卓常用事件1、单击事件2、焦点事件3、按键事件4、触碰事件(二)安卓事件处理方式1、基于回调的事件处理机制2、基于监听的事件处理机制(三ÿ... 查看详情

大数据讲课笔记1.8shell基础(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)shell概述1、了解shell的含义2、Linux中shell存在形式3、shell如何执行用户指令(二)常用shell命令1、管道命令(1)命令概述(2)命令格式(... 查看详情

大数据讲课笔记6.2zookeeper数据模型(代码片段)

...零、学习目标一、导入新课二、新课讲解(一)数据存储结构(二)Znode的类型1、临时节点2、永久节点(三)Znode的属性三、归纳总结四、上机操作零、学习目标理解ZK数据存储结构了解Znode的类型和属性... 查看详情

大数据讲课笔记5.4mapreduce运行模式(代码片段)

...式2、集群运行模式(二)MapReduce性能优化策略1、数据输入2、Map阶段3、Reduce阶段4、Shuffle阶段5、其它调优属性三、归纳总结四、上机操作零、学习目标了解MapReduce运行模式理解MapReduce性能优化策略一、导入新课通过 查看详情

大数据讲课笔记1.6压缩与打包(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)压缩与打包1、压缩2、打包3、压缩或打包文件常见扩展名(二)gzip命令1、命令作用2、选项参数3、实战练习任务1、压缩文件任务2、解压文件(三)... 查看详情

大数据讲课笔记3.1hadoop安装准备(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)Hadoop集群拓扑1、集群拓扑2、角色分配(二)虚拟机安装(三)虚拟机克隆1、克隆类型(1)完整克隆(2)链接克隆2、克隆步骤(... 查看详情

大数据讲课笔记1.2linux用户操作(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)用户账号管理1、用户与用户组文件2、用户账号管理工作(二)用户操作1、切换用户(1)语法格式(2)切换到普通用户(3)切换到r... 查看详情