Hadoop多用户作业调度器

  hadoop 最初是为批处理作业设计的,当时只采用了一个简单的FIFO调度机制分配任务,随着hadoop的普及以及应用的用户越来越多,基于FIFO的单用户调度机制不能很好的利用集群资源(比如机器学习和数据挖掘对处理耗时要求不高但I/O密集,生产性作业队实时要求高,如Hive查询统计CPU密集,即不同的作业类型对资源要求不一致),多用户调度器势在必行。多用户调度主要有两种思路,一种是在物理集群上虚拟出多个hadoop集群,优点是实现简单,缺点是集群管理麻烦、调度资源浪费,典型代表HOD(Hadoop on Demand);另一种是扩展Hadoop调度器,使之支持多队列多用户调度,典型代表是capacity scheduler 和fair scheduler。

  

hadoop 队列管理机制

  hadoop 以队列为单位管理资源,用户只能向一个或多个队列提交作业,队列管理分为两方便:用户权限管理和资源管理。管理员可以配置每个队列的用户和用户组,也可以配置每个队列的管理员,他可以kill队列,改变队列的优先级等;系统支援管理有调度器完成,管理员可以设置各个队列的资源容量参数。

capacity Scheduler

capacity scheduler 主要是由yahoo实现的,主要有以下几个特点:

  • 容量保证:管理员可以设置队列的资源使用上限
  • 灵活性:如果一个队列的资源有剩余,可以共享给其他需要资源的队列,当此队列需要资源时由其他队列归还资源。
  • 多重租赁:支持多用户共享集群和多作业同时运行。
  • 支持资源密集型作业
  • 支持作业优先级

hadoop 安全机制

  由于hadoop 一般部署在由防火墙隔离的局域网环境之中,hadoop安全机制基本不用与考虑地域外网攻击,更多的是保障多用户在集群环境下安全高效的使用集群资源。Hadoop RPC 采用了SASL(Sample Authentication and Security Layer) 进行安全认证。

Kerberos 认证

  kerberos 是一种网络安全认证协议,主要概念如下:

  • 客户端(client):请求服务的用户
  • 服务端(server):向用户提供服务的一方
  • 秘钥分发中心(kerberos key distribution center,KDC):中心化的存储了客户端密码和其他账户信息,他接收来自客户端的请求,验证合法性并授予会话凭证,分为认证服务和授权服务。
  • 认证服务(authentication server,AS):校验用户身份
  • 票据授权服务(Ticket-Granting Service,TGS):验证由AS颁发的票据,如果票据验证通过,则颁发服务许可票据
  • 票据(Ticket):用于服务器与用户之间安全的传输信息,同时也附加一些标识
  • 票据授权票据(Ticket-Granting Ticket,TGT):AS颁发的票据
  • 服务许可票据(Service-Granting Ticket,SGT):TGS颁发的票据

  kerberos 一般采用对称加密方式,认证流程如下图:

  

  kerberos相对于SSL的优点:

  • kerberos采用对称加密相比SSL非对称加密算法高效。
  • 用户管理简单,kerberos基于第三方KDC统一管理,撤销用户只需移出KDC记录,而SSL需要广播给各个服务器

  

  Kerberos协议本身并不能完全解决网络安全性问题,它是建立在一些假定之上的,只有在满足这些假定的环境中它才能正常运行:

  • 不能对拒绝服务(Denial of Service)攻击进行防护。Kerberos不能解决拒绝服务攻击,在该协议的很多环节中,攻击者都可以阻断正常的认证步骤。这类攻击只能由管理员和用户来检测和解决。
  • 主体必须保证他们的私钥的安全。如果一个入侵者通过某种方法窃取了主体的私钥,他就能冒充身份。
  • Kerberos无法应付口令猜测攻击。如果一个用户选择了弱口令,那么攻击者就有可能成功地用口令字典破解掉,继而获得那些由源自于用户口令加密的所有消息。
  • 网络上每个主机的时钟必须是松散同步的。这种同步可以减少应用服务器进行重放攻击检测时所记录的数据。松散程度可以以一个服务器为准进行配置。时钟同步协议必须保证自身的安全,才能保证时钟在网上同步。
  • 主体的标识不能频繁地循环使用。由于访问控制的典型模式是使用访问控制列表(ACLs)来对主体进行授权。如果一个旧的ACL还保存着已被删除主体的入口,那么攻击者可以重新使用这些被删除的用户标识,就会获得旧ACL中所说明的访问权限。

  

  

  

深入理解hadoop(三)的更多相关文章

  1. 深入理解Hadoop之HDFS架构

    Hadoop分布式文件系统(HDFS)是一种分布式文件系统.它与现有的分布式文件系统有许多相似之处.但是,与其他分布式文件系统的差异是值得我们注意的: HDFS具有高度容错能力,旨在部署在低成本硬件上 ...

  2. 深入理解hadoop之HDFS

    深入理解hadoop之HDFS 刚刚才写完关于mapreduce的一篇博文,趁热打铁接下来聊聊HDFS.本博文参考资料为HADOOP权威指南第3版完版,博文如有错漏之处,敬请指正. HDFS即Hado ...

  3. 深入理解hadoop之机架感知

    深入理解hadoop之机架感知 机架感知 hadoop的replication为3,机架感知的策略为: 第一个block副本放在和client所在的datanode里(如果client不在集群范围内, ...

  4. 深入理解OOP(三):多态和继承(动态绑定和运行时多态)

    在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...

  5. 理解RxJava:(三)RxJava的优点

    理解RxJava:(三)RxJava的优点 在第一部分,讲解了RxJava的基本结构.在第二部分,展示了operators的强大之处.但是你们可能仍然没有被说服,也没有足够的理由信服.下面是一些能让你 ...

  6. Hadoop三种安装模式:单机模式,伪分布式,真正分布式

    Hadoop三种安装模式:单机模式,伪分布式,真正分布式 一 单机模式standalone单 机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守 ...

  7. (转)hadoop三个配置文件的参数含义说明

     hadoop三个配置文件的参数含义说明     1       获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配 ...

  8. hadoop(三)

    hadoop(三) 1.对MapReduce的认识   MapReduce是运行在yarn上面的一个分布式运算框架,它是用来解决海量的分布式运算的.对于MapReduce来说,我们可以把它分成两部分来 ...

  9. Java 反射理解(三)-- Java获取方法信息

    Java 反射理解(三)-- Java获取方法信息 基本的数据类型.void关键字,都存在类类型. 举例如下: public class ClassDemo2 { public static void ...

  10. 深入理解hadoop数据倾斜

    深入理解hadoop之数据倾斜 1.什么是数据倾斜 我们在用map /reduce程序执行时,有时候会发现reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理 ...

随机推荐

  1. JAVA 高级特性 JDBC

     需要的jdbc jar 包: mysql-connector-java-5.1.38-b...960.9 KB ojdbc6.jar2.0 MB sqljdbc4.jar455.4 KB   数据持 ...

  2. 微软2017年预科生计划在线编程笔试 A Legendary Items

    思路: 获得第i(i = 0, 1, ..., n - 1)件物品的概率仅由公式p / (1 << i)决定,所以获得这i件物品之间是相互独立的.迭代计算获得所有i件物品的期望再求和即可. ...

  3. 行内元素对齐各种问题--从line-height和vertical-align的角度分析

    最近研究行内元素的对齐问题,发现img不管怎么设置,下边都有一块留白,强迫症无法忍受未知,于是开始了查阅探索之旅. 辗转来到张鑫旭的博客,他对行内盒子模型做了详细的介绍,包括“幽灵节点”,“line- ...

  4. openmv第一次调试

    2018-09-19  20:14:51 import sensor, image, time import car import json import time from pyb import U ...

  5. iOS定位--CoreLocation框架

    CoreLocation框架的使用 // 首先导入头文件 #import <CoreLocation/CoreLocation.h> CoreLocation框架中所有数据类型的前缀都是C ...

  6. Asp.Net控件的客户端命名

    我们在用ASP.NET写出来的网页,用浏览器来查看生成的客户端代码的时候经常看到这样的代码:GridView1_ctl101_WebUserControl1_webuserControlButton, ...

  7. oracle char 多位,引发的问题

    我在表字有一字段type 类型为char(1),一开始用的还好,后来,char(1)不够用了,于是将char(1),变为char(2). 我做了一个字典表,来对应type,可是,总是查不到数据,最后, ...

  8. VS调试debug的即时窗口的使用

    例:

  9. [Python3网络爬虫开发实战] 1.8.3-Scrapy-Splash的安装

    Scrapy-Splash是一个Scrapy中支持JavaScript渲染的工具,本节来介绍它的安装方式. Scrapy-Splash的安装分为两部分.一个是Splash服务的安装,具体是通过Dock ...

  10. 零基础入门学习Python(33)--异常处理:你不可能总是对的2

    知识点 异常处理 捕捉异常可以使用try/except语句. try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理. 如果你不想在异常发生时结束你的程序,只需 ...