Docker中安装ClickHouse

下文使用CH代替ClickHouse的称呼。

单机版本

docker run -d \
--name clickhouse-server \
-p 9000:9000 \
-p 8123:8123 \
-p 9009:9009 \
--ulimit nofile=262144:262144 \
yandex/clickhouse-server

分布式集群版本

分布式集群结构图

avatar

说明:

节点1和节点3为备份数据

节点2和节点4为备份数据

节点1和节点3为分片1

节点2和节点4为分片2

分片1和分片2为分布式

1、操作docker

每一台电脑都有两个节点,我这边只演示了一台机器的,请自行增加机器。

# 首先起一个单机的CH
docker run -d \
--name clickhouse-server \
-p 9000:9000 \
-p 8123:8123 \
-p 9009:9009 \
--ulimit nofile=262144:262144 \
yandex/clickhouse-server # 将上面单机的CH中的配置文件复制到宿主机的目录中。没有/home/allspark/目录的,请提前创建。
docker cp clickhouse-server:/etc/clickhouse-server/ /home/allspark/ # 停止单机CH
docker stop clickhouse-server
# 删除单机CH
docker rm clickhouse-server # 起一个CH,这里是将配置、日志、以及数据映射到宿主机
docker run --restart always \
-d \
--name clickhouse-server \
--ulimit nofile=262144:262144 \
--volume=/home/allspark/clickhouse/:/var/lib/clickhouse/ \
--volume=/home/allspark/clickhouse-server/:/etc/clickhouse-server/ \
--volume=/home/allspark/log/clickhouse-server/:/var/log/clickhouse-server/  \
-p 9000:9000 \
-p 8123:8123 \
-p 9009:9009 \
yandex/clickhouse-server # 转到以下目录
cd /home/allspark/
# 复制配置文件一份,因为一台机器上面需要起两个节点
cp -R clickhouse-server/ clickhouse-server2/ # 这里名字,日志、数据、配置都在不同的目录,端口也加1
docker run --restart always \
-d \
--name clickhouse-server2 \
--ulimit nofile=262144:262144 \
--volume=/home/allspark/clickhouse2/:/var/lib/clickhouse/ \
--volume=/home/allspark/clickhouse-server2/:/etc/clickhouse-server/ \
--volume=/home/allspark/log/clickhouse-server2/:/var/log/clickhouse-server/  \
-p 9001:9000 \
-p 8124:8123 \
-p 9010:9009 \
yandex/clickhouse-server # 起一个zookeeper,CH的集群分布式依赖与zookeeper
docker run --restart=always \
--name zookeeper -p 2181:2181 \
-v /home/allspark/zookeeper/conf/:/apache-zookeeper-3.5.6-bin/conf/ \
-v /home/allspark/zookeeper/data/:/data \
-v /home/allspark/zookeeper/datalog/:/datalog -v /home/allspark/zookeeper/logs/:/logs -d zookeeper # 起一个ZKUI,便于查看zookeeper中的数据情况。
docker run --name zkui -p 9090:9090 --link zookeeper:zookeeper -e ZK_SERVER="zookeeper:2181" -d registry.cn-hangzhou.aliyuncs.com/wkaca7114/zkui

2、修改CH配置

每一个节点都需要配置,这里一台电脑两个节点。

1、修改users.xml,用于修改CH的账号密码

1、找到users节点,找到下面的default节点,找到下面的password节点,这里就是密码

2、添加修改账号明就是将default节点完整复制一个或者在其基础修改,为别的名字。例如将default节点名字改为admin,下面的password节点改为admin。就等于有了一个admin/admin的账号。

在xusers.xml中默认情况在default下的密码为空。

2、修改config.xml

1、找到interserver_http_host节点,修改为本机IP,不要使用127.0.0.1

2、listen_host修改为本机IP,不要使用127.0.0.1

3、在该文件的最后的前面一行添加

<include_from>/etc/clickhouse-server/metrika.xml</include_from>

4、在下添加,解决时区问题

<timezone>Asia/Shanghai</timezone>

3、创建文件metrika.xml

在/home/allspark/clickhouse-server和/home/allspark/clickhouse-server2下分别创建文件metrika.xml文件,将下面的配置修改后复制到其中。路径就是第1步中的路径。

下面配置中有备注,请对应修改。

<yandex>
<!--ck集群节点-->
<clickhouse_remote_servers>
<clickhouse_cluster_name>
<!--分片1-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<!--这里写节点1的IP4地址-->
<host>192.168.1.1</host>
<!--这里写节点1的tcp端口-->
<port>9000</port>
<!--这里写节点1的账号-->
<user>default</user>
<!--这里写节点1的账号对应的密码-->
<password>default</password>
</replica>
<!--复制集1-->
<replica>
<!--这里写节点3的IP4地址-->
<host>192.168.1.2</host>
<!--这里写节点3的tcp端口-->
<port>9000</port>
<!--这里写节点3的账号-->
<user>default</user>
<!--这里写节点3的账号对应的密码-->
<password>default</password>
</replica>
</shard>
<!--分片2-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<!--这里写节点2的IP4地址-->
<host>192.168.1.1</host>
<!--这里写节点2的tcp端口-->
<port>9001</port>
<!--这里写节点2的账号-->
<user>default</user>
<!--这里写节点2的账号对应的密码-->
<password>default</password>
</replica>
<!--复制集2-->
<replica>
<!--这里写节点4的IP4地址-->
<host>192.168.1.2</host>
<!--这里写节点4的tcp端口-->
<port>9001</port>
<!--这里写节点4的账号-->
<user>default</user>
<!--这里写节点4的账号对应的密码-->
<password>default</password>
</replica>
</shard>
</clickhouse_cluster_name>
</clickhouse_remote_servers> <!--zookeeper相关配置-->
<zookeeper-servers>
<node index="1">
<!--这里写Zookeeper的IP-->
<host>192.168.1.1</host>
<!--这里写Zookeeper的端口-->
<port>2181</port>
</node>
</zookeeper-servers> <macros>
<layer>01</layer>
<shard>01</shard> <!--这个节点配置的分片号-->
<replica>192.168.1.1</replica> <!--当前节点IP-->
</macros> <networks>
<ip>::/0</ip>
</networks> <!--压缩相关配置-->
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method> <!--压缩算法lz4压缩比zstd快, 更占磁盘-->
</case>
</clickhouse_compression>
</yandex>

4、重启Docker,重新加载配置

docker restart $(docker ps -a)

Docker中安装ClickHouse,单机、集群、分布式的更多相关文章

  1. Linux中安装配置spark集群

    一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所 ...

  2. Hadoop安装教程_集群/分布式配置

    配置集群/分布式环境 集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slav ...

  3. Linux中安装配置hadoop集群

    一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把详细的安装步骤叙述一下.我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择 ...

  4. Dubbo(三) 安装Zookeeper 单机-集群

    一.下载zookeeper zookeeper下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/点击下载 二.启动配置 选择合适版本下载后解压到 ...

  5. HADOOP docker(一):安装hadoop实验集群(略操蛋)

    一.环境准备 1.1.机器规划 主机名    别名    IP     角色 9321a27a2b91 hadoop1 172.17.0.10 NN1 ZK RM 7c3a3c9cd595 hadoo ...

  6. docker 中搭建 mysql pxc 集群

      一.docker中创建pxc 容器 1.拉取PXC 镜像 pull docker pull percona/percona-xtradb-cluster:5.7.21 2.更改镜像名称为pxc t ...

  7. 在Docker中安装和部署MongoDB集群

    此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在Docker中安装mongodb 采用的mongodb镜像:https://registry.hub.doc ...

  8. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  9. CentOS6.3编译安装Memcached集群分布式缓存代理Magent-0.6出错汇总

    参考文章:Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解,搭建Magent,在编译的过程中会出现很多错误: #编译安装安装magent到 /usr/local/mage ...

  10. Presto单机/集群模式安装笔记

    Presto单机/集群模式安装笔记 一.安装环境 二.安装步骤 三.集群模式安装: 3.1 集群模式修改配置部分 3.1.1 coordinator 节点配置. Node172配置 3.1.2 nod ...

随机推荐

  1. vue3 基础-API-案例-ToDoList

    前面几篇我们介绍了 compostion API 的一些基础用法, 如 setup, ref, reactive, toRefs, toRef, context 等. 本篇呢找了一个经典的 TodoL ...

  2. 搭建阅读linux源码的舒适环境(vscode+clangd)

    准备linux源码 linux官网下载源码压缩包 https://www.kernel.org/ 解压 由于源码是经过两次压缩的,所以需要解压两次 xz -d linux-6.14.7.tar.xz ...

  3. 一文速通Python并行计算:11 Python多进程编程-进程之间的数据安全传输-基于队列和管道

    一文速通 Python 并行计算:11 Python 多进程编程-进程之间的数据安全传输-基于队列和管道 摘要: Python 多进程中,Queue 和 Pipe 提供进程间安全通信.Queue 依赖 ...

  4. Linux | base64编码与解码命令

    1.base64编码 (1)base64 file 功能:从指定的文件file中读取数据,编码为base64的字符串然后输出: (2)echo "string" | base64 ...

  5. 我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南

    技术债务是指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,以至于未来给自己带来额外的开发负担. 软件工程师 Ward Cunningham首次将技术的复杂 ...

  6. 2023人形全能赛竞速机器人mega代码

    mega // @Author : Hcm #include <LobotServoController.h> // 舵机板通信 #include <OneButton.h> ...

  7. 自动 GitHub Readme 20 种语言翻译平台 - OpenAiTx 开源免费

    [野人献曝]晚辈开发自动 GitHub Readme 20 种语言翻译平台 - OpenAiTx 开源免费 只需要一键将 GitHub 的网址替换为 OpenAiTx 即可自动进行 AI 翻译 例如: ...

  8. C++数据结构和算法代码模板总结——算法部分

    数据结构和算法学*了将*两周,及时总结和整理一下相关的知识点温故而知新.(一)C++双指针,有个经典的问题:荷兰国旗问题.[leetcode]75.颜色分类 public void sortColor ...

  9. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-17- 如何优雅地切换浏览器多窗口(详细教程)

    1.简介 有时候我们在网页上点击一些按钮或超链接时,有时会打开一个新的网页窗口.这个时候如果下一步操作是在新的网页窗口上,那么就需要切换网页窗口,切换到新的网页窗口后再执行元素定位等操作.Playwr ...

  10. SRM合同更新行项目(组件/SAPSRM/WDC_CTR_DOTC_IT)

    * Get the selected elements of the item table > lt_elem_set = lon_ctr_item->get_selected_eleme ...