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.mzph.cn/diannao/27960.shtml

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

相关文章

如何解决mfc100u.dll丢失问题,关于mfc100u.dll丢失的多种解决方法

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“计算显示缺失mfc100u.dll”。这个问题可能会影响到我们的正常使用&#xff0c;因此了解它的原因、表现以及解决方法是非常重要的。小编将详细介绍计算显示缺失mfc100u.dll的问题&#xff0…

音视频集式流媒体边缘分布式集群拉流管理

一直以来&#xff0c;由于srs zlm等开源软件采用传统直播协议&#xff0c;即使后面实现了webrtc转发&#xff0c;由于信令交互较弱&#xff0c;使得传统的安防监控方案需要在公网云平台上部署大型流媒体服务器&#xff0c;而且节点资源不能统一管理调度&#xff0c;缺乏灵活性和…

基于PPO的强化学习超级马里奥自动通关

目录 一、环境准备 二、训练思路 1.训练初期&#xff1a; 2.思路整理及改进&#xff1a; 思路一&#xff1a; 思路二&#xff1a; 思路三&#xff1a; 思路四&#xff1a; 3.训练效果&#xff1a; 三、结果分析 四、完整代码 训练代码&#xff1a; 测试代码&#x…

2024.ZCPC.M题 计算三角形个数

题目描述&#xff1a; 小蔡有一张三角形的格子纸&#xff0c;上面有一个大三角形。这个边长为 的大三角形&#xff0c; 被分成 个边长为 1 的小三角形(如图一所示)。现在&#xff0c;小蔡选择了一条水平边 删除&#xff08;如图二所示&#xff09;&#xff0c;请你找出图上剩余…

RestTemplate远程请求的艺术

1 简说 编程是一门艺术,追求优雅的代码就像追求优美的音乐。 很多有多年工作经验的开发者,在使用RestTemplate之前常常使用HttpClient,然而接触了RestTemplate之后,却愿意放弃多年相处的“老朋友”,转向RestTemplate。那么一定是RestTemplate有它的魅力,有它的艺术风范。…

【ARM-Linux篇】阿里云人脸识别方案

一、接入阿里云 https://vision.aliyun.com/ 点击“人脸搜索1:N” 点击"立即开通"&#xff1a; 使用阿里云APP/支付宝/钉钉扫码登录&#xff1a; 购买“人脸搜索1:N”能力&#xff0c;第一次购买&#xff0c;可以有5000次的免费使用&#xff1a; 开通完后&#xff…

【踩坑日记】I.MX6ULL裸机启动时由于编译的程序链接地址不对造成的程序没正确运行

1 现象 程序完全正确&#xff0c;但是由于程序链接的位置不对&#xff0c;导致程序没有正常运行。 2 寻找原因 对生成的bin文件进行反汇编&#xff1a; arm-linux-gnueabihf-objdump -D -m arm ledc.elf > ledc.dis查看生成的反汇编文件 发现在在链接的开始地址处&…

Ubuntu基础-VirtualBox安装增强功能

目录 零. 前言 一. 安装 1.点击安装增强功能 2.点击光盘图标 3.复制到新文件夹 4.运行命令 5.重启系统 6.成果展示 二. 打开共享 1.共享粘贴 ​编辑2.共享文件夹 三.总结 安装步骤 打开共享粘贴功能&#xff1a; 打开共享文件夹功能&#xff1a; 零. 前言 在使用…

redis未授权访问

redis数据库基本知识 redis非关系型数据库 redis未授权访问蓝队的成因和危害 漏洞的定义&#xff1a;redis未授权访问漏洞是一个由于redis服务器版本较低&#xff0c;其未设置登录密码导致的登录。 攻击者可以直接利用redis服务器的ip地址和端口完成redis服务器的远程登陆&…

为什么笔记本电脑触控板不工作?这里有你想要的答案和解决办法

序言 你的笔记本电脑触控板停止工作了吗?值得庆幸的是,这个令人沮丧的问题通常很容易解决。以下是笔记本电脑触控板问题的最常见原因和修复方法。 触控板被功能键禁用 大多数(如果不是全部的话)Windows笔记本电脑都将其中一个功能键用于禁用和启用笔记本电脑触控板。按键…

民生银行信用卡中心金融科技24届春招面经

本文介绍2024届春招中&#xff0c;中国民生银行下属信用卡中心的金融科技&#xff08;系统研发方向&#xff09; 岗位2场面试的基本情况、提问问题等。 2024年04月投递了中国民生银行下属信用卡中心的金融科技&#xff08;系统研发方向&#xff09; 岗位&#xff0c;暂时不清楚…

关于反弹shell的学习

今天学习反弹shell&#xff0c;在最近做的ctf题里面越来越多的反弹shell的操作&#xff0c;所以觉得要好好研究一下&#xff0c;毕竟是一种比较常用的操作 什么是反弹shell以及原理 反弹Shell&#xff08;也称为反向Shell&#xff09;是一种技术&#xff0c;通常用于远程访问和…

C++设计模式——Decorator装饰器模式

一&#xff0c;装饰器模式简介 装饰器模式是一种结构型设计模式&#xff0c; 它允许在不改变现有对象的情况下&#xff0c;动态地将功能添加到对象中。 装饰器模式是通过创建具有新行为的对象来实现的&#xff0c;这些对象将原始对象进行了包装。 装饰器模式遵循开放/关闭原…

element-plus 的el-scrollbar滚动条组件

el-scrollbar组件可以替换原生的滚动条&#xff0c;可以设置出现滚动条的高度&#xff0c;若无设置则根据容器自适应。 通过使用 setScrollTop 与 setScrollLeft 方法&#xff0c;可以手动控制滚动条滚动。 scroll 滚动条的滚动事件&#xff0c;会返回滚动条当前的位置。 &l…

snap nextcloud 通过不被信任的域名访问

安装向导 — Nextcloud latest 管理手册 latest 文档 find / -name config.php trusted_domains >array (0 > localhost,1 > server1.example.com,2 > 192.168.1.50,3 > [fe80::1:50], ), vim /var/snap/nextcloud/42567/nextcloud/config/config.php vim /va…

pytorch--Pooling layers

文章目录 1.torch.nn.MaxPool1d()2.torch.nn.MaxPool2d3.torch.nn.AvgPool2d()4.torch.nn.FractionalMaxPool2d()5.torch.nn.AdaptiveMaxPool2d()6.torch.nn.AdaptiveAvgPool2d() 1.torch.nn.MaxPool1d() torch.nn.MaxPool1d() 是 PyTorch 库中的一个类&#xff0c;用于在神经网…

ISP图像算法面试准备(1)

ISP图像算法面试准备 ISP图像算法面试准备(1) 文章目录 ISP图像算法面试准备前言一、ISP流程二、重点关注1. AWB必须在Demosaic之后进行。2. Gamma矫正通常在CCM之前进行 三、如何实现ISP参数自动化调试四、AE&#xff0c;即自动曝光&#xff08;Auto Exposure&#xff09;总结…

【太原理工大学】软件系统安全—分析题

OK了&#xff0c;又是毫无准备的一场仗&#xff0c;我真是ありがとうございます 凸^o^凸 根据前几年传下来的信息&#xff0c;所谓“分析”&#xff0c;就是让你根据情节自行设计&#xff0c;例如如何设计表单等&#xff0c;这类多从实验中出&#xff0c;王老师强调好好做实验一…

Mybatis框架中结果映射resultMap标签方法属性收录

Mybatis框架中结果映射resultMap标签收录 在MyBatis框架中&#xff0c;resultMap 是一种强大的机制&#xff0c;用于将数据库结果集映射到Java对象上。它允许你定义如何将查询结果中的列映射到Java对象的属性上&#xff0c;尤其是当数据库表的字段名与Java对象的属性名不一致时…

HTML静态网页成品作业(HTML+CSS)—— 明星吴磊介绍网页(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 二、作品演示 三、代…