presto国产化适配-aarch64
适配完成完整trino包,源码版本为367,适配成功后RPM包下载地址为:https://download.csdn.net/download/lp895876294/70870492
trion-hadoop-hive单独的jar包下载地址为:https://download.csdn.net/download/lp895876294/70872330
国产化环境
- 飞腾芯片
- 涉密、专用版银河麒麟操作系统。系统安全防护相对于一般国产化系统更强。
已装大数据软件
- JDK-1.8-aarch64
- Hadoop:3.1.3
- Hive:3.1.2
Presto适配要求
- 在国产化操作系统中正常运行presto服务。
- 使用presto对接Hive,支持即席查询功能。
技术调研
- presto-0.267软件本身不支持aarch64架构,运行报错为:“Presto requires amd64 or ppc64le or aarch64 on Linux”。虽然可以通过编译源码解决此适配问题,但仅限于一般的国产化操作系统,对于涉密专用版的国产化操作系统依旧无法正常运行。参考地址:Presto 0.244.1 aarch64编译_刘大宁的博客-CSDN博客_presto 鲲鹏
- presto-0.267软件的hive插件,仅支持hive-hadoop2,不支持hive3。
- presto另一版本分支trino-367版本,官宣支持hive2和hive3,并针对hive的插件支持国产化操作系统。
因此,presto软件的国产化适配方案,选择trion-367版本。
适配方案
环境准备
- 下载trion-367分支源码,以及trino-hadoop-apache-3.2.0-16的源码。
- 配置trion编译环境,jdk-11.0.18-aarch64、maven-3.8.4。
修改trino-hadoop-apache-3.2.0源码
- 在/src/main/java/io/trino/hadoop/HadoopNative.java中,调整.so文件的加载策略,优先从临时目录中加载指定的文件,如果无指定文件,还是按照原有方式加载。如下。
private static void loadLibrary(String name)throws IOException{File file = null ;// 使用指定的so文件String targetPath = System.getProperty("java.io.tmpdir") ;String soFilePath = targetPath + "/" + name +".so" ;File soFile = new File(soFilePath) ;if(soFile.exists()){file = soFile ;}else{String libraryPath = getLibraryPath(name);URL url = HadoopNative.class.getResource(libraryPath);if (url == null) {throw new RuntimeException("library not found: " + libraryPath);}file = File.createTempFile(name, null);file.deleteOnExit();try (InputStream in = url.openStream()) {Files.copy(in, file.toPath(), StandardCopyOption.REPLACE_EXISTING);}}System.load(file.getAbsolutePath());}
- 将/src/main/resources/nativelib/Linux-aarch64中的so文件单独拷贝出,并分别命名为:hadoop.so、snappy.so和zstd.so,留作trion打包部署后备用。
- 编译trion-hadoop-apache-3.2.0源码,在target文件夹中生成hadoop-apache-3.2.0-16.jar。
编译trino源码
- 执行maven命令,编译trino源码,并生成编译后的trion目录如下。
- 将trion-hadoop-apache-3.2.0源码中的hadoop.so、snappy.so和zstd.so,拷贝到nativelib中。
- 将jdk-11.0.18-aarch64解压后的内容拷贝到jdk中。解决jdk8和jdk11的兼容问题;同时,是trion可以不依赖于操作系统已有jdk独立运行。
- 修改bin/launcher代码,指定使用jdk路径。
- 修改etc/jvm.config,添加运行时参数信息:-Djava.io.tempdir=/data/trino/nativelib,指定.so文件优先从此目录中直接加载已有的so文件。解决的错误为:/tmp/hadoop12393847837.tmp,无法从共享目标中映射段。参考如下。
- 按照涉密、专用版国产化操作系统安装部署要求,将trion打包为trino.rpm包,参考命令为
fpm -s dir -a aarch64 -t rpm -n trino -v 3.6.7 -f -p //data/arm64/target/trino /data/trino
数据验证
分别在千万级表中执行普通查询、聚合查询和关联查询验证,各SQL均执行通过,参考如下。
presto国产化适配-aarch64相关推荐
- 云栖大会开源重磅升级!PolarDB-X v2.2: 企业级和国产化适配
2022 年云栖大会上,PolarDB-X 发布 2.2.0 版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产化适配,共包括八大核心特性,全面提升 PolarDB-X ...
- 一个关于国产化适配 的PPT文案
前一阵,对外做了一个直播,主题是关于信创国产化,由于本身就为公开对外直播,无保密相关问题,因此,当时的PPT文案在此公开,供大家参考.由于初次审核以有广告嫌疑为理由拒绝,这里我将公司名称统一替换成了X ...
- 融云国产化适配排坑指南
超链接实验室,是融云策划推出的 IT 系列直播课,携手行业专家,一起聊聊 IT 国产化.协同办公通信.通信中台.企业数字化的那些事儿.关注[融云 RongCloud],了解协同办公平台更多干货. 融云 ...
- 软件国产化适配的研发计划
软件国产化适配的研发计划包括以下几个步骤: 1. 确定目标软件:首先需要确定需要进行国产化适配的目标软件,这可能是一个商业软件.操作系统或其他应用程序.需要对目标软件进行深入的分析和了解,以便制定适当 ...
- 国产化适配升级!云盒子企业云盘与麒麟操作系统完成互认
近日,云盒子文档云V6.0在通过UOS统信.鲲鹏920.东方通.人大金仓.银河麒麟V4等国产化产品兼容性互认的基础上,进一步获得麒麟软件NeoCertify证书,文档云V6.0与基于飞腾.鲲鹏国产化C ...
- 国产化适配之人大金仓数据库(三)项目适配
本文是对使用springboot的项目适配进行配置.另外由于使用了额外的框架进行二次开发,所以数据库的配置文件写在了nacos上面. 适配前准备 1.找到数据库链接的jar包,jar包在数据库所在的目 ...
- 国产化适配之人大金仓数据库(一)安装启动测试
本文章主要介绍金仓数据的安装.启动.数据库连接测试. 前言 虽然主流数据库用的人多,但是在某些场合和环境必须要用国产的东西,包括数据库和中间件等,如果系统在开发之初用的是国外主流的东西,那么在使用国产 ...
- 国产化适配(身份证读卡器,条码枪,扫描仪,ca证书,在线文档编辑器)
操作系统:国产麒麟系统 浏览器:火狐Firefox 51.0b2 (32 位) 详细内容不变透露,详情请留言.
- 国产化适配之人大金仓数据库(二)数据迁移
本文介绍金仓数据库windows客户端自带的可视化界面数据迁移工具来迁移mysql的数据到金仓数据库. KingbaseDTS 数据库迁移工具 迁移前准备 因为不能使用默认的system用户,所以需要 ...
最新文章
- 利用VS+MFC+Opencv显示图像和视频所需添加类(CvvImage.h和CvvImage.cpp的源码)。
- 2011-11-27
- 技术图文:如何通过 LINQ 查找集合中的重复数据?
- linux如何给用户加sudo权限,如何在Linux环境为用户添加sudo权限
- WCF基础知识问与答
- 域名查询精灵V1.0 我写的软件,大家多多提建议
- css3学习 理论之渐变
- OncePerRequestFilter-源码解析
- 【网络安全】红蓝攻防:shellcode的分析
- .NET 6新特性试用 | 常量内插字符串
- opencv 膨胀_【3】OpenCV图像处理模块(5)更多的形态学变换(开、闭、形态梯度、顶帽、黑帽)...
- 如何在ASP.NET Core中上传文档
- 南昌项目中镜像系统时遇到的问题
- HTML基础 --- HTML基础
- 程序员教程第一章第二节
- 斐讯k3 搭建php环境,斐讯K3刷机教程官改V2.1D或者其它版本教程
- JavaWeb实现记住密码功能(使用Cookie)
- 【c语言大作业】c语言编写贪吃蛇
- T检验、卡方检验、F检验
- 信创操作系统--统信UOS桌面版(使用Systemd管理系统服务)