鲲鹏920上面 Docker 部署 clickhouse 的方式方法


背景

最近有一套鲲鹏920的测试环境, 研发同事想纯Dcoker部署一套环境.
其中就包括了 Clickhouse
之前发现Clickhouse 23.x的版本部署二进制会有问题
但是没有深究, 今天发现docker run latest时也报错,所以想研究一下. entrypoint.sh: line 40: 24 Illegal instruction (core dumped) clickhouse extract-from-config --config-file "$CLICKHOUSE_CONFIG" --key='storage_configuration.disks.*.path'
/entrypoint.sh: line 41: 26 Illegal instruction (core dumped) clickhouse extract-from-config --config-file "$CLICKHOUSE_CONFIG" --key='storage_configuration.disks.*.metadata_path'

最终脚本

mkdir -p /data/clickhouse/data
docker run \
-p 8124:8123 \
-p 9001:9000 \
--name ckserver \
--ulimit nofile=262144:262144 \
-e CLICKHOUSE_DB=default \
-e CLICKHOUSE_USER=root \
-e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 \
-e TZ=Asia/Shanghai \
-e CLICKHOUSE_PASSWORD=xxxx \
--restart=always \
-v /data/clickhouse/data:/var/lib/clickhouse \
-d clickhouse/clickhouse-server:23.3.9.55

解决过程

一开始看到错误, 以为是缺少配置
但是一番google/baidu 发现根本无法解决.
所以感觉比较奇怪, 直接上hub.docker.com 查看官方镜像的说法.
https://hub.docker.com/r/clickhouse/clickhouse-server Compatibility
The amd64 image requires support for SSE3 instructions. Virtually all x86 CPUs after 2005 support SSE3.
The arm64 image requires support for the ARMv8.2-A architecture. Most ARM CPUs after 2017 support ARMv8.2-A. A notable exception is Raspberry Pi 4 from 2019 whose CPU only supports ARMv8.0-A. 这里立马就进入了困惑. 之前学习过 鲲鹏920 其实就是ARMv8.2架构的服务器
不明白为啥最新版的不支持.
https://www.hisilicon.com/cn/products/kunpeng/huawei-kunpeng/huawei-kunpeng-920

鲲鹏920 的关键特性

关键特性
Architecture • ARM v8.2
Core • up to 64
Typical Frequency • 2.6 GHz / 3.0 GHz
Memory • 8 DDR4 Channels
Coherent Interconnect • 2S&4S
I O • PCIe 4.0, CCIX, 100G, SAS/SATA 3.0
Max Power • 180W
Process • 7nm

问题猜测

怀疑clickhouse 使用了更新版本的ARM特性, 但是这个特性在鲲鹏920里面是被阉割的
导致最新版本的 clickhouse运行会出现 core dump的错误. 当初在进行TiDB的 海光服务器安装时遇到过类似的问题.
当时的解决方法是 修改海光虚拟机的CPU指令模式为直通来解决
这次鲲鹏的物理机和虚拟都存在问题
所以使用二进制安装时一样的 降级进行验证.

验证结果

clickhouse 23.5 是可以在鲲鹏920上面运行的
但是
clickhouse 23.6 就无法在鲲鹏920上面运行. 然后查看 clickhouse的官方发布历史
发现LTS版本为:
https://packages.clickhouse.com/rpm/lts/ 截止 2023.11.4 左右
最新的可以使用的版本是 23.3.9.55
发布时间是 2023.8.21 左右 验证时可以运行的.

结论

可以使用chat2db的工具进行连接测试

可能部分官方文档并不是很完整
鲲鹏920 自2019年发布以来 架构其实一直没有升级
已经是五年前的架构了. 最新的都已经是ARMv9了
怀疑国外的很多软件其实使用了更新的文档里面没有描述的特性.
兼容性验证其实是一个很漫长的过程. 需要仔细进行.

鲲鹏920上面 Docker 部署 clickhouse 的方式方法的更多相关文章

  1. 基于CentOS7.x Linux操作系统,从0开始构建一套Docker虚拟化平台,使用二进制Tar包方式,部署的步骤和方法如下:

    #配置centos7的yum源#建议阿里源#链接:https://yq.aliyun.com/articles/525282?type=2#从Docker官网下载软件包: ls -l docker-1 ...

  2. 记一次ARM服务器(鲲鹏920)的PXE批量装机遇到的坑

    由于近期项目需要,在对一批华为鲲鹏920的ARM服务器(型号为天宫TG225 B1)进行批量装机的过程中,遇到了各种各样千奇百怪的bug(换个高情商的说法就是遇到了各种各样和x86服务器不一样的地方) ...

  3. 程序开发使用docker部署

    我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...

  4. Docker部署SDN环境

    2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...

  5. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  6. Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈

    版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...

  7. NET Core Docker部署

    NET Core Docker部署 前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行 ...

  8. centos7使用docker部署gitlab-ce-zh应用

    1.国内拉取镜像比较慢,所以这里采用DaoCloud源. # curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http ...

  9. 使用Docker部署Spring boot项目

    Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...

  10. 如何使用Docker部署一个Go Web应用程序

    熟悉Docker如何提升你在构建.测试并部署Go Web应用程序的方式,并且理解如何使用Semaphore来持续部署. 简介 大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版 ...

随机推荐

  1. Centos7——防火墙(Firewall)命令

    centos防火墙根据系统大致有2种,一种是centos6时代的iptables:一种是centos7时代的firewalld: CentOS 7中防火墙是一个非常的强大的功能,在CentOS 6.5 ...

  2. 文心一言 VS 讯飞星火 VS chatgpt (172)-- 算法导论13.3 1题

    一.用go语言,在 RB-INSERT 的第 16 行,将新插人的结点 z 着为红色.注意到,如果将 z 着为黑色,则红黑树的性质4就不会被破坏.那么为什么不选择将 z 着为黑色呢? 文心一言: 在红 ...

  3. 建议收藏备查!MySQL 常见错误代码说明

    先给大家看几个实例的错误分析与解决方案. 1.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data ...

  4. MySQL的事务(看看也许有帮助呢)

    MySQL的事务 一.事务的概念 在MySQL中,只有InnoDB存储引擎才支持事务. 事务的处理用来维护数据库数据的完整性,保证同一个事务里的一批SQL语句,要么全部执行,要么全部不执行. 事务用来 ...

  5. JPA复杂查询时间查询分页排序

    JPA复杂查询时间查询分页排序 JPA复杂查询时间查询分页排序,工作上用到,因为项目是jpa,记录.代码囊括了:查询条件+时间范围+分页+排序 其实我也不太想用jpa,但是他也有优点,操作可以兼容多种 ...

  6. Shiro 的基本使用

    简介 Apache Shiro 是一个强大的.灵活的开源安全框架,可以干净地处理验证.授权.企业会话管理和加密等功能 相关特性 Apache Shiro 具有的主要特性如下图所示: 主要关注的地方在于 ...

  7. Go语言实现GoF设计模式:备忘录模式的实践探索

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:备忘录模式>,作者:元闰子. 简介 相对于代理模式.工厂模式等设计模式,备忘录模式(Memento)在我们日常开发中出镜率并不 ...

  8. 大模型高效开发的秘密武器:大模型低参微调套件MindSpore PET

    摘要:本文介绍大模型低参微调套件--MindSpore PET. 本文分享自华为云社区<大模型高效开发的秘密武器--大模型低参微调套件MindSpore PET篇>,作者:yd_28087 ...

  9. AI开发实践丨客流分析之未佩戴口罩识别

    摘要:通过本教程,我们可以学习客流统计应用的扩展--过线客流统计+口罩佩戴识别,可用于商超.写字楼入口安检. 本文分享自华为云社区<客流分析之未佩戴口罩识别>,作者: HiLens_fei ...

  10. WebKit三件套(1):WebKit之WebCore篇

    导语: Chrome浏览器的代码量其实是非常庞大的,要想对其有深入的理解,仅仅编译编译调试调试,是很难深入下去的.让我们还是从其主要部分如多进程管理通信.WebKit.V8.Skia.WinHttp. ...