1. 概述

  Apache Ranger是大数据领域的一个集中式安全管理框架,目的是通过制定策略(policies)实现对Hadoop组件的集中式安全管理。用户可以通过Ranger实现对集群中数据的安全访问。

2. Ranger内部组件

  Ranger由三个模块组成:Ranger内部组件、依赖组件、扩展性组件。

2.1 内部组件

  包含的内部组件如下:

  • Ranger Admin 用户管理策略,提供WebUI和RestFul接口
  • Ranger UserSync 用于将Unix系统或LDAP用户/组同步到RangerAdmin
  • Ranger TagSync 同步Atlas中的Tag信息,基于标签的权限管理,当一个用户的请求涉及到多个应用系统中的多个资源的权限时,可以通过只配置这些资源的tag方便快速的授权
  • Ranger KMS 对hadoop KMS的策略管理和密钥管理

  注:Apache atlas 是Hadoop社区为解决Hadoop生态系统的元数据治理问题而产生的开源项目,它为Hadoop集群提供了包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理在内的元数据治理核心能力。  

2.2 依赖组件

  • JDK8 用于运行RangerAdmin、RangerKMS
  • Python2.7 用于Ranger自动化安装
  • Git 用于Ranger编译
  • Maven3.6 用于Ranger编译
  • RDMS 用于存储授权策略,存储Ranger用户/组,存储审核日志
  • Solr(可选) 存储日志
  • Kerberos(可选) 确保所有请求都被认证

2.3 扩展性组件

  HDFSHBASEHIVEYARN、KNOX、STORM、SOLR、KAFKA、NIFI、KYLIN、NIFI-REGISTRY、SQOOP、ATLAS、ELASTICSEARCH、PRESTO、OZONE

2.4 总体架构

  

3. Ranger编译

  Ranger官网源码包版本是1.2.0,不提供二进制安装包,故需要maven编译。目前测试使用的版本为:

ranger版本 1.2.0
hadoop版本 2.7.3
hbase版本  
hive版本   2.1.0         
postgres版本       11
python版本 2.7

3.1 官网下载源码包

# wget http://mirrors.tuna.tsinghua.edu.cn/apache/ranger/1.2.0/apache-ranger-1.2.0.tar.gz

3.2 下载maven

  编译安装需要使用到maven,下载如下:

# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz

  解压,并添加环境变量,同时修改maven的Java堆内存最大值,避免编译内存溢出

# tar -zxvf apache-maven-3.6.-bin.tar.gz

# vim /etc/bashrc
export MAVEN_HOME=/opt/app/apache-maven-3.6.
export PATH=$PATH:$MAVEN_HOME/bin MAVEN_OPTS=-Xmx2048m
export JAVA_HOME MAVEN_HOME MAVEN_OPTS JAVA_BIN PATH CLASSPATH

  修改maven源为阿里源或其他源

# pwd
/opt/app/apache-maven-3.6./conf
# vim settings.xml
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror> <mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror> <mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror> <mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
</mirrors>

3.3 安装git

  编译ranger依赖git,需要安装git

yum -y install git

3.4 安装python2

  编译机器上的python必须为python2,不能是python3,否则编译时会报错

yum -y install python2

3.5 编译Ranger

  首次编译ranger,需要时间比较长,时间主要用于maven下载相应的依赖包,时间快慢取决于机器网络带宽。

# pwd
/opt/app/apache-ranger-1.2.
# mvn clean compile package assembly:assembly install -DskipTests -Drat.skip=true

  编译完成如下:

  编译完成后,在当前目录下的target会生成相应的tar包文件,如下:

3.6 编译Ranger遇到的问题

3.6.1 exec failonerror="true" executable="python

  问题描述:

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (generate-version-annotation) on project ranger-util: An Ant BuildException has occured: exec returned: 1
[ERROR] around Ant part ...<exec failonerror="true" executable="python">... @ 4:48 in /data/apache-ranger-1.0.0/ranger-util/target/antrun/build-main.xml
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (generate-version-annotation) on project ranger-util: An Ant BuildException has occured: exec returned: 1
around Ant part ...<exec failonerror="true" executable="python">... @ 4:48 in /data/apache-ranger-1.0.0/ranger-util/target/antrun/build-main.xml

  如图:

  

  解决方法:这里需要检查是否编译的机器是否安装了git,安装的是否是python2,不能安装python3。

安装git
$ yum -y install git 在shell界面直接运行python,看是python2或python3。python3则需要卸载
$ yum-y remove python3 没有python2则需要安装
$ yum -y install python2

4. Ranger-admin安装部署

  安装ranger-admin的机器可以不在Hadoop集群内部,可以是随便一台。

4.1 准备

4.1.1 检测是否安装python2

# python
Python 2.7. (default, Aug , ::)
[GCC 4.8. (Red Hat 4.8.-)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 如果没有检测到python2,则执行下面的命令
# yum -y install python

4.1.2 postgres数据库安装以及下载驱动包

  请自行百度安装,在postgres安装目录 data下修改pg_hba.conf文件,使postgres可以被远程服务器访问,修改为如下:

# Allow replication connections from localhost, by a user with the
# replication privilege.
#host replication all 127.0.0.1/ md5
#host replication all ::/ md5
host all all 0.0.0.0/ md5

  从maven源库下载,https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.8/

  把postgresql-42.2.8.jar下载,并创建 /usr/share/java/ 目录,最后转移到该目录下

# wget https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.8/postgresql-42.2.8.jar
# mkdir -p /usr/share/java
# mv postgresql-42.2..jar /usr/share/java/

4.2 解压ranger-admin软件包

# pwd
/opt/app/apache-ranger-2.0./target
# tar -zxvf ranger-2.0.-admin.tar.gz

4.3 修改install.properties文件

# pwd
/opt/app/apache-ranger-2.0./target/ranger-2.0.-admin
# vim install.properties

  修改install.properties文件,这里使用的数据库是postgres,不安装solr服务

)数据库配置
DB_FLAVOR=POSTGRES #指明使用数据库类型
SQL_CONNECTOR_JAR=/usr/share/java/postgresql-42.2..jar #数据库连接驱动
db_root_user=postgres #数据库root用户名
db_root_password=postgres #数据库主机
db_host=192.168.1.33: #数据库密码 # 以下三个属性是用于设置ranger数据库的
db_name=ranger #数据库名
db_user=postgres #管理该数据库用户
db_password=postgres #密码 # 不需要保存,为空,否则生成的数据库密码为'_'
cred_keystore_filename= ) 审计日志, 如果没有安装solr,对应的属性值为空即可
audit_store= audit_solr_urls=
audit_solr_user=
audit_solr_password=
audit_solr_zookeepers= )策略管理配置,配置ip和端口,默认即可
policymgr_external_url=http://localhost:6080 ) 配置hadoop集群的core-site.xml文件,把core-site.xml文件拷贝到该目录
hadoop_conf=/etc/hadoop/conf ) rangerAdmin、rangerTagSync、rangerUsersync、keyadmin密码配置。默认为空,可以不配,对应的内部组件该属性也要为空
rangerAdmin_password=
rangerTagsync_password=
rangerUsersync_password=
keyadmin_password=

4.4 初始化ranger-admin

# pwd
/opt/frame-tools/apache-ranger-2.0./target/ranger-2.0.-admin
# ./setup.sh

  初始化结果如下则成功:

  接着,运行set_globals.sh

# ./set_globals.sh
usermod: no changes
[// ::]: [I] Soft linking /etc/ranger/admin/conf to ews/webapp/WEB-INF/classes/conf

4.5 启动ranger-admin

# ranger-admin start
或者
# ./ews/ranger-admin-services.sh start

  Ranger的默认端口是6080,如图,则表明程序正常启动

  查看Ranger Admin Server运行的日志情况,日志路径默认为 ews/log , 软链接到 /var/log/admin ,如下:

  Ranger Admin Server的具体配置文件为 ranger-admin-site.xml ,如下:

  浏览器连接测试:http://192.168.1.10:6080,登录界面用户名和密码为:admin/admin,登录进去界面如下:

5. Ranger-usersync安装部署

5.1 解压ranger-usersync软件包

# pwd
/opt/frame-tools/apache-ranger-2.0./target
# tar -zxvf ranger-2.0.-usersync.tar.gz

5.2 修改install.property文件

# pwd
/opt/app/apache-ranger-2.0./target/ranger-2.0.-usersync
# vim install.properties 配置ranger admin的地址
POLICY_MGR_URL = http://localhost:6080 同步源系统类型
SYNC_SOURCE = unix 同步间隔时间
SYNC_INTERVAL = usersync程序运行的用户和用户组
unix_user=usersync
unix_group=usersync 修改rangerusersync用户的密码。注意,此密码应与Ranger admin中install.properties的rangerusersync_password相同。此处可以为空,同样Ranger admin的也要为空
rangerUsersync_password= 配置hadoop的core-site.xml路径
hadoop_conf=/etc/hadoop/conf 配置usersync的log路径
logdir=logs

5.3 初始化ranger-usersync

# pwd
/opt/app/apache-ranger-2.0./target/ranger-2.0.-usersync
# ./setup.sh

  执行结果:

 

5.4 启动ranger-usersync

# ranger-usersync start

# pwd
/opt/frame-tools/apache-ranger-2.0./target/ranger-2.0.-usersync
# ./ranger-usersync-services.sh start

  验证是否安装成功,如图则成功:

总结

【参考资料】

https://yaooqinn.github.io/spark-authorizer/docs/install_plugin.html

https://github.com/yaooqinn/spark-ranger

https://blog.csdn.net/sudaxhh/article/details/52135184

https://blog.csdn.net/w609392362/article/details/89959445

https://www.cnblogs.com/xiaolang8762400/p/7449489.html

https://help.aliyun.com/document_detail/66411.html

https://www.cnblogs.com/yjt1993/p/11837398.html

https://www.lagou.com/lgeduarticle/7838.html

https://www.jianshu.com/p/d0bf6e77bb8f

https://www.cnblogs.com/taojietaoge/p/10808534.html

https://www.cnblogs.com/jpfss/p/11021948.html Linux下LDAP统一认证解决方案

Ranger安装部署的更多相关文章

  1. Apache Ranger安装部署

    1.概述 Apache Ranger提供了一个集中式的安全管理框架,用户可以通过操作Ranger Admin页面来配置各种策略,从而实现对Hadoop生成组件,比如HDFS.YARN.Hive.HBa ...

  2. Ranger安装部署 - solr安装

    1. 概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方法. ...

  3. Apache Ranger 编译安装部署

    1. 概述 Apache Ranger是大数据领域的一个集中式安全管理框架,目的是通过制定策略(policies)实现对Hadoop组件的集中式安全管理.用户可以通过Ranger实现对集群中数据的安全 ...

  4. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  5. KVM安装部署

    KVM安装部署 公司开始部署KVM,KVM的全称是kernel base virtual machine,对KVM虚拟化技术研究了一段时间, KVM是基于硬件的完全虚拟化,跟vmware.xen.hy ...

  6. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  7. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

  8. C# winform安装部署(转载)

    c# winform 程序打包部署 核心总结: 1.建议在完成的要打包的项目外,另建解决方案建立安装部署项目(而不是在同一个解决方案内新建),在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目 ...

  9. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

随机推荐

  1. Git 查看更改

    当向仓库中添加文件或删除文件后,可能需要查看更改. 查看更改有多种方式. 1.查看状态 # git status 结果 1 2 # 位于分支 master 无文件要提交,干净的工作区 2.查看日志 # ...

  2. html中定义模板

    定义一个html中不解析的模板,有如下三种方法1.使用<xmp>标签 <xmp id="test"> <div>测试</div> & ...

  3. 去除Chrome“请停用以开发者模式运行的扩展程序”提示

    将version.dll放在chrome同级目录,重启浏览器( 79.0.3945.79版本后已失效)                    

  4. Python知识点总结篇(四)

    递归 特性 必须有明确的结束条件: 每进入深一层递归,问题规模比上层应有所减少: 递归效率不高,层次更多会导致栈溢出: def calc(n): print(n) if n // 2 > 0: ...

  5. 下载并使用MNIST数据集

    TensorFlow提供了一个库,可以直接用来自动下载与安装MNIST. MNIST里包含3个数据集:第一个是训练数据集(mnist.train.images),另外两个分别是测试数据集(mnist. ...

  6. Hive学习笔记(三)—— 数据类型

    Hive的基本使用(一)--数据类型 1. Hive的基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2 ...

  7. MOOC C#笔记(一):数据类型

    C#笔记 基础知识 一个C#程序主要包括以下部分: 命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(Sta ...

  8. 英语DYAMAUND钻石DYAMAUND单词

    dyamaund and the English words dyamaund The Vertu of the Dyamaund": Gemstones, Knowledge and Va ...

  9. 结对编程(-java实现)

    一 .Github项目地址:https://github.com/mushan520/Four-fundamental-rules-java.git                           ...

  10. Android笔记(七十四) 详解Intent

    我们最常使用Intent来实现Activity之间的转跳,最近做一个app用到从系统搜索图片的功能,使用到了intent的 setType 方法和 setAction 方法,网上搜索一番,发现实现转跳 ...