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

目录

    • 四、Hadoop 2.0体系架构
      • (一)Hadoop 2.0公共组件Common
      • (二)分布式文件系统HDFS
      • (三)分布式操作系统Yarn
      • (四)Hadoop 2.0安全机制简介


四、Hadoop 2.0体系架构

(一)Hadoop 2.0公共组件Common

1、Common定位

  Common的定位是其他模块的公共组件,定义了程序员取得集群服务的编程接口,为其他模块提供公用API。降低Hadoop设计的复杂性,减少了其他模块之间的耦合性,增强了Hadoop的健壮性。

2、Common功能

  • 提供公用API和程序员编程接口
  • 本地Hadoop库(Native Hadoop Library)
  • 超级用户superuser
  • 服务级别认证
  • HTTP认证

(二)分布式文件系统HDFS

1、HDFS定位

在这里插入图片描述
  为提高扩展性,HDFS采用了master/slave架构来构建分布式存储集群,这种架构很容易向集群中任意添加或删除slave。

2、HDFS体系架构

(1)HDFS架构

  HDFS采用master/slave体系来构建分布式存储服务,提高了HDFS的可扩展性又简化了架构设计。HDFS里将文件分块存储,优化存储颗粒度。namenode统一管理所有slave机器datanode存储空间,datanode以块为单位存储实际的数据。真正的文件I/O操作时客户端直接和datanode交互。

  NameNode是主控制服务器,负责维护文件系统的命名空间(Namespace),协调客户端对文件的访问,记录命名空间内的任何改动或命名空间本身的属性改动。DataNode负责它们所在的物理节点上的存储管理,HDFS开放文件系统的命名空间。NameNode执行文件系统的命名空间操作,决定数据块到DataNode的映射。

在这里插入图片描述
  客户端要访问一个文件。首先,客户端从NameNode获得组成文件的数据块的位置列表;其次,客户端直接从DataNode上读取文件数据。

  NameNode使用事务日志(EditLog)记录HDFS元数据的变化,使用映象文件(FsImage)存储文件系统的命名空间。事务日志和映象文件都存储在NameNode的本地文件系统中。将新的元数据刷新到本地磁盘的新的映象文件中,这样可以截去旧的事务日志,这个过程称为检查点(Checkpoint)。HDFS还有Secondary NameNode节点,它辅助NameNode处理映象文件和事务日志。NameNode更新映象文件并清理事务日志,使得事务日志的大小始终控制在可配置的限度下。

(2)HDFS典型拓扑

① 一般拓扑:只有单个NameNode节点,使用SecondaryNameNode或BackupNode节点实时获取NameNode元数据信息,备份元数据。

在这里插入图片描述
② 商用拓扑:有两个NameNode节点,并使用ZooKeeper实现NameNode节点间的热切换。

在这里插入图片描述

  • ZooKeeper集群:至少三个ZooKeeper实体,用来选举ActiveNamenode。
  • JourNalNode集群:至少三个,用于与两NameNode交换数据,也可使用NFS。
  • HTTPFS:提供Web端读写HDFS功能。

  从架构上看HDFS存在单点故障,无论是一般拓扑还是商用拓扑,新增的实体几乎都是增强NameNode可靠性的组件,当然这里的ZooKeeper集群还可以用于Hbase。

3、HDFS内部特性

(1)冗余备份

  HDFS将每个文件存储成一系列数据块(Block),默认块大小为64MB(可配置)。为了容错,文件的所有数据块都会有副本(副本数量即复制因子,可配置)。HDFS的文件都是一次性写入的,并且严格限制为任何时候都只有一个写用户。

(2)副本存放

  HDFS集群一般运行在多个机架上,不同机架上机器的通信需要通过交换机。HDFS采用机架感知(Rack-aware)的策略来改进数据的可靠性、可用性和网络带宽的利用率。机架的错误远比节点的错误少,这个策略可以防止整个机架失效时数据丢失,提高数据的可靠性和可用性,又能保证性能。

在这里插入图片描述
(3)副本选择

  HDFS会尽量使用离程序最近的副本来满足用户请求,这样可以减少总带宽消耗和读延时。HDFS的架构支持数据均衡策略。

(4)心跳检测

  NameNode周期性地从集群中的每个DataNode接受心跳包和块报告,收到心跳包说明该DataNode工作正常。NameNode会标记最近没有心跳的DataNode为宕机,不会发给它们任何新的I/O请求。NameNode会不断检测这些需要复制的数据块,并在需要的时候重新复制。

(5)数据完整性检测

  多种原因可能造成从DataNode获取的数据块有损坏。HDFS客户端软件实现了对HDFS文件内容的校验和检查(Checksum)。DataNode获得的数据块对应的校验和隐藏文件中的不同,客户端就会判定数据块有损坏,将从其他DataNode获取该数据块的副本。

(6)元数据磁盘失效

  映象文件和事务日志是HDFS的核心数据结构。NameNode可以配置为支持维护映象文件和事务日志的多个副本。任何对映象文件或事务日志的修改,都将同步到它们的副本上。当NameNode重新启动时,总是选择最新的一致的映象文件和事务日志。

(7)简单一致性模型、流式数据访问

  HDFS的应用程序一般对文件实行一次写、多次读的访问模式。文件一旦创建、写入和关闭之后就不需要再更改了。这样就简化了数据一致性问题,高吞吐量的数据访问才成为可能;运行在HDFS上的应用主要以流式读为主,做批量处理;更注重数据访问的高吞吐量。

(8)客户端缓存

  客户端创建文件的请求不是立即到达NameNode,HDFS客户端先把数据缓存到本地的一个临时文件,程序的写操作透明地重定向到这个临时文件。当这个临时文件累积的数据超过一个块的大小(64MB)时,客户端才会联系NameNode。如果NameNode在文件关闭之前死机,那么文件将会丢失。如果不采用客户端缓存,网络速度和拥塞都会对输出产生很大的影响。

(9)流水线复制

  当客户端准备写数据到HDFS的文件中时,数据一开始会写入本地临时文件。DataNode从前一个节点接收数据的同时,即时把数据传给后面的节点,这就是流水线复制。

(10)架构特征

  硬件错误是常态而不是异常。HDFS被设计为运行在普通硬件上,所以硬件故障是很正常的。错误检测并快速自动恢复是HDFS的最核心设计目标。

(11)超大规模数据集

  一般企业级的文件大小可能都在TB级甚至PB级,HDFS支持大文件存储,而且提供整体上高的数据传输带宽。一个单一的HDFS实例应该能支撑数以千万计的文件,并且能在一个集群里扩展到数百个节点。

4、HDFS对外功能

(1)NameNode高可靠性

(2)HDFS快照

(3)HDFS快照

(4)HDFS安全性

(5)HDFS配额功能

(6)HDFS C语言接口

(7)HDFS Short-Circuit功能

(8)WebHdfs

(三)分布式操作系统Yarn

1、定位

  分布式操作系统的基本功能:管理计算机资源,提供用户接口。Yarn一方面管理整个集群的计算资源(CPU、内存等),另一方面提供用户程序访问系统资源的API。

2、体系架构

(1)Yarn架构

  Yarn的主要思想是将MRv1版JobTracker的两大功能——资源管理和任务调度,拆分成两个独立的进程:

在这里插入图片描述
  Yarn依旧是master/slave结构,主进程ResourceManager是整个集群资源仲裁中心,从进程NodeManager管理本机资源,ResourceManager和从属节点的进程NodeManager组成了Hadoop 2.0的分布式数据计算框架。

在这里插入图片描述
(2)Yarn执行过程

  Yarn在执行时包含以下独立实体:

① Client:客户端,负责向集群提交作业。
② ResourceManager:集群主进程,仲裁中心,负责集群资源管理和任务调度。
③ Scheduler:资源仲裁模块。
④ ApplicationManager:选定,启动和监管ApplicationMaster。
⑤ NodeManager:集群从进程,管理监视Containers,执行具体任务。
⑥ Container:本机资源集合体,如某Container为4个CPU,8GB内存。
⑦ ApplicationMaster:任务执行和监管中心。

在这里插入图片描述
在这里插入图片描述
  若任务执行失败,如果是ApplicationMaster失败,ApplicationManager会重新选择一个Container再次执行此任务对应的ApplicationMaster;如果是计算节点失败,ApplicationMaster首先向Scheduler申请资源,接着根据申请到的资源重新分配失败节点上的任务。

  从Yarn架构和Yarn任务执行过程能看出Yarn具有巨大优势:Scheduler是纯粹的资源仲裁中心;ApplicationManager只监管ApplicationMaster;ApplicationMaster负责任务整体执行。

  Yarn的设计大大减轻了ResourceManager的资源消耗,并且ApplicationMaster可分布于集群中任意一台机器,设计上更加优美。

(3)Yarn典型拓扑

  除了ResourceManager和NodeManager两个实体外,Yarn还包括WebAppProxyServer和JobHistoryServer两个实体。

在这里插入图片描述
① JobHistoryServer:管理已完成的Yarn任务。

  历史任务的日志和执行时的各种统计信息统一由JobTracker管理,Yarn将管理历史任务的功能抽象成一独立实体JobHistoryServer。

② WebAppProxyServer:任务执行时的Web页面代理。

  通过使用代理,不仅进一步降低了ResourceManager的压力,还能降低Yarn受到的Web攻击。负责监管具体MapReduce任务执行全过程,将从Container那里收集过的任务执行信息汇总并显示到一个Web界面上。

3、编程模板

  ApplicationMaster 是一个可变更的部分,只要实现不同的ApplicationMaster,就可以实现不同的编程模式。

在这里插入图片描述
(1)示例模板

  Yarn的示例编程为“distributedshell”,该程序可以将给定的shell命令分布到机器执行。

(2)MapReduce模板

  Map把任务分解成为多个任务,Reduce把分解后多任务处理的结果汇总起来,得到最终结果。

在这里插入图片描述
  一个MapReduce操作分为两个阶段:映射阶段和化简阶段。

  在映射阶段,MapReduce框架将用户输入的数据分割为M个片断,对应M个Map任务。在化简阶段,每一个Reduce操作的输入是一个<K2,list(V2)>片断,Reduce操作调用用户定义的Reduce函数,生成用户需要的键值对<K3,V3>进行输出。

4、调度策略

  ResourceManager的Scheduler模块支持插拔,通过配置文件,用户可以个性化指定其调度策略。

在这里插入图片描述
(1)容量调度算法CapacityScheduler

概述:

  CapacityScheduler是一种多用户多任务调度策略,它以队列为单位划分任务,以Container为单位分配资源,它也是Hadoop 2.0默认的调度策略,为多个用户共享集群资源提供安全可靠的保障。
  通过共建集群的方式,不但可以提高资源利用率,还能在必要时刻使用更多的集群资源,同时,组织机构间共建集群也大大降低了运维成本。容量调度策略通过队列来划分资源,队列间关系类似于一棵多叉树,队列间一层层继承,根队列称为root队列,Yarn初次启动时默认启动队列为root.default队列。

容量调度算法特性

① 多级队列:容量调度策略以队列来划分集群资源,不同机构可以在集群里新建不同队列。
② 容量确定性:规定某队列占用集群资源的上下限,能够确保即使其他队列用到其最高峰时,也能预留充足资源留给此队列。
③ 安全性:每个队列都有相应的访问控制列表ACL文件。
④ 弹性:通过设置队列额外资源使用量,能够让此队列使用超出规定的资源量。
⑤ 多用户:通过设置不同队列拥有资源的比例,避免某用户或某进程独占集群资源,实现多用户多任务调度。
⑥ 易操作性:主要包括实时配置和实时更改队列状态。

实时配置:管理员能够以安全的方式,在不停止集群的情况下,实时更新队列配置。

① 实时更改队列状态:管理员可以在不停止集群的情况下,将队列从运行状态切换成停止状态。Yarn可以管理用户权限和作业提交。
② 基于资源调度:Yarn支持资源密集型作业,作业在分配Container时其Container所包含的资源量是一定的,但Yarn允许此Container在执行时占用更多的资源,目前只支持内存。

管理接口

① Web接口:yarn-site.xml指定使用容量调度策略。capacity-scheduler.xml配置全局多级队列和队列的ACL文件。mapred-site.xml配置客户端提交MapReduce任务时使用的队列。Hadoop-policy.xml配置全局ACL文件。
② Shell命令接口:$HADOOP_YARN_HOME/bin/yarn rmadmin –refreshQueues,管理员可以通过此命令在不停止集群的情况下,使多级队列的配置立即生效。

(2)公平调度策略FairScheduler

概述

  FairScheduler是一种允许多个Yarn任务公平使用集群资源的可插拔式调度策略。

在这里插入图片描述
  从宏观上看,集群资源公平地为每一个任务所拥有,它不仅可以让短作业在合理的时间内完成,也避免了长作业长期得不到执行的尴尬局面。

多级队列包括以下几个方面的内容。

① 默认队列:公平调度策略也通过队列来组织和管理任务,并且也支持多级队列,其队列之间为多叉树结构。
② 队列间权重配置:设置某队列资源权重,权重越大,获得资源的比例越大。
③ 队列内多调度策略:队列内部的调度策略是可配置的,默认为FairSharePolicy策略。
④ 队列下限:为每个队列设置资源下限值,大大提高集群资源利用率。
⑤ 支持多用户:通过多级队列可以将不同的用户分配到不同的队列里。
⑥ 访问控制列表ACL:管理员可以设置队列的ACL文件,严格控制用户访问。

接口

yarn-site.xml:设定属性yarn.resourcemanager.scheduler.classYarn启动公平调度策略,设置属性yarn.scheduler.fair.allocation.file来指定多级队列文件位置。
fair-scheduler.xml:配置多级队列的文件,此文件名与位置是通过Yarn配置文件yarn-site.xml里yarn.scheduler.fair.allocation.file属性指定。

(四)Hadoop 2.0安全机制简介

  早期Hadoop版本假定HDFS和MapReduce运行在安全的环境中,它基本上没有安全措施。集群内部,任何用户提交的MR任务都可以任意访问HDFS数据;集群外部,我们甚至可以启动一个非法slave连接到master,从而冒充集群slave骗取集群数据。随着Hadoop应用越来越广泛,它的安全机制也在不断完善。

1、Hadoop安全机制背景

在这里插入图片描述
在这里插入图片描述
2、Hadoop安全机制架构思想

  Kerberos鉴定登录用户(服务)是否是其声称的用户(服务),Hadoop决定这个用户到底拥有多少权限。

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

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

相关文章

c++使用nlohmann读取json文件

下载&#xff1a; GitHub - nlohmann/json: JSON for Modern C 解压&#xff1a; 包含头文件&#xff1a; 要包含的头文件和要使用的命名空间&#xff1a; #include <nlohmann/json.hpp>using json nlohmann::json; 测试文件&#xff1a; 代码&#xff1a; #include…

Vscode中使用make命令

前言 需要注意&#xff0c;如下操作需要进行网络代理&#xff0c;否则会出现安装失败的情况 安装 第一步 — 安装MingGW &#xff08;1&#xff09;进入官网下载 &#xff08;2&#xff09;下载完成之后&#xff0c;双击exe文件 &#xff08;3&#xff09;点击Install &#x…

远程桌面端口,远程桌面改端口有哪些方法

方法一&#xff1a;通过修改注册表 步骤一&#xff1a;打开注册表编辑器 按下 Windows键R 打开“运行”对话框。输入 regedit 并按 Enter 打开注册表编辑器。 步骤二&#xff1a;定位到远程桌面服务的端口设置 导航至第一个注册表路径&#xff1a;HKEY_LOCAL_MACHINE\SYSTE…

抢占人工智能行业红利,前阿里巴巴产品专家带你15天入门AI产品经理

前言 当互联网行业巨头纷纷布局人工智能&#xff0c;国家将人工智能上升为国家战略&#xff0c;藤校核心课程涉足人工智能…人工智能领域蕴含着巨大潜力&#xff0c;早已成为业内共识。 面对极大的行业空缺&#xff0c;不少人都希望能抢占行业红利期&#xff0c;进入AI领域。…

多线程中run()和start()的区别

我们知道&#xff0c;在多线程中 Thread thread new Thread(runnable); thread.start();以及 thread.run();都可以执行runnable中run方法下的代码&#xff0c;但是二者又有所不同 下面给出一段代码用以体现二者的区别&#xff1a; 以下代码中&#xff0c;通过thread.start()启…

探索互联网寻址机制 | 揭秘互联网技术的核心,解析网络寻址

揭秘互联网技术的核心&#xff0c;解析网络寻址题 前提介绍局域网地址IP地址的分配方式动态IP分配机制内部网&#xff08;intranet&#xff09;ICANN负责IP分配DHCP协议获取IP地址 域名系统域名是什么域名工作方式hosts文件存储域名映射关系DNS分布式数据库DNS域名解析 Java进行…

搭建知识付费APP平台教学:在线教育系统源码详解

如何搭建一个高效的知识付费APP平台呢&#xff1f;今天&#xff0c;笔者将详细解析在线教育系统的源码&#xff0c;帮助您快速搭建自己的知识付费APP平台。 一、平台的核心功能 一个完整的知识付费APP平台通常需要具备以下核心功能&#xff1a; 用户管理 内容管理 支付 课…

【秋招突围】2024届秋招笔试-小红书笔试题-第一套-三语言题解(Java/Cpp/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f4e7; 清隆这边…

CrossOver 2024软件安装包下载

CrossOver不像Parallels或VMware的模拟器&#xff0c;而是实实在在Mac OS X系统上运行的一个软件。CrossOvers能够直接在Mac上运行Windows软件与游戏&#xff0c;而不需虚拟机。它为Windows软件提供所需的资源&#xff0c;以达到在Mac OS X系统上运行Windows程序的目的。 安 装…

模型 WOOP

说明&#xff1a;系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。不再拖延和懒惰&#xff0c;让梦想照进现实。 1 WOOP模型的应用 1.1 WOOP模型提高自己健身习惯 如果你想要养成健身的习惯&#xff0c;那么使用WOOP模型来提高自己健身习惯&#xf…

【第9章】Vue之Element Plus快速入门

文章目录 前言一、安装1. 兼容性2. 安装 二、按需导入1.自动导入2.Vite 三、全局配置四、官方案例五、效果总结 前言 基于 Vue 3&#xff0c;面向设计师和开发者的组件库。 一、安装 1. 兼容性 Element Plus 目前还处于快速开发迭代中。 由于 Vue 3 不再支持 IE11&#xff0c…

vite-plugin-mock前端自行模拟接口返回数据的插件

vite-plugin-mock前端自行模拟接口返回数据的插件 安装导入、配置&#xff08;vite.config.js&#xff09;使用目录结构/mock/user.js具体在页面请求中的使用 注意事项 中文文档&#xff1a;[https://gitcode.com/vbenjs/vite-plugin-mock/blob/main/README.zh_CN.md) 参考其他…

紫光展锐5G处理器T750__国产手机芯片5G方案

展锐T750核心板采用6nm EUV制程工艺&#xff0c;CPU架构采用了八核设计&#xff0c;其中包括两个主频为2.0GHz的Arm Cortex-A76性能核心和六个主频为1.8GHz的A55小核。这种组合使得T750具备卓越的处理能力&#xff0c;并能在节能的同时提供出色的性能表现。该核心模块还搭载了M…

Java17 --- RabbitMQ之插件使用

目录 一、Federation插件 1.1、运行两个rabbitmq实例 1.2、启用插件 1.3、在下游端点添加上游端点 1.4、创建策略 1.6、测试 二、联邦队列 2.1、创建策略 2.2、创建交换机与队列 2.2.1、创建52000的队列与交换机 2.2.2、创建62000的队列 三、Shovel 3.1、启…

探索uni-app x:下一代跨平台应用开发引擎

摘要 随着移动互联网的快速发展&#xff0c;跨平台应用开发的需求日益旺盛。传统的原生开发虽然性能卓越&#xff0c;但开发周期长、维护成本高。而Web应用开发虽然开发效率高&#xff0c;但性能往往不尽如人意。在这样的背景下&#xff0c;uni-app x应运而生&#xff0c;作为…

Qt项目天气预报(2) - 重写事件函数

鼠标右键实现退出界面 知识点QMenu: QMenu 弹出对话框 --> 相对QMessageBox 更加轻量点 QMenu是Qt库中用于创建弹出式菜单的类&#xff0c;它通常出现在应用程序的顶部菜单栏、按钮的右键菜单或自定义上下文菜单中。以下是关于QMenu的详细介绍&#xff1a; 1. 类的基本特…

【多线程】如何使用jconsole工具查看Java线程的详细信息?

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 先运行java程序&#xff01;2. 在jdk目录下的bin文件夹中找到jconsole.exe3. 新建连接4. 观察线程状态5. …

金融数据中心布线运维管理解决方案

金融行业的核心业务&#xff0c;如交易、支付、结算等&#xff0c;对网络的依赖程度极高。布线作为网络基础设施的重要组成部分&#xff0c;其稳定性和可靠性直接关系到业务的连续运行。因此&#xff0c;良好的布线管理能够确保网络系统的稳定运行&#xff0c;减少因网络故障导…

训练营第三十八天 | 309.最佳买卖股票时机含冷冻期动态规划系列七总结714.买卖股票的最佳时机含手续费股票问题总结篇!

309.最佳买卖股票时机含冷冻期 力扣题目链接(opens new window) 给定一个整数数组&#xff0c;其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#x…

Navicat和SQLynx产品功能比较一(整体比较)

Navicat和SQLynx都是数据库管理工具&#xff0c;在过去的二十年中&#xff0c;国内用户主要是使用Navicat偏多&#xff0c;一般是个人简单开发需要&#xff0c;数据量一般不大&#xff0c;开发相对简单。SQLynx是最近几年的数据库管理工具&#xff0c;Web开发&#xff0c;桌面版…