HDFS?

发布时间 2023-04-11 01:04:55作者: 黑逍逍

Hadoop分布式文件系统(HDFS)是Apache Hadoop生态系统的核心组件之一,它是一种设计用于存储和处理超大规模数据集的分布式文件系统。

HDFS是一个分布式文件系统,它将大文件切分成多个小文件存储在不同的计算机节点上,因此可以存储大规模的非结构化数据,例如文本、图像、音频和视频等。

HDFS中的数据以文件的形式存储,每个文件都被划分成多个块(block),通常是64MB或128MB,这些块被分配给不同的节点进行存储。每个块都会有多个备份,以保证数据的可靠性和高可用性

因此,HDFS的存储方式更适合存储大规模的非结构化数据,而不是结构化的数据

 

结构化、半结构化和非结构化数据是根据数据的组织方式和格式来区分的。

结构化数据是指具有固定结构、可以用表格或关系型数据库进行存储、管理和处理的数据,通常采用行和列的形式进行组织。例如,订单、客户、产品和销售记录等数据都是结构化数据。

半结构化数据则是一种类似于结构化数据的数据组织形式,但是具有更灵活的结构,没有严格的模式定义。半结构化数据通常是以XML、JSON、YAML等格式进行组织,可以用于描述和交换数据。例如,网页、电子邮件和传感器数据等都是半结构化数据。

非结构化数据则是指没有固定格式或结构的数据,通常不适合用关系型数据库进行存储和处理,也难以用表格或其他形式的数据结构进行组织。例如,音频、视频、图像、文本文件等都是非结构化数据。非结构化数据通常需要特殊的工具和技术进行处理和分析,如自然语言处理、图像分析和机器学习等

 

将大文件切割然后存储,怎么再次找到呢

在 HDFS 中,一个大文件被切成多个块(默认大小为 128 MB),然后这些块被存储在不同的数据节点上。每个块会有一个唯一的标识符(Block ID)和一个副本数量,这些信息会记录在 HDFS 的 NameNode 上。客户端访问 HDFS 时,会首先向 NameNode 发送文件请求,然后 NameNode 返回文件的元数据,包括文件所在的块以及块所在的数据节点信息。客户端再根据这些信息直接从数据节点读取所需数据块,最终将这些块组合成完整的文件。因此,HDFS 通过数据块的复制、分布和元数据管理,保证了高可靠性和可扩展性

 

HDFS和Hbase的区别

HDFS和HBase都是Hadoop生态系统中的分布式存储系统,但它们有一些区别。

HDFS是一种分布式文件系统,专门用于存储和处理大数据集,它的设计重点是高可靠性、高容错性和高性能。它通过将数据块复制到多个节点来实现数据的冗余备份,保证了数据的可靠性和容错性。而且,HDFS适合存储大文件,因为它的读写速度非常快,但不适合小文件存储。

相比之下,HBase是一种分布式的、面向列的NoSQL数据库,它是建立在HDFS之上的,具有高可扩展性和高可用性。HBase是非关系型数据库,数据存储在列族中,每个列族可以包含多个列,而且列可以动态增加,它适合存储非结构化和半结构化的数据,支持实时读写和随机访问。

总的来说,HDFS适合存储大文件,而HBase适合存储半结构化或非结构化的数据,并支持实时读写和随机访问。