适配完成完整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相关推荐

  1. 云栖大会开源重磅升级!PolarDB-X v2.2: 企业级和国产化适配

    2022 年云栖大会上,PolarDB-X 发布 2.2.0 版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产化适配,共包括八大核心特性,全面提升 PolarDB-X ...

  2. 一个关于国产化适配 的PPT文案

    前一阵,对外做了一个直播,主题是关于信创国产化,由于本身就为公开对外直播,无保密相关问题,因此,当时的PPT文案在此公开,供大家参考.由于初次审核以有广告嫌疑为理由拒绝,这里我将公司名称统一替换成了X ...

  3. 融云国产化适配排坑指南

    超链接实验室,是融云策划推出的 IT 系列直播课,携手行业专家,一起聊聊 IT 国产化.协同办公通信.通信中台.企业数字化的那些事儿.关注[融云 RongCloud],了解协同办公平台更多干货. 融云 ...

  4. 软件国产化适配的研发计划

    软件国产化适配的研发计划包括以下几个步骤: 1. 确定目标软件:首先需要确定需要进行国产化适配的目标软件,这可能是一个商业软件.操作系统或其他应用程序.需要对目标软件进行深入的分析和了解,以便制定适当 ...

  5. 国产化适配升级!云盒子企业云盘与麒麟操作系统完成互认

    近日,云盒子文档云V6.0在通过UOS统信.鲲鹏920.东方通.人大金仓.银河麒麟V4等国产化产品兼容性互认的基础上,进一步获得麒麟软件NeoCertify证书,文档云V6.0与基于飞腾.鲲鹏国产化C ...

  6. 国产化适配之人大金仓数据库(三)项目适配

    本文是对使用springboot的项目适配进行配置.另外由于使用了额外的框架进行二次开发,所以数据库的配置文件写在了nacos上面. 适配前准备 1.找到数据库链接的jar包,jar包在数据库所在的目 ...

  7. 国产化适配之人大金仓数据库(一)安装启动测试

    本文章主要介绍金仓数据的安装.启动.数据库连接测试. 前言 虽然主流数据库用的人多,但是在某些场合和环境必须要用国产的东西,包括数据库和中间件等,如果系统在开发之初用的是国外主流的东西,那么在使用国产 ...

  8. 国产化适配(身份证读卡器,条码枪,扫描仪,ca证书,在线文档编辑器)

    操作系统:国产麒麟系统 浏览器:火狐Firefox 51.0b2 (32 位) 详细内容不变透露,详情请留言.

  9. 国产化适配之人大金仓数据库(二)数据迁移

    本文介绍金仓数据库windows客户端自带的可视化界面数据迁移工具来迁移mysql的数据到金仓数据库. KingbaseDTS 数据库迁移工具 迁移前准备 因为不能使用默认的system用户,所以需要 ...

最新文章

  1. 利用VS+MFC+Opencv显示图像和视频所需添加类(CvvImage.h和CvvImage.cpp的源码)。
  2. 2011-11-27
  3. 技术图文:如何通过 LINQ 查找集合中的重复数据?
  4. linux如何给用户加sudo权限,如何在Linux环境为用户添加sudo权限
  5. WCF基础知识问与答
  6. 域名查询精灵V1.0 我写的软件,大家多多提建议
  7. css3学习 理论之渐变
  8. OncePerRequestFilter-源码解析
  9. 【网络安全】红蓝攻防:shellcode的分析
  10. .NET 6新特性试用 | 常量内插字符串
  11. opencv 膨胀_【3】OpenCV图像处理模块(5)更多的形态学变换(开、闭、形态梯度、顶帽、黑帽)...
  12. 如何在ASP.NET Core中上传文档
  13. 南昌项目中镜像系统时遇到的问题
  14. HTML基础 --- HTML基础
  15. 程序员教程第一章第二节
  16. 斐讯k3 搭建php环境,斐讯K3刷机教程官改V2.1D或者其它版本教程
  17. JavaWeb实现记住密码功能(使用Cookie)
  18. 【c语言大作业】c语言编写贪吃蛇
  19. T检验、卡方检验、F检验
  20. 信创操作系统--统信UOS桌面版(使用Systemd管理系统服务)

热门文章

  1. pb 调用虹软_虹软SDK人脸识别使用遇到的一些坑
  2. 简约插件Plug-in for simple
  3. 2023.03.29
  4. 【产品】查询产品迭代历史的途径
  5. 如何用开源系统weiit-saas构建数字化零售
  6. 电阻参数_电阻器的参数与标识(五)
  7. 矽力杰SY6912AFCC 封装SOP-8/SO8E 降压锂离子电池充电器IC电源管路IC
  8. 《大规模元搜索引擎技(1)》一导读
  9. redis常用查询操作
  10. CMS 内容管理系统