Hadoop 2.0:主流开源云架构(一)

news2024/11/25 23:33:08

目录

    • 一、引例
      • (一)问题概述
      • (二)常规解决方案
      • (三)分布式下的解决方案
      • (四)小结


在这里插入图片描述
  自从云计算的概念被提出,不断地有IT厂商推出自己的云计算平台,但它们都是商业性平台,对于想要继续研究和发展云计算技术的个人和科研团体来说,无法获得更多的了解,Hadoop的出现给研究者带来了希望。

一、引例

在这里插入图片描述

(一)问题概述

【例1】 假设现有一些配置完全相同的机器cSlave0~cSlaveN,cMaster0,cMaster1,并且每台机器都有1个双核CPU,5GB硬盘。现有两个大小都是2GB的文件file0和file1。

第一类问题,存储。

问题①:将file0和file1存入两台不同机器,但要求对外显示它们存于同一硬盘空间。
问题②:不考虑①,现有一新文件file2,大小为6GB,要求存入机器后对外显示依旧为一个完整文件。

第二类问题,计算。

问题③:在问题①下,统计file0和file1这两个文件里每个单词出现的次数。

第三类问题,可靠性。

问题④:假设用于解决上述问题的机器宕机了,问如何保证数据不丢失。

(二)常规解决方案

问题①解答:取两台机器cSlave0和cSlave1,cSlave0存储file0,cSlave1存储file1。

问题②解答:将file2拆成两个大小分别为3GB的文件file2-a和file2-b,将file2-a存入cSlave0、file2-b存入cSlave1。

在这里插入图片描述
问题③解答:
步骤一,将cSlave1上的file1复制一份到cSlave0上,这样cSlave0上同时存有file0和file1。
步骤二,编写一简单程序,程序里使用HashMap<String, Integer>,顺序读取文件,判断新读取的单词是否存在于HashMap,存在Integer+1,不存在则HashMap里加入这个新单词,Integer置为1,记此程序为WordCount。
步骤三,将此程序WordCount放在cSlave0上执行,得出结果。

问题④解答:为每台机器都做磁盘冗余阵列(RAID),购买更稳定的硬件,配置最好的机房、最稳定的网络。

(三)分布式下的解决方案

在这里插入图片描述
上述方案并没有真正解决问题,下面介绍的分布式方案也是Hadoop的架构思路:

1、分布式存储

  对于第一类存储问题,若能将多台机器硬盘以某种方式连接到一起,则问题迎刃而解。取机器cSlave0,cSlave1和cMaster0,采用客户-服务器模式构建分布式存储集群,让cMaster0管理cSlave0,cSlave1。

在这里插入图片描述
  经过上述方式构建的集群,对内,采用客户-服务器模式,只要保证store master正常工作,我们很容易随意添加store slave,硬盘存储空间无限大。对外,统一存储空间,统一文件接口,整个集群就像是一台机器、一片云,硬盘显示为统一存储空间,文件接口统一。

  称此构建的文件系统为分布式文件系统(Distributed File System,DFS),Hadoop分布式文件系统(Hadoop DFS,HDFS)的架构思想和上述过程类似。

在这里插入图片描述
2、分布式计算

在这里插入图片描述
  处理过程可分为三步:本地计算(Map)、洗牌(Shuffle)和合并再计算(Reduce)。取新机器cMaster1,采用客户-服务器模式构建由机器cSlave0、cSlave1和cMaster1组成的分布式计算集群。

在这里插入图片描述
  cSlave0最好是处理存于本机硬盘上的file0,而不是将file1从cSlave1调过来(通过网络)再处理file1,这就是所谓的“本地计算”。

在这里插入图片描述
  如何能够实现“合并”过程也由多机执行?由此引入“洗牌”(Shuffle)过程,即规定将Key值相同的KV对,通过网络发往同一台机器。

  • 第一步,每台机器将各自KV对中的Value连接成一个链表。
  • 第二步,各台机器可对<Key,ValueList>进行业务处理,称此过程为Reduce。
  • 第三步,将得出的结果再存于DFS。

  容易看出,无论是Map、Shuffle还是Reduce,甚至是存储结果,在每个阶段都是并行的,整个过程则构成一个有向无环图(DAG)。

在这里插入图片描述
3、冗余存储与冗余计算

在这里插入图片描述
  只要保证存于cSlave0上的数据,同时还存在于别的机器上,即使cSlave0宕机,数据依旧不会丢失。

  存储时,引入新机器cSlave2和cSlave3,将存于cSlave0的file0同样存储于cSlave2,存于cSlave1的file1同样存一份于cSlave3。计算时,cSlave0~3的计算任务统一由cMaster1指派。cMaster1选中先结束的那台机器的计算结果,并停止另一台机器里还在计算的进程。

  作用:通过冗余存储,不仅提高了分布式存储可靠性,还提高了分布式计算的可靠性。

(四)小结

  • 现实中Hadoop的实现机制则更加复杂,但其架构的基本思路和本节很类似。
  • 分布式存储和分布式计算这两者间并没有关系,它们各自都可以独立存在。
  • 当MapReduce运行于HDFS上时,性能较好。

在这里插入图片描述

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

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

相关文章

LeetCode | 997.找到小镇的法官

这道题拿到后很明显是一个图论的简单出度入度问题&#xff0c;法官的标志就是图中出度为0&#xff0c;入度为n-1的结点&#xff0c;而且根据题目条件&#xff0c;满足这一条件的结点有且只有一个 但是我不知道力扣中关于图论的邻接表和邻接矩阵这些数据结构是需要自己写还是已经…

shell编程(三)—— 控制语句

程序的运行除了顺序运行外&#xff0c;还可以通过控制语句来改变执行顺序。本文介绍bash的控制语句用法。 一、条件语句 Bash 中的条件语句让我们可以决定一个操作是否被执行。结果取决于一个包在[[ ]]里的表达式。 bash中的检测命令由[[]]包起来&#xff0c;用于检测一个条…

论文中eps格式图片制作

在提交论文终稿时&#xff0c;有时需要提交论文中图片的eps格式&#xff0c;这里记录一下eps格式图片制作的过程&#xff0c;方便以后查阅。 论文中eps格式图片制作 PPT绘制的图片转换为eps格式使用代码生成的图片Latex中显示的图片大小跟Ai中设定画板的大小不一致 PPT绘制的图…

品牌策划:不只是工作,是一场创意与学习的旅程

你是否认为只有那些经验丰富、手握无数成功案例的高手才能在品牌策划界崭露头角&#xff1f; 今天&#xff0c;我要悄悄告诉你一个行业内的秘密&#xff1a;在品牌策划的世界里&#xff0c;经验虽重要&#xff0c;但绝非唯一。 1️、无止境的学习欲望 品牌策划&#xff0c;这…

智能投顾:重塑金融理财市场,引领行业新潮流

一、引言 在数字化浪潮的推动下,金融行业正经历着前所未有的变革。其中,智能投顾作为金融科技的重要分支,以其高效、便捷和个性化的服务,逐渐成为金融理财市场的新宠。本文旨在探讨智能投顾如何引领金融理财新潮流,通过丰富的案例及解决方案,展示其独特的魅力和价值。 二…

Clearedge3d EdgeWise 5.8 强大的自动化建模软件

EdgeWise是功能强大的建模软件&#xff0c;提供领先的建模功能和先进的技术&#xff0c;让您的整个过程更快更准确&#xff01;您可以获得使用自动特征提取和对象识别的 3D 建模&#xff0c;ClearEdge3D 自动建模和对象识别软件通过创建竣工文档和施工验证完成该过程。拓普康和…

Go singlefight 源码详解|图解

写在前面 通俗的来说就是 singleflight 将相同的并发请求合并成一个请求&#xff0c;进而减少对下层服务的压力&#xff0c;通常用于解决缓存击穿的问题。 详解 基础结构 golang.org/x/sync/singleflight singleflight结构体&#xff1a; type call struct {wg sync.WaitGro…

永磁同步电机双矢量模型预测转矩控制MPTC

导读&#xff1a;本期文章主要介绍永磁同步电机双矢量模型预测转矩控制。由于传统直接转矩控制和单矢量的模型预测转矩控制转矩纹波较大&#xff0c;且在全速范围内的开关频率不固定&#xff0c;针对这一缺陷&#xff0c;引入双矢量MPTC。 如果需要文章中的仿真模型&#xff0…

AI生成个性化壁纸

使用天工AI 将图片设置成桌面壁纸

transformer 位置编码源码解读

import torch import mathdef get_positional_encoding(max_len, d_model):"""计算位置编码参数&#xff1a;max_len -- 序列的最大长度d_model -- 位置编码的维度返回&#xff1a;一个形状为 (max_len, d_model) 的位置编码张量"""positional_e…

IDEA启动项目报java.lang.OutOfMemoryError: GC overhead limit exceeded

idea编译项目时报j ava.lang.OutOfMemoryError: GC overhead limit exceeded错误&#xff0c;教你两步搞定&#xff01; 第一步&#xff1a;打开help -> Edit Custom VM Options ,修改xms和xmx的大小&#xff0c;如下图&#xff1a; 第二步&#xff1a;File -> Settings…

素数的无穷大的证明

素数的无穷大——欧几里得的证明 文章目录 一、说明二、欧几里得证据三、哥德巴赫对素数无穷性的证明&#xff08;1730&#xff09;四、Frstenberg 对素数无穷性的证明(1955)五、库默尔对欧几里得证明的重述 一、说明 众所周知&#xff0c;素数是无限多的。然而&#xff0c;两…

使用 Sysbench 测试文件的读写速度

要使用 Sysbench 测试文件的读写速度&#xff0c;你可以按照以下步骤进行&#xff1a; 安装 Sysbench&#xff1a; 如果你还没有安装 Sysbench&#xff0c;可以通过以下命令在 Ubuntu 上安装&#xff1a; sudo apt install sysbench创建测试文件&#xff1a; 首先&#xff0c…

32-读取Excel数据(xlrd)

本篇介绍如何使在python中读取excel数据。 一、环境准备 先安装xlrd模块&#xff0c;打开cmd&#xff0c;输入 pip install xlrd 在线安装。 二、基本操作 import xlrd# 打开excel表格 data xlrd.open_workbook(test.xlsx)# 2.获取sheet表格 # 方式一&#xff1a;通过索引顺…

【Java基础】多线程开发

Java多线程编程学习笔记 Author: Jim.kk Video: Bilibili 文章目录 Java多线程编程学习笔记学习路线简介程序、进程与线程的关系JVM简介 | 多线程在JVM中的执行示例CPU 线程的调度方式多线程的意义并行与并发 创建多线程 1 | Thread 与 Runnable方式 1 | 继承 Thread 类方式 …

spool 管道 小文件 mknod

Spool File In SQL*PLUS in Multiple Small Files ? (Doc ID 2152654.1)​编辑To Bottom In this Document Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 12.1.0.2 [Release 10.2 to 12.1] Oracle Database Cloud Schema Service…

【机器学习】基于卷积LSTM的视频预测

1. 引言 1.1 LSTM是什么 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;变体&#xff0c;旨在解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。LSTM通过引入门控机制和细胞状态的概念&#xff0c;使得…

表格状态码转换,其他索引串转成名字

1.问题分析 原数据库 关联指标为数字串的形式&#xff0c;每个小数对应的是另一张表index的属性&#xff0c;我们想知道对应指标的名称&#xff0c;怎么在这里下面这种形式呢&#xff1f; 两种思路&#xff1a; 1.修改在后端处理&#xff0c;把后端关联指标部分修改成图二的…

来腾讯第4天,我已经焦虑昏了啊!

大家好&#xff0c;我是白露啊。 今天在看到一个实习生在抱怨&#xff0c;给我笑惨了。 标题是&#xff1a;“腾讯实习第4天&#xff0c;焦虑昏了”&#xff01; 他写道&#xff1a;“怎么办啊牛爷爷们&#xff0c;什么都不会。业务看不懂&#xff0c;文档看不懂&#xff0c;…

el-table 实现表头置顶【干货满满】附源码

a)一般情况下&#xff0c;想要在 ElTable 上实现表头固定&#xff0c;滑动滚动条时希望表头常显&#xff0c;不被滚动条顶上去。这时候就需要给表格添加高度&#xff0c;但是这个高度需要提前确定好&#xff0c;不是很方便&#xff0c;表格上边一段距离不是固定的&#xff0c;常…