本文主要通过ranger在hdfs acl中的应用以及原理介绍一下ranger的使用,另外介绍一下实际使用过程中碰到的问题。
上篇文章回顾:时间服务器—NTP

目前公司内部大多通过数据工场来管理hdfs上的数据,工场开发团队和hdfs、yarn的SRE同学也配合紧密。由于涉及到管理数据,那么不得不说到权限控制的问题。

接触过hadoop的同学都应该了解hdfs上数据的权限类似linux中的权限,分为r、w、x三种权限。数据工场中也提供了各个表的数据权限的访问申请,底层通过java api去设置hdfs的acl,具体的每张表有访问权限的详情,但是缺少整体的供管理者预览的权限展示。

另外有一些没有在数据工场管理的目录,需要配置acl的话就需要通知SRE去手动添加或者删除。ranger一方面整体可以控制集群的acl,管理者在页面中就可以配置相关的权限,同时也提供了直观的权限展示。当然,不仅仅是hdfs目录的acl,包括hive、hbase、yarn、storm这些大数据生态的服务,都可以通过ranger来控制权限。

1、ranger功能展示

首先看一下ranger登录后的整体页面:

这里就是当前ranger可以进行权限控制的各个组件,每点开一个组件都可以编辑,比如hdfs,点开后就是如下配置界面:

上图主要配置的是namenode的地址,可以把这步骤配置叫做service配置,service配置完毕后,可以配置policy,也就是具体的针对某个集群的目录权限控制策略,如下图所示:

定义policy的名字(Policy Name)、定义需要控制权限的路径(Resource Path)、定义user或者group的访问权限(这里的uesr和group是hdfs上的user和group)。add之后就生成了一条完整的访问策略。在hdfs层面就完成了权限控制。

总结来看在ranger控制台,可以完成如下操作:

(1)service manager:目前支持hdfs、yarn、hbase、hive、storm等服务的管理

(2)service:通过某个service manager可以创建一个service,如hdfs服务,可以根据不同集群创建不同的service从而管理不同的集群

(3)policy:具体的权限控制策略,在service的基础上建立策略来控制权限

(4)audit:审计。包括用户登录情况和触发policy记录

(5)settings:可以手动增加和删除用户(安装了usersync插件后,这里的用户会自动更新同步namenode上的用户)

2、ranger plugin配置

ranger的权限控制离不开各项plugin的使用。在安装初始,编译完代码之后会生成很多plugin,如admin、usersync、hdfs、yarn等。

(1)admin插件是用作web页面的生成,需要注意的是admin配置文件中的mysql配置需要能够创建用户的权限,或者填写的mysql的用户名密码已经地址在mysql的user表中存在

(2)usersync插件用于同步namenode上的用户至ranger中,需要启动在namenode节点上(访问集群的用户必须在namenode本地机器上存在这个用户)

(3)剩下插件就是上面提到的各个组件的控制访问需要用到的插件。文件格式类似ranger-{$version}-{$pluginName}.tar.gz。解压这些文件到各个服务对应的master节点进行安装(解压后会有setup.sh文件,运行文件进行安装),同时重新启动master服务即可完成

3、权限控制原理

hdfs本身自带了权限控制,在配置文件中dfs.namenode.inode.attributes.provider.class默认值是空,在使用ranger进行权限控制的时候,需要将此项设置成org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer。

ranger控制权限主要是通过启动插件时候生成的配置文件以及插件自带的jar包来进行(plugin配置中有说明plugin的安装),会将jar包放到hadoop安装目录的lib目录下,将xml配置文件放到hadoop安装目录的etc/hadoop目录下9与hdfs-site.xml这些文件在同一路径下)。

且ranger控制的权限在hdfs自带的权限控制之上,也就是启动了ranger控制权限之后,用户访问hdfs的时候会先通过ranger的认证,如果发现没有权限,直接拒绝访问;如果有权限,之后仍然会去通过hdfs自带的权限控制去判断是否有访问权限,所以不用担心ranger的权限控制会覆盖原有的已经设置的权限。

4、元数据的存储

在低版本的ranger中,元数据可以通过配置到mysql中存储,较新版本(0.5)以后取消了mysql的配置,统一将元数据存储到了solr中。solr是一个高性能的、基于Lucene的全文搜索服务器,它也经常被拿来和现今流行的elasticsearch做比较。一般来说,solr在实时搜索逊于es,且在数据量增大的时候,solr的查询效率降低,但是在对单纯的已有的数据进行搜索时候,solar表现得更为突出,且solr支持多种数据格式,而es只支持json。

solr的安装很简单,直接下载solr-6.6.0.tar.gz解压即可。解压之后,cd到solr的bin目录下启动即可。

solr start -c  -s '/usr/local/solr/server/solr '-z zkaddress:port/solr复制代码

要提前在zookeeper上建立 'solr' 这个znode才行,而后使用solr create -c {$collection}-rf 2(2个副本)创建collection。访问http://ip:8983/solr即可打开页面,可以在页面中执行查询操作。集群搭建的话,就是所有机器重复以上步骤。使用bin/post -c {$collection} path/,其中collection是索引的名称;path/表示path路径下的文件,该命令表示将path下的所有文件标记为索引{$collection} 放到solr中去。

5、碰到的问题

在使用的过程中也碰到过问题,在使用ranger来进行yarn权限控制,控制用户提交任务权限的时候,ranger做得不够完善。在建立新的service的时候,填写入'YARN REST URL' 后,点击test connection,出现了问题,页面弹出框提示无法通过该url获得队列,查看ranger-admin运行日志也没有报错。翻看底层代码后发现,ranger在对yarn的支持上只支持了capacity调度,对fair调度没有支持。当将运行中的集群的调度改为capacity调度后,test connection成功。根本原因就是,resourcemanager的rest api(http://rm:port/ws/v1/cluster/scheduler)在不同的调度器下,得到的json文件不同,由于ranger底层单纯地只解析了capacity调度的json文件,没有解析fair调度的,所以出现了上述问题。需要针对fair调度下的rest api返回的json重新做解析。

本文首发于公众号“小米运维”,点击查看原文。

Apache Ranger——Hadoop ACL控制工具相关推荐

  1. 【转载】Apache Ranger剖析:Hadoop生态圈的安全管家

    前言 2016年,Hadoop迎来了自己十周岁生日.过去的十年,Hadoop雄霸武林盟主之位,号令天下,引领大数据技术生态不断发展壮大,一时间百家争鸣,百花齐放.然而,兄弟多了不好管,为了抢占企业级市 ...

  2. Apache Ranger、业务背景、现状与需求、大数据安全组件介绍与对别、系统架构及实践、ranger admin、UserSync、plugin、权限模型、权限实现等

    26.2.1业务背景 26.2.1.1现状&&需求 26.2.2大数据安全组件介绍与对比 26.2.2.2 Apache Sentry 26.2.2.3 Apache Ranger 2 ...

  3. Apache ranger 简介、原理、安装部署

    一.Ranger简介 Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计.它可以对Hadoop生态的组件如HDFS.Yarn.Hive.Hbase等进行细粒度的数据访问控制.通过 ...

  4. Apache Ranger原理与应用实践

    文章目录 一.业务背景 现状&&需求 二.大数据安全组件介绍与对比 1.Kerberos 2.Apache Sentry 3.Apache Ranger 4.为什么我们选择Ranger ...

  5. Apache Ranger初识

    1.Apache ranger简介 Apache ranger是一个Hadoop集群权限框架,提供操作.监控.管理复杂的数据权限,它提供一个集中的管理机制,管理基于yarn的Hadoop生态圈的所有数 ...

  6. Apache Ranger源码编译及使用

    Ranger源码编译.使用手册 1 Ranger简介 Apache Ranger提供一个集中式安全管理框架,它可以对Hadoop生态的组件如Hive,Hbase进行细粒度的数据访问控制.通过操作Ran ...

  7. Apache Ranger 是什么?

    前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 WHAT Apache Ra ...

  8. apache pdfbox_Apache PDFBox命令行工具:无需Java编码

    apache pdfbox 在博客文章Apache PDFBox 2中 ,我演示了将Apache PDFBox 2用作从Java代码中调用的库来操作PDF. 事实证明,Apache PDFBox 2还 ...

  9. hadoop的开发工具_Hadoop开发工具简介

    hadoop的开发工具 几天前, Apache Hadoop开发工具 (又名HDT )发布了. 这些项目旨在将插件引入eclipse中,以简化Hadoop平台上的开发. 该博客旨在概述HDT的一些重要 ...

最新文章

  1. MySQL分布式事务(XA事务)
  2. 【数据结构与算法】之旋转图像的求解算法
  3. shiro学习(15):使用注解实现权限认证和后台管理
  4. oracle cronb,利用Crontab实现对Oracle数据库的定时备份
  5. 步步深入MySQL:架构-gt;查询执行流程-gt;SQL解析顺序!
  6. 时间管理类APP的Demo版本
  7. Spring Autowiring @Qualifier example
  8. mysql中连接运算符_MySQL的运算符
  9. GB28181协议--GB28181协议简介
  10. python制作fnt字体打包工具
  11. python3修改pip执行环境和安装软件源
  12. 基于单片机的智能视力保护监控系统设计
  13. 三星s8 android版本,三星S8有几个版本?三星S8和三星S8+(plus)各个版本详细区别对比评测...
  14. map iterator it 的用法
  15. 微信王者有ios的服务器吗,王者IOS微信区国服瑶多有钱?凌晨撒4W红包,点开头像傻眼...
  16. MAtlab wavefront,MATLAB:像Wavefront算法一样制作矩阵
  17. 频域判断波形_股票价格频域特性
  18. 压敏电阻的原理和使用介绍
  19. jQuery+PHP实现的砸金蛋中奖程序
  20. linux查询日志命令加过滤,日志查看技巧之筛选[linux命令集][排查篇]

热门文章

  1. 如何用 JavaScript 下载文件
  2. ng-option小解
  3. AngularJS学习笔记之directive—scope选项与绑定策略
  4. Microsoft Office 企业记分卡管理服务器
  5. Linux下Ubuntu关闭触摸板(TinkPad)
  6. 一种数据结构的封装模式
  7. ASP.Net学习笔记013--ViewState初探2
  8. ASP.Net学习笔记004--基于ashx方式的ASP.Net开发1
  9. android学习笔记---60_meta-data的使用,在清单文件中是用meta-data来给activity,service,receiver提供参数
  10. EJB3.0学习笔记--SOAP-AXIS--深入Soap引擎