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

打印 上一主题 下一主题

主题 550|帖子 550|积分 1650


四、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决定这个用户到底拥有多少权限。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表