前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ranger 2.3.0 从源码编译到搭配 MySQL 8.0 的踩坑

ranger 2.3.0 从源码编译到搭配 MySQL 8.0 的踩坑

原创
作者头像
ge3m0r
发布2024-11-15 22:56:12
发布2024-11-15 22:56:12
23900
代码可运行
举报
运行总次数:0
代码可运行

因为最近信创需要, 因此需要在 arm 环境中搭建 ranger 服务,并且搭配 MySQL 8.0 , 从编译到初步完成搭建一共花费了接近两天的时间,期间遇到了不少问题,我觉得可以说一下,下边就是一个基本完整的搭建过程,会省去一部分内容.

ranger 源码编译

首先就是下载源码,源码一般都在 apache 的官网下载就行.

代码语言:java
复制
wget https://archive.apache.org/dist/ranger/2.3.0/apache-ranger-2.3.0.tar.gz

下载完源码直接解压进入根目录即可.

然后就是配置环境 JDK 1.8 就可以, 编译需要 maven 需要保证大于 3.6.2, MySQL 8.0.x 即可,关于 MySQL 的初始化, 创建 ranger 数据库,配置用户密码等就暂时省略.

配置 maven 仓库

由于编译后的代码是要在 arm 平台上运行,因此这里不能简单配置,要保证拉取的仓库可以在 arm 平台上运行. 因此一般配置华为的鲲鹏仓库,和 maven 镜像仓库, 鲲鹏仓库负责拉取 arm 相关 jar 包, maven 仓库负责其他的 jar 包依赖.

首先就是 maven 仓库配置, 在 ${MAVEN_HOME}/conf/settings.xml 加上 mirrors标签加入

代码语言:java
复制
<mirror>
      <id>kunpeng</id>
      <mirrorOf>kunpeng</mirrorOf>
      <name>kunpeng</name>
      <url>https://mirrors.huaweicloud.com/kunpeng/maven/</url>
    </mirror>
    <mirror>
      <id>huaweicloud</id>
      <mirrorOf>huaweicloud</mirrorOf>
      <name>huaweicloud</name>
      <url>https://mirrors.huaweicloud.com/repository/maven/</url>
      <blocked>false</blocked>
     </mirror>

其他删除即可.

另外因为项目的 pom.xml 中配置了仓库,所以可以讲仓库改成上述两个, 插件仓库配置仓华为的 maven 仓库.

然后编译

代码语言:java
复制
mvn -Dskip.Tests=true -Drat.skip=true clean compile package install

问题

在编译过程中总共有 64 个项目,其中第 26 个 solr security plugins 总是编译不过去,报错如下:

代码语言:java
复制
ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project ranger-solr-plugin: Compilation failure -> [Help 1]

找了各种方法,更换 jdk , 更改 maven-compiler-plugin 的配置等等,都不管用.后来无意间参照了一个 CSDN 上的文章

最后更改如下:

代码语言:java
复制
<!-- 修改前 -->
		<solr.version>8.6.3</solr.version>
<!-- 修改后 -->
        <solr.version>8.7.0</solr.version>

之后编译的很顺畅.

搭配 MySQL 8.0

ranger 2.3.0一般默认搭配 Mysql 5.x, 所以在安装 admin 的时候报了很多错误.

配置

ranger admin 配置在 install.properties 的文件中,其中默认配置如下

代码语言:java
复制
audit_store=solr

其他配置安装之前安装的内容正确配置即可,这个选项如果没有搭建 solr 服务,需要注释掉或者讲 solr 去掉,这样安装就不会报错.

MySQL8.0 区别

Mysql 8.0 与 5.0 相比在一些校验上更加严格,最简单的一个区别,如果我们希望用密码登录 MySQL ,那么 jdbc的 url 里边参数会有所不同

代码语言:java
复制
5.0
jdbc:mysql://域名/数据库?useSSL=false
 8.0
 jdbc:mysql://域名/数据库?useSSL=false&allowPublicKeyRetrieval=true

另外就是两者使用驱动配置不同

代码语言:java
复制
5.0
com.mysql.jdbc.driver
8.0
com.mysql.cj.jdbc.dirver

不过这里有影响的主要是第一个,因此需要配置 db_setup.py 在 852 行左右有这样的代码

代码语言:python
代码运行次数:0
运行
复制
<!--修改前-->
if "useSSL" not in db_name:
    db_ssl_param="?useSSL=false"
self.JAVA_BIN = self.JAVA_BIN.strip("'")

<!--修改后-->
if "useSSL" not in db_name:
    db_ssl_param="?useSSL=false&allowPublicKeyRetrieval=true"
self.JAVA_BIN = self.JAVA_BIN.strip("'")

此外在运行过程中还有错误,需要修改 152 行左右, 添加了 decode('utf-8')

代码语言:python
代码运行次数:0
运行
复制
<!--修改前-->
for line in proc.stdout:
    (key, _, value) = line.partition("=")
    os.environ[key] = value.rstrip()
proc.communicate()

<!--修改后-->
for line in proc.stdout:
    (key, _, value) = line.decode('utf-8').partition("=")
    os.environ[key] = value.rstrip()
proc.communicate()

第三点不同

Mysql 8.0 添加了 text blob的字段,因此对于一张表使用 varchar 超过 65535 就必须将大的 varchar 修改成 text 或者 blob 才能通过,因此在安装脚本导入 sql 创建表的时候会报错 在 ${root.path}/target/ranger-2.3.0-admin/db/mysql/optimized/current 下有一个 ranger_core_db_mysql.sql , 这个 sql 没有办法导入,需要讲 varchar 改成 text

运行如下命令即可

代码语言:shell
复制
sed -i 's/varchar(4000)/text' ranger_core_db_mysql.sql

之后即可安装 启动

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ranger 源码编译
    • 配置 maven 仓库
    • 问题
  • 搭配 MySQL 8.0
  • 配置
    • MySQL8.0 区别
    • 第三点不同
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档