首页 > 其他分享 >鲲鹏920上面 Docker 部署 clickhouse 的方式方法

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

时间:2023-11-29 14:32:04浏览次数:35  
标签:-- support clickhouse 920 Docker 鲲鹏 CLICKHOUSE

鲲鹏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了
怀疑国外的很多软件其实使用了更新的文档里面没有描述的特性. 
兼容性验证其实是一个很漫长的过程. 需要仔细进行.



标签:--,support,clickhouse,920,Docker,鲲鹏,CLICKHOUSE
From: https://blog.51cto.com/u_11529070/8616321

相关文章

  • 【Docker】OpenWebRX Plus版本安装
    OpenWebRX是一个国外开源项目,基于Python语言编写,配合SDR设备使用,支持后台解码各种数字信号,将SDR接收软件Web化,通过网络实现多用户远程访问,功能非常强大。目前OpenWebRX版本已经到1.2了,但不知什么原因项目停更了,而后又衍生出一个OpenWebRX+分支,博主近日对这个分支版本做了测试,发现......
  • 六、Dockerfile解析
    课前思考:分别准备好两个已经写好的.net程序与springboot程序,如何让这两个程序在docker中运行呢?1.什么是DockerfileDockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。构造三个步骤1.编写Dockerfile文件2.编译:dockerbuild3.生成容器......
  • Docker部署heimdall
    一、搭建heimdall绿联DX4600为例,首先我们打开Docker管理器,进入镜像管理,然后在镜像仓库中搜索linuxserver/heimdall​,选择latest​版本并下载。​​下载完成后,我们在本地镜像中找到刚刚下载的镜像,点击创建容器,起一个英文名,勾选创建后启动容器,点击下一步。​​在基础设......
  • kafka docker-compose 单节点部署
    启动脚本sed-i-r"s/[0-9]{1,3}(\.[0-9]{1,3}){3}/$(ifconfig$(iprouteshowdefault|head-1|awk'{print$5}')|grep-oP'(?<=inet\s)\d+(\.\d+){3}')/g"docker-compose.ymldocker-composeup-ddocker-compose.ymlversion......
  • Docker部署ArthasTunnel
    1、下载ArthasTunnel的安装包下载地址:下载  2、部署由于官方只提供了JAR包,如果你想通过Docker方式启动的话,可以自行打包Docker镜像,打包使用的Dockerfile脚本如下:#该镜像需要依赖的基础镜像FROMopenjdk:8-jdk-alpine#将当前目录下的jar包复制到docker容器的/目录下A......
  • docker故障:driver failed programming external connectivity on endpoint
    故障现象Errorresponsefromdaemon:driverfailedprogrammingexternalconnectivityonendpointjenkins(ffdc7c9cda72c575d6b045574d1432b256603a3d986a05da319ab7f3af233755):(iptablesfailed:iptables--wait-tnat-ADOCKER-ptcp-d0/0--dport50000-jDN......
  • Docker + supervisor在同一容器中部署zookeeper和kafka
    使用supervisor进程管理工具,在同一个容器中部署zookeeper和kafka目录Dockerfilejdk1.8.0_181.tar.gzkafka_2.12-1.1.0.tgzconf.ddocker-compose.ymlkafka_conf.dconf.d中为supervisor配置文件kafka_conf.d中为kafka配置文件,解压kafka_2.12-1.1.0.tgz中的配置文件,拷贝......
  • docker 拷贝docker中文件,并获取最新
    1、2、#!/bin/bashdate_str=$(date+_%Y_%m_%d_%H_%M_%S.sql.gz)echo'开始备份数据'$date_str#获取容器idmysqlid=`dockerps-aqf"name=mysql57"`#进入mysql容器dockerexec-i${mysqlid}/bin/bash<<'EOF'mysqldump-hlocalhost-uroot......
  • Dockerfile使用
    什么是Dockerfile?Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。命令注意:Dockerfile的指令每执行一次都会在docker上新建一层。所以过多无意义的层,会造成镜像膨胀过大。可以放在一起的命令尽量放在一起。FROMFROMnginx#FRO......
  • docker离线一键安装脚本
    下载安装文件https://download.docker.com/linux/static/stable/x86_64/https://github.com/docker/compose/releases本例安装文件下载地址https://download.docker.com/linux/static/stable/x86_64/docker-23.0.6.tgzhttps://github.com/docker/compose/releases/download/v......