最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

基于HadoopSLA认证机制实现权限控制

来源:懂视网 责编:小采 时间:2020-11-09 12:58:56
文档

基于HadoopSLA认证机制实现权限控制

基于HadoopSLA认证机制实现权限控制:Hadoop集群上存储数据,同时基于MapReduce计算框架可以实现计算任务,那么无论是从数据保护的角度,还是从提交计算任务占用资源的角度来看,都需要存在一种权限管理与分配机制,能够很好地限制哪些人可以在HDFS上存储数据,哪些人可以利用集群的资源来处理特
推荐度:
导读基于HadoopSLA认证机制实现权限控制:Hadoop集群上存储数据,同时基于MapReduce计算框架可以实现计算任务,那么无论是从数据保护的角度,还是从提交计算任务占用资源的角度来看,都需要存在一种权限管理与分配机制,能够很好地限制哪些人可以在HDFS上存储数据,哪些人可以利用集群的资源来处理特

Hadoop集群上存储数据,同时基于MapReduce计算框架可以实现计算任务,那么无论是从数据保护的角度,还是从提交计算任务占用资源的角度来看,都需要存在一种权限管理与分配机制,能够很好地限制哪些人可以在HDFS上存储数据,哪些人可以利用集群的资源来处理特

Hadoop集群上存储数据,同时基于MapReduce计算框架可以实现计算任务,那么无论是从数据保护的角度,还是从提交计算任务占用资源的角度来看,都需要存在一种权限管理与分配机制,能够很好地限制哪些人可以在HDFS上存储数据,哪些人可以利用集群的资源来处理特定的计算任务。当然,如果能够非常完美地解决这些问题是最好的。当前Hadoop本身提供的权限管理功能还不能满足普遍的需要,或者我们从Hadoop已有的一些简单或复杂的认证机制选择适合自己所在组织机构需要的,或者我们在外围开发一些权限管理系统与Hadoop整合作为补充。
对比Kerberos认证(Authentication)配置方式与SLA授权(Service Level Authorization)方式,Kerberos配置相当复杂,而且还要依赖于外部的密钥分发中心KDC(Key Distribution Center)服务器,如果KDC出现问题,那么就会导致依赖于KDC认证的整个Hadoop集群无法使用,鉴于此,对于一些相对小的开发团队来说还是更倾向于粗粒度的Hadoop SLA授权机制。
Hadoop SLA基于Hadoop的各种服务(基于协议来划分)与Linux系统的用户、用户组来实现。Hadoop通过制定接口协议的方式来实现节点之间服务调用的逻辑,这样每一个协议所指定的一组服务就是一个认证单元,再基于底层Linux系统的用户和用户组来限制用户(可能是节点服务)有权限执行某一种协议所包含的操作集合,下面我们看一下Hadoop中的各种协议:

协议名称 范围 说明
ClientProtocol HDFS 用户代码基于DistributedFileSystem与NameNode交互,可以操作Hadoop的Namespace,以及打开/关闭文件流操作。
ClientDatanodeProtocol HDFS 客户端与DataNode交互协议,用来实现数据库恢复(Block Recovery)。
DatanodeProtocol HDFS DataNode与NameNode通信的协议,DataNode基于此协议向NameNode发送block report,以及DataNode当前状态信息(如负载情况)。
InterDatanodeProtocol HDFS DataNode之间进行通信的协议,用来更新Block副本(replica)信息,如时间戳、长度等信息。
NamenodeProtocol HDFS SecondaryNameNode与NameNode进行通信的协议,用来获取NameNode的状态信息,如进行checkpoint的edits与fsimage。
AdminOperationsProtocol HDFS HDFS管理操作协议。
RefreshUserMappingsProtocol HDFS、MR 用来刷新缓存中用户与用户组映射关系信息,因为无论是操作HDFS,还是运行MapReduce Job,都会用到用户信息。
RefreshAuthorizationPolicyProtocol HDFS、MR 用来更新认证策略(Authorization Policy)配置,对应于配置文件/etc/hadoop/hadoop-policy.xml,控制执行hdfs dfsadmin -refreshServiceAcl和yarn rmadmin -refreshServiceAcl的权限。
HAServiceProtocol HDFS HDFS HA操作协议,用来管理Active NameNode与Stand-by NameNode状态。
ZKFailoverController HDFS ZooKeeper Failover控制器操作权限,用于HDFS HA。
QJournalProtocol HDFS QuorumJournalManager与JournalNode之间通信的协议,用于HDFS HA,用来同步edits,并协调Active NameNode与Stand-by NameNode状态。
HSClientProtocol HDFS 客户端与MR History Server之间通讯的协议,用来查看Job历史信息。
ResourceTracker YARN ResourceManager与NodeManager之间通信的协议。
ResourceManagerAdministrationProtocol YARN ResourceManager管理操作协议。
ApplicationClientProtocol YARN YARN客户端(Application)与ResourceManager通信的协议,包括Job提交、Job取消,查询Application状态信息等。
ApplicationMasterProtocol YARN ApplicationMaster与ResourceManager之间进行通信的协议,包括AM向RM发送注册或注销请求(获取或释放资源)。
ContainerManagementProtocol YARN ApplicationMaster与NodeManager之间进行通信的协议,包括启动/停止Container调用请求。
LocalizationProtocol YARN NodeManager与ResourceLocalizer之间进行通信的协议。
TaskUmbilicalProtocol MR Map/Reduce Task进程与后台父进程(向MR ApplicationMaster请求创建Map/Reduce Task)之间进行通信的协议。
MRClientProtocol MR MR JobClient与MR ApplicationMaster之间进行通信的协议,包括查询Job状态等。

上表中是基于SLA划分的不同服务级别,要想使SLA认证生效,首相需要在Hadoop配置文件/etc/hadoop/core-site.xml中增加如下配置内容:

 
 hadoop.security.authorization
 true
 

该配置属性hadoop.security.authorization默认是false,如果集群已经运行,修改了该配置需要重新启动Hadoop集群。然后需要进行SLA认证的详细配置,修改配置文件/etc/hadoop/hadoop-policy.xml,该配置文件中的配置项与对应的SLA协议之间的对应关系如下表所示:

配置项 协议名称
security.client.protocol.acl ClientProtocol
security.client.datanode.protocol.acl ClientDatanodeProtocol
security.datanode.protocol.acl DatanodeProtocol
security.inter.datanode.protocol.acl InterDatanodeProtocol
security.namenode.protocol.acl NamenodeProtocol
security.admin.operations.protocol.acl AdminOperationsProtocol
security.refresh.usertogroups.mappings.protocol.acl RefreshUserMappingsProtocol
security.refresh.policy.protocol.acl RefreshAuthorizationPolicyProtocol
security.ha.service.protocol.acl HAServiceProtocol
security.zkfc.protocol.acl ZKFailoverController
security.qjournal.service.protocol.acl QJournalProtocol
security.mrhs.client.protocol.acl HSClientProtocol
security.resourcetracker.protocol.acl ResourceTracker
security.resourcemanager-administration.protocol.acl ResourceManagerAdministrationProtocol
security.applicationclient.protocol.acl ApplicationClientProtocol
security.applicationmaster.protocol.acl ApplicationMasterProtocol
security.containermanagement.protocol.acl ContainerManagementProtocol
security.resourcelocalizer.protocol.acl LocalizationProtocol
security.job.task.protocol.acl TaskUmbilicalProtocol
security.job.client.protocol.acl MRClientProtocol

配置SLA权限,实际上是增加ACL(配置用户或用户组)基本格式要求如下:

  • 如果既有用户,又有用户组,配置内容格式:user1,user2 group1,group2
  • 如果只有用户组,配置内容前面增加一个空格: group1,group2
  • 配置内容为*,表示所有用户都具有对应的服务操作权限
  • 下面,我们给定如下的需求:

  • hadoop用户作为Hadoop集群的管理员角色,可以执行任何操作
  • 为了防止其他用户使用hadoop用户,使hadoop用户归属于用户组g_super_adm,使属于该组的用户具有集群管理员权限
  • 只有hadoop用户具有修改SLA认证权限的配置
  • Storm集群使用storm用户运行Topology,将实时数据写入HDFS,storm用户只具有操作HDFS权限
  • 用户组g_dfs_client具有操作HDFS权限
  • 用户组g_mr_client具有在Hadoop上运行MapReduce Job的权限
  • 用户stater只具有操作HDFS和运行MapReduce Job的权限
  • 通过进行配置实践,来满足上述要求。修改配置文件/etc/hadoop/hadoop-policy.xml中的部分配置项,具体修改的内容如下所示:

     
     security.client.protocol.acl
     stater,storm g_super_adm,g_dfs_client
     ACL for ClientProtocol, which is used by user code
     via the DistributedFileSystem.
     The ACL is a comma-separated list of user and group names. The user and
     group list is separated by a blank. For e.g. "alice,bob users,wheel".
     A special value of "*" means all users are allowed.
     
     
     
     security.refresh.policy.protocol.acl
     hadoop
     ACL for RefreshAuthorizationPolicyProtocol, used by the
     dfsadmin and mradmin commands to refresh the security policy in-effect.
     The ACL is a comma-separated list of user and group names. The user and
     group list is separated by a blank. For e.g. "alice,bob users,wheel".
     A special value of "*" means all users are allowed.
     
     
     
     security.job.client.protocol.acl
     stater g_super_adm,g_mr_client
     ACL for MRClientProtocol, used by job clients to
     communciate with the MR ApplicationMaster to query job status etc.
     The ACL is a comma-separated list of user and group names. The user and
     group list is separated by a blank. For e.g. "alice,bob users,wheel".
     A special value of "*" means all users are allowed.
     
     
    

    其他的配置属性值保持默认值不变即可。为了保证整个Hadoop集群配置相同,需要将修改的配置文件同步到整个集群的所有节点上。
    然后,为了使上述配置内容生效,需要执行如下命令:

    hdfs dfsadmin -refreshServiceAcl
    yarn rmadmin -refreshServiceAcl
    

    修改SLA认证配置,不需要重启服务,根据修改内容执行上述命令就可以生效。
    后面参考链接中,有些关于Hadoop SLA的文档内容貌似没有随着Hadoop版本升级而更新,与实际Hadoop发行版本中配置文件的内容有一定差别,可以参考,具体以实际版本的情况为准。

    参考链接

  • http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-common/ServiceLevelAuth.html
  • http://hadoop.apache.org/docs/r2.2.0/hadoop-auth/Configuration.html
  • 声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    基于HadoopSLA认证机制实现权限控制

    基于HadoopSLA认证机制实现权限控制:Hadoop集群上存储数据,同时基于MapReduce计算框架可以实现计算任务,那么无论是从数据保护的角度,还是从提交计算任务占用资源的角度来看,都需要存在一种权限管理与分配机制,能够很好地限制哪些人可以在HDFS上存储数据,哪些人可以利用集群的资源来处理特
    推荐度:
    标签: 控制 权限 实现
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top