谷歌文件系统(gfs,谷歌文件系统)
谷歌文件系统在2003年通过论文介绍。谷歌以前使用的文件系统是大文件,随着谷歌数据的急剧增加,它需要核心数据存储和针对谷歌搜索引擎优化的文件系统。
**gfs 主要由一个 master node 和多个 slave node 组成。从功能上看,它由 master、chunk 服务器和 client 组成。
master:中央服务器在管理和控制整个 gfs 方面的作用
chunk 服务器:物理服务器,处理物理 I/O
客户端:请求文件 I/O 的客户端应用程序
执行过程如下:首先,当客户端请求 master 读取和写入文件时,master 将接近 client 的 chunk 服务器的信息传递给客户端。客户端执行 io 操作,直接与转发的 chunk 服务器通信。
gfs的巨大优势是failuer tolerance。换句话说,如果其中一台服务器在物理上发生故障,它也不会停止。例如,如果其中一个 chunk 服务器发生故障,master 将传递未发生故障的 chunk 服务器的信息,如果 master 服务器发生故障,另一台服务器将替换 master。因此,chunk server 可以配置为价格低廉的通用计算机,并在群集环境中运行良好。
MapReduce
2004年,谷歌的论文(作者:谷歌传奇杰夫·迪恩)也介绍了map reduce。论文的标题是mapreduce:simplified data processing on large clusters。换句话说,mapreduce 实际上是一种在大容量分布式群集中处理数据的方法。
首先,map 函数接收一些键值作为输入,并输出每个单词的相关事件次数。reduce 函数将特定单词生成的所有计数相加。
map 函数读取 key-vale 以将其筛选或转换为其他值,而 reduce 函数根据新 key 在通过 map 输出的列表中进行 groupping 并输出 aggregation 的结果。
当 mapreduce 处理多台计算机的数据时,它易于扩展,因为它具有并行性。当计划程序分散放置数据时,worker 会执行操作,每个中间结果都存储在本地磁盘上,稍后分配 reduce 操作后,将读取中间结果以执行操作,并同样将其保存到文件系统中。如上图所示,您发现以前在 master 节点上接收和处理所有数据的方式,以及通信处理方面确实减少了数据。
Google 使用 mapreduce 计算 url 访问频率和 web-link 图形,在索引和排序方面提供了巨大的性能改进。
hadoop
hadoop 是 2006 年 doug cutting 和 mike cafarella 开发的分布式处理框架。他们实施hdfs和mapreduce来取代谷歌的gfs。
Hadoop 由分布式文件系统 hdfs(hadoop distributed file system)和分布式处理系统 mapreduce 组成。hdfs 和 mapreduce 都是 master/slave 结构,在 hdfs 中,master 称为 name node,slave 称为数据节点,mapreduce 分别称为工作跟踪器和 tasktracker。
在 hdfs 中,master name node 管理文件的元 (meta) 信息,实际数据存储在多个数据节点中。此时,数据被划分为一定大小(default 64mb)的块单元进行管理,这些块分布在多个数据节点中,并复制并存储。这样做的原因是,即使某些数据节点出现故障,整个系统在读取和写入数据时也没有问题。
因此,mapreduce 是一个系统,它通过在 hdfs 中并行处理存储在多个 tasktracker 中的数据来快速处理大量数据。特别是,由于 mapreduce 提供的功能,以持续监视任务跟踪程序的状态和整个任务进度,并在 jobtracker 中自动恢复暂时故障,因此即使某些 tasktracker 设备出现问题,整个操作也设计为没有问题。此外,由于 jobtracker 会自动将任务分配给多个 tasktracker 并集成结果,因此用户可以专注于数据处理逻辑,而无需太在意整个工作流和细节。
内容来源于网络,如有侵权,请联系作者删除!