CDH大数据平台集成Apache Ranger安全管理框架解决方案

本文主要是介绍CDH大数据平台集成Apache Ranger安全管理框架解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


一、总体解决方案

    基于apache Ranger开源项目源代码进行二次开发,实现支持CDH集成的Ranger安全管理系统。另外需要在CDH管理界面上配置部分参数。

    本文档经过测试验证的CDH和ranger版本:

CDH版本:6.3.2

Apache Ranger版本:2.0.0

二、ranger插件公共模块agent-common修改

1、配置文件处理

问题描述:

CDH在重启组件服务时为组件服务独立启动进程运行,动态生成运行配置文件目录和配置文件,ranger插件配置文件部署到CDH安装目录无法被组件服务读取到。

解决办法:

基于ranger 源代码二次开发,在agents-common模块org.apache.ranger.plugin.service

.RangerBasePlugin类init()方法内部开始处插入copyConfigFile()方法调用,并定义copyConfigFile()方法,实现复制ranger配置文件到CDH组件服务的运行配置文件目录:

    private void copyConfigFile() {String serviceHome = "CDH_" + this.serviceType.toUpperCase() + "_HOME";if ("CDH_HDFS_HOME".equals(serviceHome)) {serviceHome = "CDH_HADOOP_HOME";}serviceHome = System.getenv(serviceHome);File dir = new File(serviceHome);String userDir = System.getProperty("user.dir");File destDir = new File(userDir);IOFileFilter regexFileFilter = new RegexFileFilter("ranger-.+xml");Collection<File> configFileList = FileUtils.listFiles(dir, regexFileFilter, TrueFileFilter.INSTANCE);for (File rangerConfigFile : configFileList) {try {FileUtils.copyFileToDirectory(rangerConfigFile, destDir);} catch (IOException e) {LOG.error("Copy ranger config file failed.", e);}}}

2、enable-agent.sh配置

问题描述

  • hdfs和yarn插件安装部署后,插件jar包会部署到组件安装目录的share/hadoop/hdfs/lib子目录下,启动hdfs或yarn运行时加载不到这些jar包,会报ClassNotFoundException: Class org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer not found
  • kafka插件安装部署后,启动运行时会从插件jar包所在目录加载ranger插件配置文件,读不到配置文件会报错addResourceIfReadable(ranger-kafka-audit.xml): couldn't find resource file location

解决办法

修改agents-common模块enable-agent.sh脚本文件:

HCOMPONENT_LIB_DIR=${HCOMPONENT_INSTALL_DIR}/share/hadoop/hdfs/lib

修改为:

HCOMPONENT_LIB_DIR=${HCOMPONENT_INSTALL_DIR}
elif [ "${HCOMPONENT_NAME}" = "kafka" ]; thenHCOMPONENT_CONF_DIR=${HCOMPONENT_INSTALL_DIR}/config

修改为:

elif [ "${HCOMPONENT_NAME}" = "kafka" ]; thenHCOMPONENT_CONF_DIR=${PROJ_LIB_DIR}/ranger-kafka-plugin-impl

以上修改需重新打包ranger,然后安装部署各插件。

三、hive插件集成问题

hive插件需安装在所有hiveServer2节点服务器上

1hive环境变量文件修改

解决hive客户端访问时报如下错误的问题: 

Error: Could not open client transport with JDBC Uri: 
jdbc:hive2://****:10000/testdb: Failed to open new session: 
java.lang.IllegalArgumentException: Cannot modify hive.query.redaction.rules at 
runtime. It is not in list of params that are allowed to be modified at runtime 
(state=08S01,code=0)Error: Could not open client transport with JDBC Uri: 
jdbc:hive2://****:10000/testdb: Failed to open new session: 
java.lang.IllegalArgumentException: Cannot modify hive.exec.query.redactor.hooks atruntime. It is not in list of params that are allowed to be modified at runtime 
(state=08S01,code=0)

 手工修改/opt/cloudera/parcels/CDH/lib/hive/conf/目录下的hive环境变量文件hive-env.sh,注释删除export HIVE_OPTS配置行

2hive版本兼容性问题

Apache Ranger 2.0.0版本对应hive版本3.1.0,CDH 6.3.2版本对应hive版本2.1.1,不兼容,hive server启动会报错

解决办法:

把Apache Ranger 1.2.0版本hive插件代码hive-agent拷贝到Apache Ranger 2.0.0版本hive-agent,修改Apache Ranger 2.0.0根目录pom.xml中的hive版本号为2.1.1:

<hive.version>2.1.1</hive.version>

重新编译打包Apache Ranger 2.0.0版本并安装hive插件

四、HDFS插件集成

HDFS插件需安装在所有namenode节点服务器上

参数配置

在CDH管理界面配置HDFS参数,确保dfs.permissions参数已勾选,

编辑“hdfs-site.xml 的 NameNode 高级配置代码段”参数配置,新增配置:

dfs.namenode.inode.attributes.provider.class=org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer

五、YARN插件集成

YARN插件安装在所有ResourceManager节点服务器上

参数配置

在CDH管理界面配置YARN参数,配置“yarn-site.xml ResourceManager 高级配置代码段”,新增参数配置:

yarn.authorization-provider=org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer

六、kafka 插件集成

Kafka插件安装在所有Broker节点服务器上

参数配置

在CDH管理界面配置Kafka参数,配置“kafka.properties Kafka Broker 高级配置代码段”,新增参数配置:

authorizer.class.name=org.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer

七、其它插件的集成待研究和测试

这篇关于CDH大数据平台集成Apache Ranger安全管理框架解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906118

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本