鲲鹏服务器的运维真是累人,以前普通的应用安装在鲲鹏上要费更多的时间和精力。为了支持华为的芯片,以及熟悉下不同架构的linux系统,就当回忍者。
安装环境:
CentOs 7.9 服务器CPU内核版本 : 4.18.0-305.10.2.el7.aarch64 Shell: Zsh 5.0.2 (aarch64-redhat-linux-gnu) 什么是ClickHouse
ClickHouse是一个由俄罗斯最大的搜索公司Yandex开源的列式数据库(DBMS),主要用于在线分析处理查询(OLAP),于2016年开源,采用C++开发。凭借优秀的性能,市场反应非常热烈。
相对行式数据库,像Mysql、Oracle、SqlServer等都是行式存储,是把同一行的数据放到相邻同一数据块种,而列式存储是把同一列的数据放到相邻同一数据块种,这样在进行计算类查询时,可以大大减少IO消耗,返回结果更快,采用列式存储后在进行数据记录写入的时候会麻烦一些。 从2016年开源至今5年多,截止目前为止,国内不少大厂已经纷纷使用。
至今年12月,字节跳动内部的 ClickHouse 节点总数超过 15000 个,管理总数据量超过 600PB,最大的集群规模在 2400 余个节点。 腾讯内部用ClickHouse做游戏数据分析,并且为之建立了一整套监控运维体系。 携程内部从2018年7月份开始接入试用,目前80%的业务都跑在ClickHouse上。每天数据增量十多亿,近百万次查询请求。 快手内部也在使用ClickHouse,存储总量大约10PB, 每天新增200TB, 90%查询小于3S。 安装aarch64架构的docker 已经安装好docker运行环境的请忽略这步。
1. 下载docker官方提供的aarch64的二进制包: 1 wget -c https://download.docker.com/linux/static/stable/aarch64/docker-19.03.6.tgz
其它版本: https://download.docker.com/linux/static/stable/aarch64/
2. 解压然后将docker目录下文件拷贝到/usr/bin里: 1 2 tar -xvf docker-19.03.06.tgz mv docker/* /usr/bin/
3. 新增系统服务文件docker.service和docker.socket ** 添加docker.service文件并编辑**
1 vi /lib/systemd/system/docker.service
添加以下内容并保存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target docker.socket firewalld.service Wants=network-online.target Requires=docker.socket [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd -H fd:// ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=1048576 # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. # TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=always RestartSec=5 StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
添加docker.socket文件并编辑
1 vi /lib/systemd/system/docker.socket
添加以下内容并保存:
1 2 3 4 5 6 7 8 9 10 11 12 [Unit] Description=Docker Socket for the API PartOf=docker.service [Socket] ListenStream=/var/run/docker.sock SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target
4. 新建docker用户及组 1 2 groupadd docker useradd docker -g docker
5. 启动docker服务 1 systemctl daemon-reload && systemctl start docker
安装clickhouse的docker服务 因为官方提供的docker镜像不支持aarch64架构的服务器系统,所以只好从库里找了支持arm64架构的镜像。
拉取最新版本镜像:
1 docker pull altinity/clickhouse-server:21.8.12.1.testingarm
运行容器,运行前确保clickhouse默认要用的几个端口是否被其他进程占用。可以用命令查看,比如netstat -anput|grep 9000 。如果被其他应用占用了端口,虽然可以配置或者docker映射到其他端口,但是方便工具查看,尽量保持默认端口不变。
1 2 3 4 docker run --rm -d --name=clickhouse-server \ --ulimit nofile=262144:262144 \ -p 8123:8123 -p 9009:9009 -p 9000:9000 \ altinity/clickhouse-server:21.8.12.1.testingarm
创建clickhouse需要的目录并更改权限
1 2 3 4 5 6 7 mkdir -p /app/cloud/clickhouse/data mkdir -p /app/cloud/clickhouse/conf mkdir -p /app/cloud/clickhouse/log chmod -R 777 /app/cloud/clickhouse/data chmod -R 777 /app/cloud/clickhouse/conf chmod -R 777 /app/cloud/clickhouse/log
复制上面临时容器内配置文件到宿主机
1 2 docker cp clickhouse-server:/etc/clickhouse-server/config.xml /app/cloud/clickhouse/conf/config.xml docker cp clickhouse-server:/etc/clickhouse-server/users.xml /app/cloud/clickhouse/conf/users.xml
停止临时容器
docker stop clickhouse-server
创建default账号随机密码
1 PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
会输出明码和SHA256密码,比如:
1 2 eZtC73on e2e2287f3c0af0fecc1d0b4e7973ff18fdd129ab104a25eab4ade259e314e142
当然你可以用简单密码123456代替上面命令里的“$PASSWORD”
修改用户配置文件
1 2 修改 /app/cloud/clickhouse/conf/users.xml 把default账号设为只读权限,并设置密码 yandex-->users-->default-->profile 节点设为 readonly 注释掉 yandex-->users-->default-->password 节点 新增 yandex-->users-->default-->password_sha256_hex 节点,填入生成的密码,如图所示。
修改连接配置文件来支持远程访问
1 2 修改 /app/cloud/clickhouse/conf/config.xml 把注释掉的 <listen_host>::</listen_host> 取消注释。
重新创建容器
1 2 3 4 5 6 7 docker run -d --name=clickhouse-server \ -p 8123:8123 -p 9009:9009 -p 9000:9000 \ --ulimit nofile=262144:262144 \ -v /app/cloud/clickhouse/data:/var/lib/clickhouse:rw \ -v /app/cloud/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \ -v /app/cloud/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \ -v /app/cloud/clickhouse/log:/var/log/clickhouse-server:rw altinity/clickhouse-server:21.8.12.1.testingarm
至此大功告成;更多配置可以查看clickhouse的官方文档。
部分参考链接: https://blog.csdn.net/jianzhang11/article/details/105445855
clickhouse官方中文文档: https://clickhouse.com/docs/zh/