大数据入门-五分钟读懂HDFS

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据入门-五分钟读懂HDFS

一、概念


HDFS英文全称为:Hadoop Distributed File System,是指被设计成适合运行在通用硬件的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。


这里再强调一下几个特点,注意看黑板。


超大文件:可以存放TB到PB级别的数据量。


流式访问:一次写入,多次读取。更加关注所有数据集的查询时间。


商用硬件:机器都是普通的机器,可以组合起来一起使用,三个臭皮匠顶个诸葛亮。但是单节点故障会较多,所以要有一种机制和方法来迅速恢复业务。


不适合低延时数据:针对的问题和解决方案是高吞吐,所以不适合低延时数据,当然后面会有专门的低延时架构。所以问题出来了总有方案。不要慌。


不支持任意修改: 系统以读数据为主,支持在文末追加数据,不支持任意修改。


二、架构及组件概念


20210809070331532.jpg


数据块:默认一个块(block)的大小为128MB(HDFS的块这么大主要是为了最小化寻址开销),要在HDFS中存储的文件可以划分为多个分块,每个分块可以成为一个独立的存储单元。与本地磁盘不同的是,HDFS中小于一个块大小的文件并不会占据整个HDFS数据块。


NameNode:管理整个文件系统的元数据。例如管理元数据,维护维护目录结构、响应客户端请求。


详解说明:NameNode作为管理节点,它负责整个文件系统的命名空间,并且维护着文件系统树和整棵树内所有的文件和目录,这些信息以两个文件的形式(命名空间镜像文件和编辑日志文件)永久存储在NameNode的本地磁盘上。除此之外,同时,NameNode也记录每个文件中各个块所在的数据节点信息,但是不永久存储块的位置信息,因为块的信息可以在系统启动时重新构建。


DataNode:复制管理用户的文件数据块。例如管理用户提交的数据 心跳机制 块报告。


NameNode容错性:NameNode作为管理节点,它的地位是非同寻常的,一旦NameNode宕机,那么所有文件都会丢失,因为NameNode是唯一存储了元数据、文件与数据块之间对应关系的节点,所有文件信息都保存在这里,NameNode毁坏后无法重建文件。


第一种机制是备份那些组成文件系统元数据持久状态的文件,比如:将文件系统的信息写入本地磁盘的同时,也写入一个远程挂载的网络文件系统(NFS),这些写操作实时同步并且保证原子性。

第二种机制是运行一个辅助NameNode,用以保存命名空间镜像的副本,在NameNode发生故障时启用。(也可以使用热备份NameNode代替辅助NameNode)。


心跳机制:维护集群的可用性


NameNode启动的时候,会有一个加载元数据(数据的数据,类似于表的索引)和块报告(DataNode会定时(可以再配置文件中设置,所以一定要时间同步)对块信息进行统计)的过程,NameNode通过心跳机制维护整个集群的可用性。如果块报告上传失败,NameNode不会更新元数据,在块报告的时候就会将其删除掉。



块缓存:数据通常情况下都保存在磁盘,但是对于访问频繁的文件,其对应的数据块可能被显式的缓存到DataNode的内存中,以堆外缓存的方式存在,一些计算任务(比如MapReduce)可以在缓存了数据的DataNode上运行,利用块的缓存优势提高读操作的性能。


高可用性:通过备份NameNode存储的文件信息或者运行辅助NameNode可以防止数据丢失,但是依旧没有保证了系统的高可用性。一旦NameNode发生了单点失效,那么必须能够快速的启动一个拥有文件系统信息副本的新NameNode。


这个就是主NameNode与备份的NameNode之间的交互了。


存放策略:默认的HDFS block放置策略在最小化写开销和最大化数据可靠性、可用性以及总体读取带宽之间进行了一些折中。一般情况下复制因子为3,HDFS的副本放置策略是将第一个副本放在本地节点,将第二个副本放到本地机架上的另外一个节点而将第三个副本放到不同机架上的节点。这种方式减少了机架间的写流量,从而提高了写的性能。机架故障的几率远小于节点故障。这种方式并不影响数据可靠性和可用性的限制,并且它确实减少了读操作的网络聚合带宽,因为文件块仅存在两个不同的机架, 而不是三个。文件的副本不是均匀地分布在机架当中,1/3在同一个节点上,1/3副本在同一个机架上,另外1/3均匀地分布在其他机架上。这种方式提高了写的性能,并且不影响数据的可靠性和读性能。


三、读写流程


写数据流程


20210809072600957.jpg


读数据流程


20210809072619518.jpg


四、大白话


这个东西就是为了解决数据量大而出来的,其思想是利用多个机器联合的力量来构造一个庞大的集群,让作业在各个机器上面运行,然后汇总到一个地方。当然每个机器是比较菜鸡的,但是菜鸡多了,每个人贡献一点,整个组织的力量就大了。这个和我们现在组织一样,有个领导者,就是NameNode,来管理我们的职员DataNode,你今天做了什么工作,写个日报给我,每天用心跳机制提醒一个,你应该写日报了。然后他能知道每个职员的情况。当然这里不能严格的类比,因为每个职员都不一样,但是DataNode是一样的。复制策略就是说,你走了我再招人培养,当然一般的老板不会这样做,花费人力成本太高了,但是当市场上这样的人多了之后,其实你就可以随时被替换了,所以好好学习,天天向上吧,毕竟还有吃饭。我们只有把自己的独特性弄出来之后,你就成为唯一的,且不能被辞掉的那个人了。


五、其他


下一篇:介绍数据仓库Hive。


鸡汤:今日事,今日毕。


备注:以上资料来自网络,侵删。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
184 6
|
2月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
58 0
|
2月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
85 5
|
2月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
37 4
|
2月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
180 5
|
2月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
70 3
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
56 4
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
105 3
|
2月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
142 4
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
88 4
下一篇
DataWorks