1.2 Hadoop概述

news2024/11/17 21:48:49

小肥柴的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.coloradmin.cn/o/1368254.html

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

相关文章

java SSM社区文化服务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM社区文化服务管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的 源代码和数据库&#xff0c;系统主…

二进制部署

HOST HostnameIP地址flannedAPPmaster192.169.116.10ETCD\APIserver\Scheduler\Controller-Managernode1192.168.116.11172.17.28.0ETCD,Flanned,Kubelet,kube-proxynode2192.168.116.12172.17.26.0ETCD,Flanned,Kubelet,kube-proxy Kubernetes社区 Kubernetes文档 ETCD mas…

2024年如何使用WordPress构建克隆Udemy市场

您想创建像 Udemy 这样的学习管理 (LMS) 网站吗&#xff1f;最好的学习管理系统工具LifterLMS将帮助您制作像Udemy市场这样的 LMS 网站。 目录 Udemy市场是什么&#xff1f; 创建 Udemy 克隆所需的几项强制性技术&#xff1a; 步骤 1) 注册您的域名 步骤 2) 获取虚拟主…

Unity中URP下开启和使用深度图

文章目录 前言一、在Unity中打开URP下的深度图二、在Shader中开启深度图1、使用不透明渲染队列才可以使用深度图2、半透明渲染队列深度图就会关闭 三、URP深度图 和 BRP深度图的区别四、在Shader中&#xff0c;使用深度图1、定义纹理和采样器2、在片元着色器对深度图采样并且输…

十、HTML 样式- CSS

CSS (Cascading Style Sheets) 用于渲染HTML元素标签的样式。 一、实例 1、HTML使用样式 本例演示如何使用添加到 <head> 部分的样式信息对 HTML 进行格式化。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>HTM…

共享WiFi项目怎么样,靠谱吗?业内专家为你解答

共享WiFi项目自问世以来&#xff0c;就备受关注&#xff0c;有人质疑它的可靠性&#xff0c;也有人对其充满信心。今天&#xff0c;我们就来聊聊共享WiFi项目怎么样&#xff0c;是否靠谱。 我们要明白共享WiFi项目是什么。共享WiFi项目是一种基于互联网的共享商业模式&#xf…

二叉树题目:好叶子结点对的数量

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;好叶子结点对的数量 出处&#xff1a;1530. 好叶子结点对的数量 难度 6 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root 和整数 …

day13 滑动窗口最大值 前K个高频元素

题目1&#xff1a;239 滑动窗口最大值 题目链接&#xff1a;239 滑动窗口最大值 题意 长度为K的滑动窗口从整数数组的最左侧移动到最右侧&#xff0c;每次只移动1位&#xff0c;求滑动窗口中的最大值 不能使用优先级队列&#xff0c;如果使用大顶堆&#xff0c;最终要pop的…

TS 36.212 V12.0.0-信道编码、复用和交织(3)-下行传输信道和控制信息

本文的内容主要涉及TS 36.212&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

Spark---RDD(双值类型转换算子)

文章目录 1.RDD双值类型算子1.1 intersection1.2 union1.3 subtract1.4 zip 1.RDD双值类型算子 RDD双Value算子就是对两个RDD进行操作或行动&#xff0c;生成一个新的RDD。 1.1 intersection 对源 RDD 和参数 RDD 求交集后返回一个新的 RDD 函数定义&#xff1a; def inters…

Xilinix bit文件加密方法

分为两个篇章 xilinix 7系列器件生成已加密文件和已经过身份验证的文件https://blog.csdn.net/baidu_25816669/article/details/135476323?spm1001.2014.3001.5501 和 UltraScale 和 UltraScale 生成已加密文件和已经过身份验证的文件https://blog.csdn.net/baidu_25816669/a…

Chrome您的连接不是私密连接或专用连接

方法一&#xff1a; 在当前页面用键盘输入 thisisunsafe &#xff0c;不是在地址栏输入&#xff0c;就直接敲键盘就行了因为Chrome不信任这些自签名ssl证书&#xff0c;为了安全起见&#xff0c;直接禁止访问了&#xff0c;thisisunsafe 这个命令&#xff0c;说明你已经了解并…

Shiro框架:ShiroFilterFactoryBean过滤器源码解析

目录 1.Shiro自定义拦截器SpringShiroFilter 1.1 ShiroFilterFactoryBean解析 1.1.1 实现FactoryBean接口 1.1.2 实现BeanPostProcessor接口 1.2 SpringShiroFilter解析 1.2.1 OncePerRequestFilter过滤逻辑实现 1.2.2 AbstractShiroFilter过滤逻辑实现 1.2.2.1 创建Sub…

YOLOv8训练参数解析

全部参数表 首先罗列一下官网提供的全部参数。 文章目录 1. model ✰✰✰✰✰2. data ✰✰✰✰✰3. epochs ✰✰✰4. patience5. batch ✰✰✰✰✰6. imgsz ✰✰✰✰✰7. save、save_period ✰✰✰8. cache9. device ✰✰✰✰✰10. workers11. project12. name13. exist_ok14…

gitee创建远程仓库并克隆远程仓库到电脑

1、首先点加号新建一个仓库 2、输入仓库名&#xff0c;路径会自动填充&#xff0c;填写简单的仓库介绍&#xff0c;先选择私有&#xff0c;在仓库创建之后&#xff0c;可以改为开源 3、打开建好的仓库 4、复制仓库链接 5、打开一个文件夹(想要存储远程仓库的地址)&#xff0c;在…

DP Alt Mode(Alternative Mode)

一、Type-C的DP AlT Mode Type-C 上 配置 Alternative Mode&#xff08;Alt Mode&#xff09;。这种配置可以使得其他协议比如DP、HDMI、Thunderbolt™、MHL&#xff08;mobile high-definition link&#xff09;,以及PCIe等在 Type C线缆上传输。以最流行的DP为例&#xff1a;…

摆动排序 II

题目链接 摆动排序 II 题目描述 注意点 将数组重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序题目数据保证&#xff0c;对于给定的输入 nums &#xff0c;总能产生满足题目要求的结果用 O(n) 时间复杂度和 / 或原地 O(1) 额外空间来实现 解答思路 如…

Qt QLabel标签控件

文章目录 1 属性和方法1.1 文本1.2 对齐方式1.3 换行1.4 图像 2. 实例2.1 布局2.2 为标签添加背景色2.3 为标签添加图片2.4 代码实现 QLabeI是Qt中的标签类&#xff0c;通常用于显示提示性的文本&#xff0c;也可以显示图像 1 属性和方法 QLabel有很多属性&#xff0c;完整的可…

Wargames与bash知识12

Wargames与bash知识12 Bandit20 关卡提示&#xff1a; 主目录中有一个setuid二进制文件&#xff0c;它执行以下操作&#xff1a;它在您指定为命令行参数的端口上连接到localhost。然后&#xff0c;它从连接中读取一行文本&#xff0c;并将其与前一级别的密码&#xff08;band…

IntelliJ IDEA 如何编译 Maven 工程项目

在当今的Java开发领域&#xff0c;Maven已经成为项目构建和依赖管理的标准工具。IntelliJ IDEA作为一款集成度高的Java开发环境&#xff0c;提供了许多强大的功能来简化和优化Maven项目的构建流程。本文将深入介绍如何使用IntelliJ IDEA编译Maven工程的详细步骤以及一些高级技巧…