鲲鹏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. JavaFx之使用高版本JDK(二十八)

    JavaFx之使用高版本JDK(二十八) 如何使用高版本的jfx? 根据官网的需要手动引入jfx模块(运行参数:–module-path) 要知道高版本jfx已经集成了丰富的主流功能,例如视频编码,大 ...

  2. 【OpenVINO】 使用 OpenVINO CSharp API 部署 PaddleOCR 项目介绍

    前言:   在之前的项目中,我们已经使用 OpenVINOTM CSharp API 部署 PaddleOCR 全系列模型,但随着PaddleOCRv4版本发布以及OpenVINO CSharp AP ...

  3. 使用MediaDevices接口实现录屏技术

    摘要:本文将介绍如何使用JavaScript的MediaDevices接口实现录屏功能.我们将通过WebRTC技术捕获用户的屏幕或摄像头画面,并将其编码为MP4视频文件. 在线录屏是指在互联网上进行屏 ...

  4. 618狂欢结束,来聊聊华为云GaussDB NoSQL的蓬勃张力

    又到了一年一度的 618大促的时候,随着近十年网上购物的兴起,各大平台在不同的时期推出各种购物促销活动,极大的促进了消费,刺激了市场.同样,在科技领域,为了支撑突然而来的高并发,支持千万人同时在线浏览 ...

  5. 理论+实践,揭秘昇腾CANN算子开发

    摘要: 本文介绍了CANN自定义算子开发的几种开发方式和算子的编译运行流程.然后以开发一个DSL Add算子为例,讲解算子开发的基本流程. 本文分享自华为云社区<昇腾CANN算子开发揭秘> ...

  6. 华为云FusionInsight连续三次获得第一,加速释放数据要素价值

    摘要:近日,IDC发布<中国大数据平台市场研究报告,2021 H1>,华为云FusionInsight智能数据湖已连续三次获得大数据平台市场份额第一. 本文分享自华为云社区<华为云F ...

  7. 顶级加密混淆混淆工具测评:ipagurd

    ​ 顶级加密混淆混淆工具测评:ipagurd 摘要 JavaScript代码安全需求日益增长,因此JavaScript混淆工具的使用变得广泛.本文将对专业.商业JavaScript混淆工具ipagur ...

  8. 企业诊断屋:二手车交易平台 APP 如何用 AB 测试赋能业务

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2023年汽车行业新车市场低靡,由新车降价引发的车辆价格波动很快传导到二手车市场,二手车的交易也受到了冲击,收车验 ...

  9. 火山引擎 DataTester:如何做 A/B 实验的假设检验

    A/B 实验的核心统计学理论是(双样本)假设检验,是用来判断样本与样本.样本与总体的差异是由 抽样误差 引起还是 本质差别 造成的一种统计推断方法. 假设检验,顾名思义,是一种对自己做出的假设进行数据 ...

  10. Flutter如何有效地退出程序

    今天博主来谈一个开发Flutter App的小技巧--怎样有效地退出程序. 这种方法典型的应用场景就是用户许可协议的同意与否.从用户的角度讲,虽然大部分人都会无脑点击"同意",但我 ...