MapReduce海量数据并行处理总结
- 格式:doc
- 大小:4.79 MB
- 文档页数:70
mr工作原理和执行流程MR(MapReduce)是一种分布式计算模型,常用于处理大规模数据集。
它由谷歌公司提出,旨在处理海量数据的计算问题。
MR的工作原理和执行流程可以总结为以下几个步骤。
1.划分数据在MR中,数据集被划分为多个数据块,每个数据块是一个键值对的集合。
通常情况下,每个键值对都会有一个唯一的键,用于后续的分布式计算。
2. 映射阶段(Map)在映射阶段中,每个数据块被输入到一个映射函数中,这个映射函数由用户定义。
映射函数将每个输入的键值对转化为一组中间键值对。
这组中间键值对也是一个集合,它们可以是无序的。
3. 排序阶段(Shuffle and Sort)在排序阶段中,MR框架会对中间键值对进行排序和分组。
具体来说,MR框架会按照键对中间键值对进行排序,并将拥有相同键的中间键值对分组在一起。
这个过程称为Shuffle and Sort,旨在将相同键的中间键值对发送到同一个Reducer中。
4. 减少阶段(Reduce)在减少阶段中,MR框架会将拥有相同键的中间键值对发送到同一个Reducer中。
Reducer是用户定义的减少函数,它将一组具有相同键的中间键值对作为输入,并进行一些计算操作,最终输出一个或多个最终键值对。
5.合并结果最后,在合并结果阶段中,MR框架会将所有Reducer的输出结果进行合并,并将最终结果返回给用户。
总体来说,MR的工作原理和执行流程可以概括为:划分数据、映射、排序、减少和合并结果。
这个过程可以看作是一个分而治之的思想,通过将大规模数据集划分为多个小块,并在每个小块上执行映射和减少操作,以达到加速处理大规模数据集的目的。
值得一提的是,MR框架可以自动处理容错和并行性,提供了一个简单而高效的处理大规模数据的解决方案。
总结起来,通过映射和减少的分布式计算模型,MR可以高效地处理大规模数据集。
它的工作原理和执行流程使得用户能够简单地定义映射和减少函数,并在大规模数据集上进行分布式计算,从而解决了大规模数据处理的挑战。
IDC中的关键技术如何高效地处理海量数据海量数据处理是当今信息时代的重要任务之一。
在互联网快速发展的背景下,海量数据对于企业、科研机构和政府部门来说至关重要。
然而,海量数据的存储、传输、分析和管理是一个复杂而艰巨的任务。
为了高效地处理海量数据,IDC(Internet Data Center)中的关键技术起着重要作用。
本文将重点介绍IDC中的关键技术,并探讨它们如何高效地处理海量数据。
一、分布式存储技术分布式存储技术是IDC中处理海量数据的基础。
为了解决数据的分布和容灾问题,分布式存储技术将数据存储在多个节点上。
它通过数据分片、冗余备份和负载均衡来实现数据的高可用性和可扩展性。
分布式文件系统(DFS)和分布式数据库(DDB)是常用的分布式存储技术。
1. 分布式文件系统分布式文件系统是一种将文件划分为多个块,并在多个存储节点上进行分布存储的系统。
它通过文件的分片和冗余备份,实现了文件的高可用性和高吞吐量。
常见的分布式文件系统包括Hadoop Distributed File System(HDFS)和GlusterFS。
2. 分布式数据库分布式数据库是一种将数据划分为多个分片,并在多个节点上进行分布存储和处理的数据库系统。
它通过数据分片和负载均衡,实现了数据的高并发访问和高扩展性。
常见的分布式数据库包括Apache Cassandra和MongoDB。
二、数据传输和通信技术数据传输和通信技术是IDC中处理海量数据的关键技术之一。
在IDC中,海量数据的传输和通信需要考虑带宽、延迟和网络拓扑等因素。
1. 高速网络为了满足海量数据传输的需求,IDC中采用了高速网络技术。
例如,光纤通信技术可以提供更高的传输速度和带宽,以满足数据中心内部和数据中心之间的数据传输需求。
2. 数据压缩和加密为了降低海量数据的传输成本和保护数据的安全性,IDC中采用了数据压缩和加密技术。
数据压缩可以降低数据的传输量,提高传输效率;数据加密可以保护数据的机密性和完整性。
海量数据的高效存储与处理方法总结随着科技的快速发展和互联网的普及,我们生活中产生的数据量呈现出爆炸性增长的趋势。
这些海量数据对于企业、科研机构以及个人来说,都是一种宝贵的财富。
然而,如何高效地存储和处理这些海量数据成为了亟待解决的难题。
本文将总结一些海量数据的高效存储与处理方法,希望能为读者提供有价值的参考和指导。
一、高效存储方法1. 分布式文件系统(DFS)分布式文件系统是针对海量数据存储问题提出的一种解决方案。
它将海量数据切分成多个小文件,并存储在不同的物理设备上。
通过这种方式,可以充分利用多台机器的存储能力,提高整体的存储效率。
分布式文件系统具有高可用性、高可靠性和高性能的特点,常用的分布式文件系统包括Hadoop Distributed File System (HDFS)和Google File System(GFS)等。
2. NoSQL数据库NoSQL数据库是非关系型数据库的一种,相对传统的关系型数据库具有更好的可扩展性和高性能。
它们适用于存储和处理海量数据,能够实现数据的快速读写和高并发访问。
常见的NoSQL数据库包括MongoDB、Cassandra和Redis等,它们采用键值对、文档存储或列族存储等方式,提供了灵活的数据模型和丰富的查询功能。
3. 数据压缩技术海量数据的存储离不开对数据进行压缩的技术支持。
数据压缩可以减少存储空间的占用,提高存储效率。
目前,常用的数据压缩算法包括Lempel-Ziv-Welch(LZW)算法、Gzip和Snappy等。
这些算法具有压缩率高、压缩速度快的优点,可以实现对海量数据的高效存储。
二、高效处理方法1. 并行计算并行计算是一种常用的处理海量数据的方法。
它通过将任务分解成多个子任务,并分配给不同的处理器或计算节点进行并行计算,从而加快数据处理的速度。
常见的并行计算框架包括MapReduce、Spark和MPI等。
它们能够将数据分布式地处理在各个计算节点上,充分利用计算资源,提高数据处理的效率。
mapreduce总结MapReduce一个由Google出的分布式编程模型,它将大数据处理转化为分布式程序模型,提供了一种简单却强大的方法来处理海量的数据。
MapReduce优点在于提供了一种既可以低成本、高效率地处理大规模数据的数据处理框架,在大数据的处理和管理方面发挥了重要作用。
本文将对MapReduce的相关概念及其实现原理、特点和应用进行综述。
一、MapReduce的概念MapReduceGoogle发明的一种解决海量数据处理的分布式编程模型,它是一种计算框架,可以将一个大型数据集分割成多个小任务,并把任务分发到多台机器上执行,并最终将小任务的结果合并成最终结果。
MapReduce模型由Google在2004年提出,并于2005年在著名论文“MapReduce:A Flexible Data Processing Tool”中被正式发表,其主要贡献者为Google公司的三位研究人员:Jeff Dean、Sanjay Ghemawat Andrew Tomkins。
二、MapReduce的实现原理MapReduce实现原理主要分2个阶段。
1. Map:Map是利用已有的数据,进行数据归类和分块的过程,将大规模的数据量分割成多个中等规模的数据块,每个数据块用一个子任务来处理;2. Reduce阶段:Reduce是从 Map的多个子任务的结果中汇总出最终的结果;MapReduce框架建立在分布式环境之上,将一个大规模的计算任务拆分成小任务,分发到各个节点运行,最后把小任务的结果合并成一个总结果。
三、MapReduce的特点MapReduce模型提供了一种机制,可以实现以下处理大规模数据的特点:1.发处理大数据:MapReduce过将大数据集分成多个小数据集,并由多个节点并行处理,从而提供了大规模数据处理的并发能力,可以提升处理效率;2.错性:MapReduce型支持容错性处理,也即当某台机器出现故障或是宕机,MapReduce架会将任务重新分发到其它机器上执行,从而保证了数据的正确性;3.可伸缩性:MapReduce型具有较高的可伸缩性,即可以根据需求随时增加或减少计算任务的数量,从而改变计算的规模;4.持低延迟的数据处理:MapReduce数据处理过程中,可以有效避免数据倾斜现象,从而减少任务处理的时间。
MapReduce 体系结构简述
MapReduce 是一种用于处理海量数据的分布式计算框架,其核心思想是将数据处理过程分为两个阶段:Map 阶段和 Reduce 阶段。
在Map 阶段,数据被分成多个块,每个块都被映射到一个 Mapper 进程上进行处理;在 Reduce 阶段,多个 Mapper 进程的输出被聚合到一个 Reducer 进程上进行处理。
MapReduce 体系结构的基本组成部分包括:
1. MapTask:负责 Map 阶段的数据处理流程,接受输入数据块和 Map 函数,执行 Map 函数并将结果输出到本地磁盘。
2. ReduceTask:负责 Reduce 阶段的数据处理流程,接受来自多个 MapTask 的输出数据,执行 Reduce 函数并将结果输出到本地磁盘。
3. MRAppMaster:负责整个 MapReduce 程序的过程调度及状态协调,包括任务调度、进度监控、错误恢复等。
MapReduce 程序的运行过程如下:
1. 输入数据被分成多个数据块。
2. 每个数据块都被映射到一个 Mapper 进程上进行处理,Mapper 进程执行 Map 函数并将结果输出到本地磁盘。
3. 多个 Mapper 进程的输出数据被聚合到一个 Reducer 进程上进行处理,Reducer 进程执行 Reduce 函数并将结果输出到本地磁盘。
4. MRAppMaster 负责任务调度、进度监控、错误恢复等,确保
MapReduce 程序的正确性和可靠性。
MapReduce 体系结构的优点在于其高度并行化和可扩展性,能够处理海量数据并在分布式环境中实现高性能计算。
海量数据处理方法随着互联网的迅猛发展,海量数据的产生和积累已经成为了一种常态。
如何高效地处理海量数据成为了一个非常重要的问题。
针对海量数据的处理,有以下几种常见的方法:1.分布式计算:分布式计算是指将一个大规模的计算任务分解为多个小任务,并在多个计算节点上同时进行计算。
每个计算节点都能独立地处理一部分数据,然后将计算结果进行合并得到最终结果。
分布式计算能够充分利用多台计算机的计算能力,加快数据处理的速度。
2. MapReduce:MapReduce(映射-归约)是一种分布式计算模型,广泛应用于海量数据处理。
其核心思想是将数据处理任务划分为两个阶段:映射和归约。
映射阶段将输入数据分割成若干片段,并在多个计算节点上同时进行处理。
归约阶段将映射阶段得到的中间结果进行合并得到最终结果。
MapReduce能够自动处理节点故障、数据分片和任务调度等问题,提高数据处理的可靠性和效率。
3. 数据压缩:对于海量数据的处理,数据压缩是一个重要的技术手段。
通过数据压缩能够降低数据的存储和传输成本,并提高数据处理的速度。
常见的数据压缩算法有LZO、GZIP、Snappy等。
数据压缩也能够减少磁盘IO,提高磁盘读写的效率。
4.数据分片:对于海量数据的处理,常常需要将数据分割成若干个小块进行处理。
数据分片可以有效地利用多台计算机的计算能力,并降低单个任务的复杂度。
数据分片可以根据数据的键、哈希函数等进行划分,保证每个分片之间的数据量均匀。
5.增量处理:海量数据处理往往需要对数据进行实时的处理,而不是一次性的处理。
增量处理是指对新到达的数据进行即时处理,而不需要重新处理整个数据集。
增量处理能够减少处理时间,并节省计算资源。
6.数据预处理:对于海量数据的处理,常常需要进行一些预处理,如数据清洗、去重、排序等。
数据预处理的目的是为了提高数据质量和减少后续处理的复杂度。
通过数据预处理能够减少冗余数据和噪声数据,提高后续处理的效果。
mapreduce的map阶段和reduce阶段MapReduce是一个用于大数据处理的计算模型和编程框架,最初由Google公司开发并推出。
MapReduce的基本思想是利用并行计算和分布式存储的特点,将大规模的数据集分成若干个小部分,通过Map 函数将这些小部分独立地处理成一系列键值对,并通过Reduce函数合并这些键值对,形成最终的结果。
在MapReduce中,每个Map任务和Reduce任务都是独立的计算单元,可以在分布式计算集群中并行地执行,从而以极高的性能和可伸缩性处理海量数据。
MapReduce的Map阶段和Reduce阶段是这个计算模型的核心,下面分别进行详细的解释。
1. Map阶段在MapReduce中,Map阶段的主要作用是将原始数据抽象为一系列键值对,并输出到Reduce阶段进行处理。
在具体的实现中,Map函数会将输入的数据映射到一组中间结果中,并将这些结果输出到Reduce函数中处理。
Map函数的输入和输出都是键值对形式的数据,其中输入通常是一条记录,输出通常是若干个键值对。
Map函数的实现通常是通过编写一个Map任务,并将这个任务分发到MapReduce框架的计算节点中执行。
在Map任务中,会对每条输入数据进行处理,将它分解成若干个键值对,并输出到Reduce函数进行处理。
在具体的实现中,Map任务的输入可以来源于分布式文件系统中的一个或多个数据块,输出可以保存到分布式文件系统中的一个或多个文件中。
2. Reduce阶段在MapReduce中,Reduce阶段的主要作用是将Map阶段输出的中间结果进行合并,并输出最终的计算结果。
在具体的实现中,Reduce 函数会接收Map阶段输出的一组键值对,并将它们分组处理成一组新的键值对,形成最终的输出结果。
Reduce函数的实现通常是通过编写一个Reduce任务,并将这个任务分发到MapReduce框架的计算节点中执行。
在Reduce任务中,会对所有输入数据进行汇总和合并处理,并输出最终的结果。
大数据量,海量数据处理方法总结大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯这样的一些涉及到海量数据的公司经常会问到。
下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。
下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。
1.Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:对于原理来说很简单,位数组+k个独立hash函数。
将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。
同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。
所以一个简单的改进就是counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。
还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数个数。
当hash函数个数k=(ln2)*(m/n)时错误率最小。
在错误率不大于E的情况下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。
但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2为底的对数)。
举个例子我们假设错误率为0.01,则此时m应大概是n的13倍。
这样k大概是8个。
注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)。
通常单个元素的长度都是有很多bit的。
所以使用bloom filter内存上通常都是节省的。
扩展:Bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。
mapreduce实验报告总结一、引言MapReduce是一种用于处理和生成大数据集的编程模型和模型化工具,它由Google提出并广泛应用于各种大数据处理场景。
通过MapReduce,我们可以将大规模数据集分解为多个小任务,并分配给多个计算节点并行处理,从而大大提高了数据处理效率。
在本实验中,我们通过实践操作,深入了解了MapReduce的工作原理,并尝试解决了一些实际的大数据处理问题。
二、实验原理MapReduce是一种编程模型,它通过两个核心阶段——Map阶段和Reduce阶段,实现了对大规模数据的处理。
Map阶段负责处理输入数据集中的每个元素,生成一组中间结果;Reduce阶段则对Map阶段的输出进行汇总和聚合,生成最终结果。
通过并行处理和分布式计算,MapReduce可以在大量计算节点上高效地处理大规模数据集。
在本实验中,我们使用了Hadoop平台来实现MapReduce模型。
Hadoop是一个开源的分布式计算框架,它提供了包括MapReduce在内的一系列数据处理功能。
通过Hadoop,我们可以方便地搭建分布式计算环境,实现大规模数据处理。
三、实验操作过程1.数据准备:首先,我们需要准备一个大规模的数据集,可以是结构化数据或非结构化数据。
在本实验中,我们使用了一个包含大量文本数据的CSV文件。
2.编写Map任务:根据数据处理的需求,我们编写了一个Map任务,该任务从输入数据集中读取文本数据,提取出关键词并进行分类。
3.编写Reduce任务:根据Map任务的输出,我们编写了一个Reduce任务,该任务将相同关键词的文本数据进行汇总,生成最终结果。
4.运行MapReduce作业:将Map和Reduce任务编译成可执行脚本,并通过Hadoop作业调度器提交作业,实现并行处理。
5.数据分析:获取处理后的结果,并进行数据分析,以验证数据处理的有效性。
四、实验结果与分析实验结束后,我们得到了处理后的数据结果。
MapReduce海量数据并行处理复习大纲Ch. 1. 并行计算技术简介1.为什么需要并行计算?提高计算机性能有哪些基本技术手段提高字长,流水线微体系结构技术,提高集成度,提升主频迫切需要发展并行计算技术的主要原因1)单处理器性能提升达到极限2)爆炸性增长的大规模数据量2)超大的计算量/计算复杂度2.并行计算技术的分类有哪些主要的并行计算分类方法?1)按数据和指令处理结构:弗林(Flynn)分类2)按并行类型3)按存储访问构架4)按系统类型5)按计算特征6)按并行程序设计模型/方法1)按数据和指令处理结构:弗林(Flynn)分类SISD:单指令单数据流传统的单处理器串行处理SIMD:单指令多数据流向量机,信号处理系统MISD:多指令单数据流很少使用MIMD:多指令多数据流最常用,TOP500高性能计算机基本都属于MIMD类型2)按并行类型分类位级并行(Bit-Level Parallelism)指令级并行(ILP:Instruction-Level Parallelism)线程级并行(Thread-Level Parallelism)数据级并行:一个大的数据块划分为小块,分别由不同的处理器/线程处理任务级并行:一个大的计算任务划分为子任务分别由不同的处理器/线程来处理3)按存储访问结构分类A.共享内存(Shared Memory)所有处理器通过总线共享内存多核处理器,SMP……也称为UMA结构(Uniform Memory Access)B. 分布共享存储体系结构各个处理器有本地存储器同时再共享一个全局的存储器C. 分布式内存(Distributed Memory)各个处理器使用本地独立的存储器B和C也统称为NUMA结构(Non-Uniform Memory Access)4)按系统类型分类多核/众核并行计算系统MC(Multicore/Manycore) 或Chip-level multiprocessing, CMP 对称多处理系统SMP(Symmetric Multiprocessing)多个相同类型处理器通过总线连接并共享存储器大规模并行处理MPP(Massive Parallel Processing)专用内联网连接一组处理器形成的一个计算系统集群(Cluster)网络连接的一组商品计算机构成的计算系统网格(Grid)用网络连接远距离分布的一组异构计算机构成的计算系统5)按并行程序设计模型/方法分类共享内存变量(Shared Memory Variables)消息传递方式(Message Passing)MapReduce方式3.并行计算的主要技术问题并行计算有哪些方面的主要技术问题?多核/多处理器网络互连结构技术存储访问体系结构分布式数据与文件管理并行计算任务分解与算法设计并行程序设计模型和方法数据同步访问和通信控制可靠性设计与容错技术并行计算软件框架平台系统性能评价和程序并行度评估如何评估程序的可并行度(Amdahl定律)程序能得到多大并行加速依赖于该程序有多少可并行计算的比例。
经典的程序并行加速评估公式Amdahl定律:其中,S是加速比,P是程序可并行比例,N是处理器数目根据Amdahl定律:一个并行程序可加速程度是有限制的,并非可无限加速,并非处理器越多越好并行比例vs加速比50%=>最大2倍75%=>最大4倍90%=>最大10倍95%=>最大20倍4.MPI并行程序设计Message Passing Interface,基于消息传递的高性能并行计算编程接口5.什么是MapReduce概念MapReduce是面向大规模数据并行处理的:(1)基于集群的高性能并行计算平台(Cluster Infrastructure),(硬件层)允许用市场上现成的普通PC或性能较高的刀架或机架式服务器,构成一个包含数千个节点的分布式并行计算集群(2)并行程序开发与运行框架(Software Framework) (逻辑层)系统自动提供了一个庞大但设计精良的并行计算软件构架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行子任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算中的很多复杂细节交由系统负责处理,大大减少了软件开发人员的负担(3)并行程序设计模型与方法(Programming Model & Methodology) (用户层)借助于函数式Lisp语言中的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了完整的并行编程接口,完成大规模数据处理6.为什么MapReduce如此重要?1)高效的大规模数据处理方法2)第一个不同于冯诺依曼结构的、基于集群而非单机的计算方式的重大突破3)目前为止最为成功的基于大规模计算资源的并行计算抽象方法CH.2. MapReduce简介1.MapReduce的基本模型和处理思想1)对大数据分而治之;2)构建抽象模型-Map和Reduce,用户仅需要描述做什么,不需要关心怎么做3)提供统一的构架并完成以下的主要功能·任务调度·数据/代码互定位·出错处理·分布式数据文件管理·Combiner和Partitioner(设计目的和作用)biner和Partitioner设计目的和作用带宽优化(Combiner的设计目的和作用),不会改变key-value的形式用数据分区解决数据相关性问题(Partitioner的设计目的和作用)例如:有一个巨大的数组,其最终结果需要排序,每个Map节点数据处理好后,为了避免在每个Reduce节点本地排序完成后还需要进行全局排序,我们可以使用一个分区策略如:(d%R),d为数据大小,R为Reduce节点的个数,则可根据数据的大小将其划分到指定数据范围的Reduce节点上,每个Reduce将本地数据拍好序后即为最终结果Ch.3. Google /Hadoop MapReduce基本构架1.Google MapReduce的基本工作原理1)Google MapReduce并行处理的基本过程1.有一个待处理的大数据,被划分为大小相同的数据块(如64MB),及与此相应的用户作业程序2.系统中有一个负责调度的主节点(Master),以及数据Map和Reduce工作节点(Worker)3.用户作业程序提交给主节点4.主节点为作业程序寻找和配备可用的Map节点,并将程序传送给map节点5.主节点也为作业程序寻找和配备可用的Reduce节点,并将程序传送给Reduce节点6.主节点启动每个Map节点执行程序,每个map节点尽可能读取本地或本机架的数据进行计算7.每个Map节点处理读取的数据块,并做一些数据整理工作(combining, sorting等)并将中间结果存放在本地;同时通知主节点计算任务完成并告知中间结果数据存储位置8.主节点等所有Map节点计算完成后,开始启动Reduce节点运行;Reduce节点从主节点所掌握的中间结果数据位置信息,远程读取这些数据9.Reduce节点计算结果汇总输出到一个结果文件即获得整个处理结果2)失效处理主节点失效主节点中会周期性地设置检查点(checkpoint),检查整个计算作业的执行情况,一旦某个任务失效,可以从最近有效的检查点开始重新执行,避免从头开始计算的时间浪费,主节点采用热备。
工作节点失效工作节点失效是很普遍发生的,主节点会周期性地给工作节点发送检测命令,如果工作节点没有回应,这认为该工作节点失效,主节点将终止该工作节点的任务并把失效的任务重新调度到其它工作节点上重新执行。
3)计算优化问题如果有一个计算量大、或者由于某个问题导致很慢结束的Map节点,则会成为严重的“拖后腿者”。
解决方案把一个Map计算任务让多个Map节点同时做,取最快完成者的计算结果2.分布式文件系统GFS的基本工作原理1)Google GFS的基本设计原则廉价本地磁盘分布存储多数据自动备份解决可靠性为上层的MapReduce计算框架提供支撑2)Google GFS的基本构架和工作原理GFS MasterMaster上保存了GFS文件系统的三种元数据:命名空间(Name Space),即整个分布式文件系统的目录结构Chunk与文件名的映射表Chunk副本的位置信息,每一个Chunk默认有3个副本前两种元数据可通过操作日志提供容错处理能力;第3个元数据直接保存在ChunkServer上,Master 启动或Chunk Server注册时自动完成在Chunk Server上元数据的生成;因此,当Master失效时,只要ChunkServer数据保存完好,可迅速恢复Master上的元数据。
GFS ChunkServer即用来保存大量实际数据的数据服务器。
GFS中每个数据块划分默认为64MB,这是因为处理的文件都比较大,所以设置成64MB比较合理每个数据块会分别在3个(缺省情况下)不同的地方复制副本;对每一个数据块,仅当3个副本都更新成功时,才认为数据保存成功。
当某个副本失效时,Master会自动将正确的副本数据进行复制以保证足够的副本数GFS上存储的数据块副本,在物理上以一个本地的Linux操作系统的文件形式存储,每一个数据块再划分为64KB 的子块,每个子快有一个32位的校验和,读数据时会检查校验和以保证使用为有效的数据。
数据访问工作过程1.在程序运行前,数据已经存储在GFS文件系统中;程序实行时应用程序会告诉GFS Server所要访问的文件名或者数据块索引是什么2.GFS Server根据文件名会数据块索引在其文件目录空间中查找和定位该文件或数据块,并找数据块在具体哪些ChunkServer上;将这些位置信息回送给应用程序3.应用程序根据GFSServer返回的具体Chunk数据块位置信息,直接访问相应的Chunk Server优点:并发访问,解决mater拥堵。
3.分布式结构化数据表BigTable1) BigTable设计动机和目标需要存储管理海量的结构化半结构化数据海量的服务请求商用数据库无法适用2)目标广泛的适用性:为一系列服务和应用而设计的数据存储系统,可满足对不同类型数据的存储和操作需求很强的可扩展性:根据需要可随时自动加入或撤销服务器节点高吞吐量数据访问:提供P级数据存储能力,每秒数百万次的访问请求高可用性和容错性:保证系统在各种情况下度能正常运转,服务不中断自动管理能力:自动加入和撤销服务器,自动负载平衡简单性:系统设计尽量简单以减少复杂性和出错率2) BigTable数据模型—多维表通过行、列、时间戳一个行关键字(row key)一个列关键字(column key)一个时间戳(time stamp)进行索引和查询定位的。