鲲鹏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. 用Roslyn玩转代码之一: 解析与执行字符串表达式

      最近框架中的可视化界面设计需要使用到表达式引擎(解析代码字符串并动态执行),之前旧框架的实现是将表达式字符串解析为语法树后解释执行该表达式,本文介绍如何使用Roslyn解析表达式字符串,并直接转换 ...

  2. 2023年资深C#开发者的思考

    2023年转眼间就这样过掉了,作为一名资深C#的开发员人员,年龄也大了1岁,从最早接触C#开始,算下来已经超过15年以上了,随着工作经验的不断增加,物价不断的飞涨以及家庭支出的不断上涨,工作1份工资已 ...

  3. 解读clickhouse存算分离在华为云实践

    摘要:本文是我们对clickhouse做了最简单的支持obs的适配改造. 本文分享自华为云社区<clickhouse存算分离在华为云实践>,作者: he lifu. clickhouse是 ...

  4. ​  appuploader使用教程

    ​ appuploader使用教程 转载:appuploader使用教程 目录 问题解决秘籍 登录失败 don't have access,提示没权限或同意协议 上传后在app管理中心找不到版本提交 ...

  5. LAS Spark+云原生:数据分析全新解决方案

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着数据规模的迅速增长和数据处理需求的不断演进,云原生架构和湖仓分析成为了现代数据处理的重要趋势.在这个数字化时代 ...

  6. Solon Web 开发:三、一个简单的 Web 模板项目(或示例)

    演示 web 程序的常用能力: 控制器.请求参数.参数校验.跳转 过滤器.全局异常处理 静态文件 动态模板 动态模板公共变量及控制器基类 日志 Json 渲染格式控制 模板下载: 打包成 jar ,可 ...

  7. H-ui JQuery 给单选按纽赋值不生效

    H-ui JQuery 给单选按纽赋值不生效 $("#sex-1").attr('checked',true) 原因,iradio-blue 样式的原因 把下面代码注释掉就可以了 ...

  8. PPT 图片8大操作技巧

    如何实现图片的批量导入 插入相册 图片批量导出 7z 直接解压 修改扩展名 -> 解压 PPT 抠图 设备透明色 删除背景色 二次曝光效果 低版本 office 通过,形状来实现 图片融入背景 ...

  9. Jenkins Pipeline 流水线 - 使用代理节点,Remote SSH 对 K8S 进行升级

    Jenkins Pipeline 流水线 - K8S kubectl 升级 使用代理节点 Remote SSH 远程执行命令进行升级 Remote SSH 方式 安装插件 SSH Pipeline S ...

  10. Jenkins Blue Ocean

    介绍 Blue Ocean 是 pipeline 的可视化UI.同时兼容经典的自由模式的 job.Jenkins Pipeline 从头开始设计,但仍与自由式作业兼容,Blue Ocean 减少了经典 ...