1.2 Hadoop概述

小肥柴的Hadoop之旅 1.2 Hadoop概述

    • 目录
    • 1.2 Hadoop概述
      • 1.2.1 回归问题
      • 1.2.2 Google的三篇论文
      • 1.2.3 Hadoop的诞生过程
      • 1.2.4 Hadoop特点简介
    • 参考文献和资料

)

目录

1.2 Hadoop概述

1.2.1 回归问题

通过前一篇帖子的介绍,特别是问题思考部分的说明,我们大致能够感受到为何需要新的技术体系来解决大数据问题,接下来咱们继续梳理细节。

step_0 传统方案既贵又搞不定大数据问题。

(1)传统数据的处理模式:用户+集中式系统+关系型数据库
在这里插入图片描述
优点是架构相对简单,但缺陷也十分明显:
1)集中式的存储,集中式的计算,中心系统的工作十分繁忙。
2)随着数据和业务的不断增长,往往需要购置更高配置的设备来满足这些需求。
关键在于:高配置的机器好贵的!!!配套设施好贵的!!!维护人工好贵的!!!

正如《潜伏》中的名角“谢若林”的金句,很多事情,“嘴上全是主义,那心里都是生意”!!!

诚然,从技术的角度讨论大数据问题那就是一套一套的理论,容易把人绕的云里雾里的,实际上从资本的角度看待这个问题非常清晰:如何花5块钱把10块钱的事情给办咯,而且还给办得舒坦。

step_1 鸡贼的Google工程师们降成本

(1)不使用超级计算机。
(2)不使用昂贵的集中存储。
(3)甚至大量使用普通的pc做服务器,提供有冗余的集群服务。

即:靠堆大量的、廉价的低性能设备,去完成原来必须依靠昂贵高性能设备才能完成的计算任务。

这点非常像《星际争霸》或者《魔兽争霸》里爆低级兵rush的战术,配上高端的操作一样能rush成功(各种软件设计,譬如Hadoop这一套生态),下面盗个图:
在这里插入图片描述
在这里插入图片描述

step_2 回顾上贴讨论的内容,海量数据的存储和计算,大数据的核心任务,考虑到相关周边问题,就能和google工程师们的想法对上了。

(1)分布式的文件存储 => GFS(Google File System),分布式文件系统。
(2)分布式的数据库 => BigTable,基于GFS的数据存储系统。
(3)分布式计算框架 => MapReduce,分布式计算框架。

但凡你打开一篇网上系列教程或者一本教材,必然会提及以上三个术语,理解了之前我们讨论的思路和内容,它们就不再是冷冰冰的概念了。

1.2.2 Google的三篇论文

要了解Hadoop的核心组件,就不得不从google的3篇论文开讲,咱们也不免俗套;但在讨论前读者需要具备一定的linux/操作系统/分布式基础知识,否则跟听天书没什么区别。(此处挺直腰杆谴责一下那些前置课程,老师上的水,学生学得拉…)

1)第一篇: The Google File System (2003

核心思想:
1)设备挂掉是需要应对的常态;
2)文件数据体量大;
3)绝大部分文件的修改是采用在文件尾部追加数据,而不是覆盖原有数据的方式;
4)应用程序和文件系统 API 的协同设计提高了整个系统的灵活性。

跟着下面这张核心原理图体会一下(假定数据是分布式存储的,等学完HDFS再回头看这个图会有更深的理解):
在这里插入图片描述
1)client向master查询chunk index的元数据:handle和replica location;根据chunksize,client可以计算出chunk index。
2)client用元数据(meta)直接指向chunkserver要数据,其中 chunk server 是真正存储数据的服务器,以下可以简称为CS。
3)GFS client 使用非POSIX接口交互,仅缓存meta,不缓存data。
4)(主节点)master的内存中有元数据:
i. namespace of file and chunk,文件和数据块的命名空间,方便索引。
ii. mapping files to chunks,文件被拆分为数据块的映射方式。
iii. replica location ,副本位置,通过定期与CS通信获得。
vi. operation log,记录改动元数据的操作,且namespace 和mapping会定期更新,并log化后存储在本地。
v. 数据按照chunk存储,有linux的FS本身的buffer cache做缓存处理,不需要额外缓存机制。

【注】第v点在论文中还有专门的讨论,本质就是为了简化设计。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
(以上翻译版本请读者自助)

第二篇:MapReduce: Simplified Data Processing on Large Clusters(2004

核心思想:
(1)MapReduce 是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现。
1)用户首先创建一个 Map 函数处理一个基于 key/value pair 的数据集合,输出中间的基于 key/value pair 的数据集合;
2)然后再创建一个 Reduce 函数用来合并所有的具有相同中间 key 值的中间 value 值。

(2)MapReduce 架构的程序能够在大量的普通配置的计算机上实现并行化处理。

(3)大致执行过程:
1)通过将 Map 调用的输入数据自动分割为 M 个数据片段的集合,Map 调用被分布到多台机器上执行。
2)输入的数据片段能够在不同的机器上并行处理。使用分区函数将 Map 调用产生的中间 key 值分成 R 个不同分区(例如,hash(key) mod R),Reduce 调用也被分布到多台机器上执行,分区数量(R)和分区函数由用户来指定。

【注】以上3点保证了计算模型的通用性,模式化编程能允许没有并行计算和分布式处理系统开发经验的程序员能够有效利用分布式系统的丰富资源去完成数据分析与计算任务。

两句话总结:分而治之 + 计算向数据移动;其中分治是常规策略,但“计算向数据移动”确实是一个当年较为新颖的想法,或许它不是第一次被提出,但确在Hadoop上实现并得到不错的效果。

配两张图方便大家理解上面的文字(盗图):
在这里插入图片描述
在这里插入图片描述

第三篇:Bigtable: A Distributed Storage System for Structured Data(2006

【注】这块内容其实水很深,需要花一定的时间在实践中慢慢去理解,毕竟会有一门专门的课程《分布式数据库》去讨论整套理论体系和技术栈。

核心思想:
(1)不同于传统的关系型数据库采用行式存储,Bigtable采用了列式存储模式,且是Schema Less的,即“无预定数据模式”,给与用户更多的自定义权利,让数据存储更加灵活自由。

(2)若采用这种方式存储数据,那么原来的K-V形式要做一些改动:
1)Key = Row key + Column key + Timestamp
2)Value都被存储为String形式
3)时间戳Timestamp可以帮助维护历史版本信息
在这里插入图片描述
在这里插入图片描述
(3)相关术语
1)Tablet:Bigtable 数据分布和负载均衡的基本单位,与子表(table)相关
2)Column Key 与 Column Family:
<1> Column Key 一般都表示一种数据类型,Column Key 的集合称作 Column Family(列族)。
<2> 存储在同一 Column Family 下的数据属于同一种类型,Column Family 下的数据被压缩在一起保存。
<3> Column Family 是 access control(访问控制)、disk and memory accounting(磁盘和内存计算)的基本单元。

【注】以上内容涉及到分区分表细节,将在HBase中详细讲解。

(4)使用列式存储,本质就是方便Range分区。Range 分区能够很好的保证数据在底层存储上与 Row Key 的顺序是一致的(方便排序),对 Scan 类型查询比较友好。
<1> 优点:利用Row Key的局部性(群组),能够提升查询效率。
<2> 缺陷:对用户 Row Key 的设计提出了非常高的要求、容易导致数据不均匀。

(5)BigTable的本质需求就是为了适应大数据分布式场景下,如何正确有效的管理数据库超级大表的问题:
超级大表 --> 大表 --> 小表–> 小小表
对应的两个子问题是:逻辑结构(分区分表,列式存储)要如何设计? 物理映射(基于GFS,数据库最终还是要落盘的)要如何实现?

1.2.3 Hadoop的诞生过程

在这里插入图片描述

step_0 明确Hadoop是什么?

Hadoop根据是基于Google三篇论文实现的一种分布式系统基础
Google: GFS、MapReduce、Bigtable
Hadoop: HDFS、MapReduce、HBase

三句话:

(1)Hadoop是Apache基金会的开源项目(本课程仅讨论Apache开源版本)
(2)主要任务是解决 海量数据的存储 和海量数据的分析计算 问题
(3)广义上Hadoop其实是指一个软件生态圈

对,咱们入门学习Hadoop,其实就是学一个软件生态中最核心最基础的一部分而已;具体参考链接[1]。

step_1 发展历程,看看即可

(1)Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。
(2)Hadoop源自始于2002年的Apache Nutch项目(一个开源的网络搜索引擎并且也是Lucene项目的一部分)。
(3)2004年,Nutch项目也模仿GFS开发了自己的分布式文件系统NDFS(Nutch Distributed File System),也就是HDFS的前身。
(4)2005年,Nutch开源实现了谷歌的MapReduce(2003 GFS, 2004 MapReduce)。
(5)2006年2月,Nutch中的NFS和MapReduce开始独立出来,成为Lucene项目的一个子项目,称为Hadoop,同时Doug Cutting加盟雅虎。
(6)2008年1月,Hadoop正式成为Apache顶级项目,Hadoop也逐渐开始被雅虎之外的其他公司使用。
(7)2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统,它采用一个由910个节点构成的集群进行运算,排序时间只用了209秒。
(8)2009年5月,Hadoop更是把1TB数据排序时间缩短到62秒。
(9)Hadoop从此名声大震,迅速发展成为大数据时代最具影响力的开源分布式开发平台,并成为事实上的大数据处理标准。

step_2 技术演变

主要分为1.x、2.x和3.x时代,具体细节参考官网,等讲完MapReduce之后再回头看这个问题基本不是问题,没有必要强行记忆。
在这里插入图片描述

1.2.4 Hadoop特点简介

简单了解即可,后续讨论的内容会反复设计这些特点。

(1)优势(4高)
1)高可靠性: 底层维护多个数据副本,及时某个计算元素或者存储出现 故障,也不会丢失数据。
2)高扩展性:在集群中分配数据,方便的扩展节点。
3)高效性:在MapReduce思想下,Hadoop并行工作,加快任务处理速度。
4)高容错性:若任务失败,能够自动重新分配。

(2)适合场景:大数据分析、离线分析

(3)不适合场景:少量数据、复杂数据、在线分析

(4)最痛苦的事情:海量的小文件数据…

参考文献和资料

[1] 国内外企业在用的大数据技术架构
[2] The Google File System
[3] MapReduce: Simplified Data Processing on Large Clusters
[4] Bigtable: A Distributed Storage System for Structured Data

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GCN的使用和包的安装(超详细)

文章目录 工具包安装方法首先进入官网&#xff0c;找到安装包的地址进入后&#xff0c;找到自己的torch版本进入后&#xff0c;将每种对应的包都下载到本地&#xff0c;用本地命令安装然后就是本地安装了最后就是pip install pytorch_geometric 工具包安装方法 一定参考其GITH…

【ASP.NET Core 基础知识】--项目结构

一、ASP.NET Core项目的基本结构 ASP.NET Core项目的基本结构通常遵循一种标准的组织方式&#xff0c;这有助于提高项目的可维护性和可扩展性。以下是一个典型的ASP.NET Core项目的基本结构&#xff1a; 项目文件 (.csproj): 项目的主要配置文件&#xff0c;定义了项目的依…

idea创建javaweb项目步骤超详细(2022最新版本)

目录 前言必读 一、新建文件 1.在idea里面点击文件-新建-项目 2.新建项目-更改名称为自己想要的项目名称-创建 3.右键自己建立的项目-添加框架支持&#xff08;英文版是Add Framework Support...&#xff09; 4.勾选Web应用程序-确定 5.建立成功界面 二、配置tomcat 6.…

Java游戏开发 —— 坦克大战

引言&#xff1a; 坦克大战也是小时一个比较经典的游戏了&#xff0c;我在网上也是参考了韩顺平老师写的坦克大战&#xff0c;并做了一下完善&#xff0c;编写出来作为儿时的回忆吧&#xff01; 思路&#xff1a; 创建主窗口&#xff0c;加载菜单及游戏面板。 在游戏面板中初始…

聊聊 Java 集合框架中的 ArrayList

其实 Java 集合框架也叫做容器&#xff0c;主要由两大接口派生而来&#xff0c;一个是 collection,主要存放对象的集合。另外一个是Map, 存储着键值对&#xff08;两个对象&#xff09;的映射表。 下面就来说说 List接口&#xff0c;List存储的元素是有序、可重复的。其下有三个…

HarmonOS 日期选择组件(DatePicker)

本文 我们一起来看基础组件中的 DatePicker 这就是 日程开发中的日期组件 他可以创建一个日期的范围 并创建一个日期的滑动选择器 这里 我们先写一个组件的骨架 Entry Component struct Index {build() {Row() {Column() {}.width(100%)}.height(100%)} }然后 我们先在Column组…

打造成功的SRE团队

一个成功的SRE团队可以为组织带来巨大价值&#xff0c;帮助组织高效完成价值交付。本文介绍了Mission Lane公司打造SRE团队的经验和实践。原文: Building a Successful SRE Team 简介 当我加入Mission Lane时&#xff0c;是公司仅有的两名站点可靠性工程师(SRE)之一&#xff0c…

时序预测 | Matlab实现GJO-VMD-LSTM金豺-变分模态分解-长短期记忆网络时间序列预测

时序预测 | Matlab实现GJO-VMD-LSTM金豺-变分模态分解-长短期记忆网络时间序列预测 目录 时序预测 | Matlab实现GJO-VMD-LSTM金豺-变分模态分解-长短期记忆网络时间序列预测预测效果基本介绍模型设计程序设计参考资料 预测效果 基本介绍 Matlab实现GJO-VMD-LSTM金豺-变分模态分…

PyQT5实现图像处理应用(含Windows7下完整打包方案)

目录 1、任务概述2、环境安装2.1 创建虚拟环境2.2 安装依赖库 3、程序开发3.1 框架搭建3.2 读取图像3.3 图像处理 4、打包部署5、小结 1、任务概述 本篇博文将通过PyQT5来实现一个简单的图像处理应用&#xff0c;并完成打包部署。 本文开发平台&#xff1a;Windows10 64位系统…

如何找回删除的Word文档?多方法供您选择

在日常生活和工作中&#xff0c;我们经常使用Microsoft Word来创建、编辑和保存文档。然而&#xff0c;有时候我们会不小心删除了重要的Word文档&#xff0c;导致无法挽回的损失。幸运的是&#xff0c;有一些方法可以帮助我们找回已删除的Word文档。本文将介绍一些常用的方法供…

Vue2:通过ref获取DOM元素

一、场景描述 我们在页面的开发过程中&#xff0c;经常需要操作dom元素&#xff0c;来实现我们需要的效果。 以往js中&#xff0c;我们是通过给dom添加id&#xff0c;然后&#xff0c;通过js代码document来获取这个dom 简写代码案例&#xff1a; <h2 id"test"&…

何为算法之空间复杂度

前言 不知前面所讲的算法的十大特征你是否记住了呢&#xff1f;其实除了这十大特征之外&#xff0c;算法还有两个衡量标准。 不同的问题需要使用不同的算法作为策略&#xff0c;不同的算法也可能占用不同的时间和空间来完成相同的任务&#xff0c;这时候&#xff0c;对算法的选…

【Docker】可以将TA用于什么,简单了解下

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是是《Docker容器》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深…

RabbitMQ(十一)队列的扩展属性(Arguments)

目录 一、简介二、队列扩展属性清单三、代码示例3.1 实现方式一&#xff1a;channel.queueDeclare()3.2 实现方式二&#xff1a;QueueBuilder.build() 一、简介 RabbitMQ 允许用户在声明队列、交换机或绑定时设置 扩展属性&#xff08;Arguments&#xff09;&#xff0c;这些扩…

c++语言基础19-洗盘子(栈)

题目描述 在餐厅里&#xff0c;洗盘子的工作需要使用到栈这种数据结构。假设你手里有一个盘子堆放区。现在需要模拟洗盘子的过程&#xff0c;每个盘子都有一个编号。 盘子堆放区操作说明&#xff1a; 1. 当操作为 1 时&#xff0c;表示从盘子堆放区拿走顶部的盘子清洗。 2. 当…

数据库管理-第130期 JSON二元性(20240109)

数据库管理130期 2024-01-09 第130期 JSON二元性&#xff08;20240109&#xff09;1 简介2 关系型表和JSON存储的优劣3 Oracle JSON关系型二元性视图总结 第130期 JSON二元性&#xff08;20240109&#xff09; 上周&#xff0c;又双叒飞了一趟上海&#xff0c;也是2024年第一飞…

LeetCode-字符串转换整数atoi(8)

题目描述&#xff1a; 请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格 检查下一个字符&…

无线网卡怎么连接台式电脑?正确操作步骤分享!

“我在使用电脑时经常都需要用到网络&#xff0c;请问大家在使用无线网卡时怎么将它与台式电脑进行连接的呢&#xff1f;” 使用电脑的用户在进行网上冲浪时都需要先连接网络。如果不想使用网线&#xff0c;无线网卡不仅可以为用户提供网络服务&#xff0c;在使用时该更加灵活和…

springCould中的gateway-从小白开始【9】

目录 1.&#x1f35f;网关是什么 2.&#x1f37f;gateway是什么 3.&#x1f95a;gateway能什么 4.&#x1f32d;核心概念 5.&#x1f9c2;工作流程 6.&#x1f9c8;实例 7.&#x1f953;gateway网关配置的方式 8.&#x1f373;配置动态路由 9.&#x1f9c7;pred…

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析 【赛程名称】高职组-云计算赛项第一场-私有云【任务 1】私有云服务搭建[10 分]【题目 2】Yum 源配置[0.5 分]【题目 3】配置无秘钥 ssh[0.5 分]【题目 4】基础安装[0.5 分]【题目 5】数据库安装与调优[0.5 分]【题目 …