HDFS 是如何实现大数据高容量、可靠的存储和访问的。

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据数据量大、类型多种多样、快速的增长等特性,那么HDFS是如何去解决大数据存储、高可用访问的了?

      对于一个企业大数据应用来说,搞定了大数据存储基本上就解决了大数据应用最重要的问题。Google 三驾马车的第一驾是GFS,Hadoop最先开始设计的就是HDFS,可见分布式存储的重要性,整个大数据生态计算框架多种多样,但是大数据的存储却没有太大的变化,HDFS依旧是众多分布式计算的基础。当然HDFS也有许多缺点,一些对象存储等技术的出现给HDFS的地位带来了挑战,但是HDFS目前还是最重要的大数据存储技术,新的计算框架想要获得广泛应用依旧需要支持HDFS。大数据数据量大、类型多种多样、快速的增长等特性,那么HDFS是如何去解决大数据存储、高可用访问的了?

HDFS系统架构

    Hadoop分布式文件系统的设计目标就是把数以千计的服务器管理起来,将这么大规模的服务器当作一个分布式文件系统进行管理,以提供PB存储容量应对大量数据的存储,同时供计算框架和上层应用提供服务,可以像普通文件系统一样存储、访问大规模的文件数据。具体的实现是将数据进行分块后进行并行的存储以及冗余存储,如下系统架构:


xxxx.png


图中hdfs中有两个关键组件,一个是Namenode负责对分布式文件系统元数据的管理,存储了文件名、路径、副本数量、数据块id以及存储的Datanode节点等信息,另一个是Datanode节点,负责文件数据的存储和读写操作,HDFS将文件数据分割成若干数据块,每个DataNode存储一部分数据块,这样文件就分布存储在整个HDFS服务器中。

大量数据存储的解决?

从hdfs系统架构就可以看出,通过将大文件切分成小的数据块存储到不同服务器上,可以实现一个大文件的存储,同时通过联合多个服务器多块硬盘实现整个存储系统的大容量,大文件的分片存储,不同分片可以进行并行读写操作,进而实现数据的高速访问。

HDFS文件系统高可用设计?

在一个分布式系统中,节点失效是比较常见的,在HDFS系统中不可避免的遇到网络问题、磁盘故障、DataNode节点故障、Namenode节点故障,那么HDFS是如何应对这些问题,保障系统的高可用的了。

首先我们来看下数据存储的故障容错,这块主要是磁盘介质,存储数据可能会出现错乱,这个HDFS主要会对存储在DataNode上的数据块,计算并存储校验和,并计算Datanode读取数据的校验和,如果异常就会转而去读取其他DataNode节点的备份数据。

其次,节点故障,磁盘,HDFS节点故障主要是通过心跳机制,DataNode会定期通过心跳去NameNode保持联系,Namenode监测到DataNode超时没有心跳后,就会查其元数据,通知其他节点复制失效节点上的数据块到其他服务器上,保证副本数量,磁盘故障的话DataNode也是类似处理,DataNode检测到磁盘故障后,将故障快反馈给namenode进行数据块复制。

接着NameNode鼓掌容错,作为HDFS核心节点,记录着HDFS文件分配表信息,所有的文件路径和数据块存储信息都保存在NameNode上,NameNode故障将导致整个集群的不可用,HDFS设计采用主从热备提高系统的可用性。

HDFS文件系统高吞吐量设计?

在文件操作中,NameNode负责文件元数据的操作,DataNode负责处理文件的读写请求,文件数据流不会经过NameNode的处理,只会跟存储在具体DataNode进行联系,因此NameNode不会成为系统的瓶颈,成百上千台DataNode节点应对文件内容数据流的读写,其吞吐量大大提高了。

HDFS的缺点

数据访问延时较长,数据以分块的方式存储在磁盘当中,读取需要经过Namenode到DataNode网络访问流程,以及磁盘寻址的过程,不如内存缓存访问高效以及不如关系型数据库利用索引加快数据访问特性。

不适合大量小文件存储,小文件太多造成文件元数据过多,超出了NameNode的处理能力,容易造成NameNode的瓶颈。

文件写入支持单一,只支持追加文件,不支持随机文件写入以及文件更新。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
存储 算法 数据挖掘
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
本文介绍了2023年中国高校大数据挑战赛赛题B的Python实现方法,该赛题涉及DNA存储技术中的序列聚类与比对问题,包括错误率分析、序列聚类、拷贝数分布图的绘制以及比对模型的开发。
45 1
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
|
18天前
|
存储 分布式计算 资源调度
通过日志聚合将作业日志存储在HDFS中
如何通过配置Hadoop的日志聚合功能,将作业日志存储在HDFS中以实现长期保留,并详细说明了相关配置参数和访问日志的方法。
15 0
通过日志聚合将作业日志存储在HDFS中
|
1月前
|
存储 缓存 NoSQL
深入解析Memcached:内部机制、存储结构及在大数据中的应用
深入解析Memcached:内部机制、存储结构及在大数据中的应用
|
21天前
|
存储 分布式计算 Hadoop
|
21天前
|
存储 机器学习/深度学习 分布式计算
HDFS与网络附加存储(NAS)的比较
【8月更文挑战第31天】
30 0
|
1月前
|
存储 分布式计算 算法
"揭秘!MapReduce如何玩转压缩文件,让大数据处理秒变‘瘦身达人’,效率飙升,存储不再是烦恼!"
【8月更文挑战第17天】MapReduce作为Hadoop的核心组件,在处理大规模数据集时展现出卓越效能。通过压缩技术减少I/O操作和网络传输的数据量,不仅提升数据处理速度,还节省存储空间。支持Gzip等多种压缩算法,可根据需求选择。示例代码展示了如何配置Map输出压缩,并使用GzipCodec进行压缩。尽管压缩带来CPU负担,但在多数情况下收益大于成本,特别是Hadoop能够自动处理压缩文件,简化开发流程。
29 0
|
2月前
|
存储 XML JSON
Bond——大数据时代的数据交换和存储格式
【7月更文挑战第12天】Bond是微软开源的可扩展数据格式化框架,适用于服务间通信等场景。它使用IDL定义数据结构,并具备高效性能及良好的版本控制能力。通过描述消息格式并生成代码,Bond简化了多语言间的数据交换,相较于XML和JSON,在效率和支持快速开发方面更具优势。实际应用时需根据需求选择合适的数据交换格式。
|
2月前
|
分布式计算 DataWorks 数据处理
MaxCompute操作报错合集之UDF访问OSS,配置白名单后出现报错,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
2月前
|
分布式计算 大数据 数据挖掘
MaxCompute产品使用合集之如何解决MC通过外部表方式访问Hologres时,数据量达到3000万条左右导致查询速度慢
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
存储 NoSQL 大数据
大数据存储:HBase与Cassandra的对比
【7月更文挑战第16天】HBase和Cassandra作为两种流行的分布式NoSQL数据库,在数据模型、一致性模型、数据分布、查询语言和性能等方面各有千秋。HBase适用于需要强一致性和与Hadoop生态系统集成的场景,如大规模数据处理和分析。而Cassandra则更适合需要高可用性和灵活查询能力的场景,如分布式计算、云计算和大数据应用等。在实际应用中,选择哪种数据库取决于具体的需求和场景。希望本文的对比分析能够帮助读者更好地理解这两种数据库,并做出明智的选择。