【赵渝强老师】大数据技术的理论基础

简介: 本文介绍了大数据平台的核心思想,包括Google的三篇重要论文:Google文件系统(GFS)、MapReduce分布式计算模型和BigTable大表。这些论文奠定了大数据生态圈的技术基础,进而发展出了Hadoop、Spark和Flink等生态系统。文章详细解释了GFS的架构、MapReduce的计算过程以及BigTable的思想和HBase的实现。

b112.png 大数据平台所要解决的问题是数据的存储和数据的计算,其核心思想采用的是分布式集群的思想。另一方面,分布式集群的思想在Google的技术系统中得到了很好的应用。因此Google将其核心技术的思想以论文的形式公开发表出来,这就是“Google的三驾马车”,即:Google的文件系统、MapReduce分布式计算模型和BigTable大表。这三篇论文奠定了大数据生态圈体系中的技术核心,从而有了基于Java的实现框架——Hadoop生态圈体系。进一步发展起来了后续的Spark生态圈体系和Flink生态圈体系。

   

因此,在学习大数据生态圈体系的具体内容之前,有必要对Google的这三篇论文有一个比较清楚的了解,这对于后续进一步掌握大数据平台的生态圈体系非常重要。本小节将为详细介绍这三篇论文的核心思想及其实现原理。

 

视频讲解如下:


一、Google的文件系统

   

Google文件系统GFS,即:Google File System是一个典型的分布式文件系统,也是一个分布式存储的具体实现方式。在日常的工作和生活中所使用的的网盘也是一个典型的分布式文件系统。下图展示了GFS的基本架构。


   

将数据存入一个分布式文件系统中,需要解决两方面的问题:如何存储海量的数据和如何保证数据的安全。如果有了解决的方案,就能够实现一个分布式文件系统来存储大数据,并且保证数据的安全。而解决的方案便是采用分布式集群的方式,即采用多个节点组成一个分布式环境来解决这两个问题,下面分别进行讨论实现的细节,从而引出Hadoop中的分布式文件系统HDFS(Hadoop Distributed File System)的基本架构和实现原理。


二、MapReduce分布式计算模型

   

大数据的存储可以采用分布式文件系统来存储,那么如何解决大数据的计算问题呢?跟大数据存储的思想一样,由于数据量庞大,无法采用单机环境来完成计算任务。既然单机环境无法完成任务,那么就可以采用多台服务器一起执行任务,从而组成一个分布式计算的集群完成大数据的计算任务。基于这样的思想,Google提出了MapReduce分布式计算模型的方式处理大数据。


提示:MapReduce是一种计算模型,它跟具体的编程语言没有关系。

   

Hadoop体系中实现了MapReduce的计算模型。由于Hadoop是采用Java实现的框架,因此开发的MapReduce程序也将是一个Java程序。众所周知,MongoDB也支持MapReduce的计算模式,而MongoDB中的编程语言是JavaScript,所以在MongoDB中开发MapReduce程序需要书写JavaScript代码。

   

MapReduce的核心思想其实就只有6个字,即:先拆分、再合并。通过这样的方式,不管得到的向量矩阵有多大都可以进行计算。拆分的过程叫做Map;而合并的过程叫做Reduce。如下图所示:


   

上图中的示例假设有一个庞大的矩阵要进行计算。由于无法在一台计算机上完成,因此将矩阵进行拆分,首先将其拆分为4个小矩阵,只要拆分到足够小让一台计算机能够完成计算即可。每台计算机计算其中的一个小矩阵得到部分的结果。这个过程就叫做Map,如图中的实线方框的部分。将Map输出的结果在进行聚合操作的二次计算,从而得到大矩阵的结果,这个过程叫做Reduce,如图中的虚线方框的部分。

   

下图展示了在Hadoop中执行MapReduce任务的输出日志信息。

提示:通过输出的日志可以看出任务被拆分成了两个阶段,即:Map阶段和Reduce阶段。当Map执行完成后,接着执行Reduce。


三、BigTable大表

   

BigTable大表的思想是Google的“第三驾马车”。正因为有了这样的思想就有了Hadoop生态圈体系中的NoSQL数据库HBase。

提示:NoSQL数据库泛指所有的非关系型数据库。NoSQL数据库有很多种,比如:Hadoop体系中的HBase;基于内存的Redis和基于文档的MongoDB。而NoSQL数据库从某种程度上说也是属于大数据体系中的组成部分。

   

那么什么是BigTable大表呢?简单来说就是把所有的数据存入一张表中,这样做的目的就是为了提高查询的性能。但是这也将违背关系型数据库范式的要求。在关系型数据库中需要遵循范式的要求来减少数据的冗余。减少数据冗余的好处是节约了存储的空间,但是会影响性能。例如:在关系型数据库中执行多表查询会产生笛卡尔积。因此,关系型数据库的出发点是通过牺牲性能,达到节约存储空间的目的。这样设计是有实际意义的,因为在早些年的时候,存储的介质是比较昂贵的,需要考虑成本的问题。而大表的思想正好与其相反,它是把所有的数据存入一张表中。大表的思想是通过牺牲存储空间来达到提高查询性能的目的。

   

HBase就是BigTable大表思想的一个具体实现,并且它是一个列式存储的NoSQL数据库适合执行数据的分析和处理。简单来说就是适合执行查询操作。下图展示了HBase的表结构。


   

HBase的表由列族组成,图中的“emp”和“dept”都是列族,列族中包含列。创建表的时候必须创建列族,不需要创建列。当执行插入语句插入数据到列族中的时候,需要指定rowkey和具体的列。如果列不存在,HBase会自动创建相应的列,再把数据插入到对应的单元格上。


提示:rowkey相当于关系型数据库的主键。但是与主键不同的是,rowkey与关系型数据库类似不允许为空,但是可以重复的。如果rowkey重复了,表示相同的rowkey是同一条记录。

   

例如,如果要得到上图所示的表结构和数据,可以在HBase中执行下面的语句。

#创建employee表,包含两个列族:emp和dept
create 'employee','emp','dept'
#插入数据
put 'employee','7839','emp:ename','KING'
put 'employee','7839','emp:job','PRESIDENT'
put 'employee','7839','emp:hiredate','17-11月-81'
put 'employee','7839','emp:sal','5000'
put 'employee','7839','dept:deptno','10'
put 'employee','7839','dept:dname','ACCOUNTING'
put 'employee','7839','dept:loc','NEW YORK'



相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
SQL 分布式计算 API
Apache Spark详解
Apache Spark 是一个开源、分布式计算引擎,专为大规模数据处理设计。它以高速、易用和通用为核心目标。通过内存计算、DAG 执行引擎和惰性求值等特性,大幅提升数据处理效率。其核心组件包括 Spark Core、Spark SQL、Spark Streaming、MLlib 和 GraphX,支持批处理、实时流处理、机器学习和图计算。Spark 提供统一编程模型,支持多语言(Scala/Java/Python/R),并拥有强大的 Catalyst 优化器和类型安全的 Dataset API,广泛应用于大数据分析和处理场景。
1586 8
|
数据可视化 Ubuntu Linux
8-14|如何查看linux目录下文件大小
8-14|如何查看linux目录下文件大小
|
存储 缓存 网络协议
《stm32嵌入式系统开发实战指南》一2.2 主要板载资源
本节书摘来自华章出版社《stm32嵌入式系统开发实战指南》一书中的第2章,第2.2节,作者 李志明 檀永 徐石明,更多章节内容可以访问云栖社区“华章计算机”公众号查看
4193 0
Python三大控制结构:顺序结构、分支结构、循环结构
Python三大控制结构:顺序结构、分支结构、循环结构(for、while)
|
机器学习/深度学习 人工智能 并行计算
转载:【AI系统】AI轻量化与并行策略
本文探讨了AI计算模式对AI芯片设计的重要性,重点分析了轻量化网络模型和大模型分布式并行两大主题。轻量化网络模型通过减少模型参数量和计算量,实现在资源受限设备上的高效部署;大模型分布式并行则通过数据并行和模型并行技术,解决大模型训练中的算力和内存瓶颈,推动AI技术的进一步发展。
转载:【AI系统】AI轻量化与并行策略
|
机器学习/深度学习 人工智能 算法
【AAAI 2024】再创佳绩!阿里云人工智能平台PAI多篇论文入选
阿里云人工智能平台PAI发表的多篇论文在AAAI-2024上正式亮相发表。AAAI是由国际人工智能促进协会主办的年会,是人工智能领域中历史最悠久、涵盖内容最广泛的国际顶级学术会议之一,也是中国计算机学会(CCF)推荐的A类国际学术会议。论文成果是阿里云与浙江大学、华南理工大学联合培养项目等共同研发,深耕以通用人工智能(AGI)为目标的一系列基础科学与工程问题,包括多模态理解模型、小样本类增量学习、深度表格学习和文档版面此次入选意味着阿里云人工智能平台PAI自研的深度学习算法达到了全球业界先进水平,获得了国际学者的认可,展现了阿里云人工智能技术创新在国际上的竞争力。
|
机器学习/深度学习
深度学习中的模型压缩技术
【10月更文挑战第5天】 本文探讨了深度学习中的模型压缩技术,包括权重剪枝与共享、低秩分解、知识蒸馏和量化等方法。通过这些技术,我们可以在保持模型性能的同时减少模型的大小和计算量,从而提升模型的实用性。
394 1
|
人工智能 自然语言处理 算法
大语言模型的预训练[6]:思维链(Chain-of-thought,CoT)定义原理详解以及在LLM上应用
大语言模型的预训练[6]:思维链(Chain-of-thought,CoT)定义原理详解以及在LLM上应用
|
消息中间件 存储 负载均衡
【赵渝强老师】Kafka的体系架构
Kafka消息系统是一个分布式系统,包含生产者、消费者、Broker和ZooKeeper。生产者将消息发送到Broker,消费者从Broker中拉取消息并处理。主题按分区存储,每个分区有唯一的偏移量地址,确保消息顺序。Kafka支持负载均衡和容错。视频讲解和术语表进一步帮助理解。
439 0
|
机器学习/深度学习 搜索推荐 数据挖掘
深度学习之因果关系建模
基于深度学习的因果关系建模是一项旨在通过深度学习技术识别和理解数据之间因果关系的研究领域。因果关系建模不仅仅关注变量之间的相关性,还希望揭示导致某种结果的根本原因。
918 2

相关产品

  • 云原生大数据计算服务 MaxCompute