从0开始学大数据

月伴飞鱼 2024-09-10 16:14:38
学习专栏
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

专栏链接:https://time.geekbang.org/column/intro/100020201

HDFS

Hadoop分布式文件系统HDFS的设计目标是管理数以千计的服务器、数以万计的磁盘

将这么大规模的服务器计算资源当作一个单一的存储系统进行管理

  • 对应用程序提供数以PB计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。

HDFS是在一个大规模分布式服务器集群上,对数据分片后进行并行读写及冗余存储。

因为HDFS可以部署在一个比较大的服务器集群上,集群中所有服务器的磁盘都可供HDFS使用

  • 所以整个HDFS的存储空间可以达到PB级容量。

image-20240801111301945

DataNode负责文件数据的存储和读写操作,HDFS将文件数据分割成若干数据块(Block)

  • 每个DataNode存储一部分数据块,这样文件就分布存储在整个HDFS服务器集群中。

应用程序客户端(Client)可以并行对这些数据块进行访问

  • 从而使得HDFS可以在服务器集群规模上实现数据并行访问,极大地提高了访问速度。

在实践中,HDFS集群的DataNode服务器会有很多台

  • 一般在几百台到几千台这样的规模,每台服务器配有数块磁盘,整个集群的存储容量大概在几PB到数百PB。

NameNode负责整个分布式文件系统的元数据(MetaData)管理

  • 也就是文件路径名、数据块的ID以及存储位置等信息,相当于操作系统中文件分配表(FAT)的角色。

HDFS为了保证数据的高可用,会将一个数据块复制为多份(缺省情况为3份)

  • 并将多份相同的数据块存储在不同的服务器上,甚至不同的机架上。

这样当有磁盘损坏,或者某个DataNode服务器宕机,甚至某个交换机宕机

  • 导致其存储的数据块不能访问的时候,客户端会查找其备份的数据块进行访问。

常用的保证系统可用性的策略有冗余备份、失效转移和降级限流。

MapReduce

MapReduce既是一个编程模型,又是一个计算框架。

也就是说,开发人员必须基于MapReduce编程模型进行编程开发

  • 然后将程序通过MapReduce计算框架分发到Hadoop集群中运行。

一个map函数可以针对一部分数据进行运算

这样就可以将一个大数据切分成很多块(这也正是HDFS所做的)

  • MapReduce计算框架为每个数据块分配一个map函数去计算,从而实现大数据的分布式计算。

假设有两个数据块的文本数据需要进行词频统计,MapReduce计算过程如下图所示。

image-20240801111319729

这样一个MapReduce程序要想在分布式环境中执行,并处理海量的大规模数据,还需要一个计算框架

  • 能够调度执行这个MapReduce程序,使它在分布式的集群中并行运行
    • 而这个计算框架也叫MapReduce。
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!