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. jstat命令-帮助优化java性能

    jstat命令使用 jstat命令可以查看堆内存各部分的使用量,以及加载类的数量.命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

  2. Vue.js学习笔记--2.基础v-指令

    整理自官网教程 -- https://cn.vuejs.org/ 1. v-bind绑定Class与Style a. 绑定Class 语法:v-bind:class="{classname: ...

  3. serialize可以获取form表单里面的数值

    serialize属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  4. 掌握Spark机器学习库-05-spark中矩阵与向量的使用

    1)介绍 矩阵: Matrix,看做二维表,基本运算(+,-,*,T) 向量: Vectors,方向和大小,基本运算,范数 2)spark中向量的使用(主要使用breeze.linalg) 3)spa ...

  5. [Android]Android Design之Navigation Drawer

    概述 在以前ActionBar是Android 4.0的独有的,后来的ActionBarSherlock的独步武林,对了还有SlidingMenu,但是这个可以对4.0下的可以做很好的适配.自从Goo ...

  6. iOS地图----MapKit框架

    1.MapKit框架使用前提 ①导入框架 ②导入主头文件 #import <MapKit/MapKit.h> ③MapKit框架使用须知 MapKit框架中所有数据类型的前缀都是MK Ma ...

  7. 重装macOS环境配置笔记

    由于早些年买mac的时候写代码的经验还不够,导致多年使用后mac上装满了乱七八糟的软件,比如python就有系统自带的,xcode里的,pyenv的,以及brew安装的各种版本,nginx,Apach ...

  8. H3C AR28-31路由器组网实验

    接线图 可以发现PC1和PC2不在一个网段上,如果不靠路由器就不可能ping,所以要用路由器组网 接线步骤 串行线连接路由器1与路由器2 以太网线连路由器以太网口 与 交换机接口 计算机网线连交换机口 ...

  9. leetcode_1014. Capacity To Ship Packages Within D Days

    https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/ 传送带要在D天内把所有货物传送完,但是传送带每天有传送容量 ...

  10. leetcode_238. Product of Array Except Self_思维

    https://leetcode.com/problems/product-of-array-except-self/ 给一个vector<int> nums,输出一个vector< ...