首页 > 其他分享 >1、Clickhouse 单节点与集群部署

1、Clickhouse 单节点与集群部署

时间:2023-04-04 18:33:06浏览次数:47  
标签:配置 zookeeper server 集群 Clickhouse 分片 节点 clickhouse

图片

一、单节点部署

1.1、修改文件描述符

 vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

 vim /etc/security/limits.d/20-nproc.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

1.2、安装依赖

yum install -y libtool
yum install -y *unixODBC*

1.3、CentOS 取消 SELINUX

vim /etc/selinux/config
SELINUX=disabled

1.4、下载安装包

官网:https://repo.yandex.ru/clickhouse/rpm/testing/x86_64/

1、clickhouse-server:

https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-server-22.2.2.1-2.noarch.rpm

2、clickhouse-common-static:

https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-22.2.2.1-2.x86_64.rpm

3、clickhouse-client:

https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-client-22.2.2.1-2.noarch.rpm

4、clickhouse-common-static-dbg

https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-dbg-22.2.2.1-2.x86_64.rpm

1.5、安装

rpm -ivh *.rpm

1.6、修改配置文件(/etc/clickhouse-server/config.xml)

注释打开,这样的话才能让 ClickHouse 被除本机以外的服务器访问

ipv6:
<listen_host>::</listen_host>
ipv4:
<listen_host>0.0.0.0</listen_host>

在这个文件中,有 ClickHouse 的一些默认路径配置,比较重要的

数据文件路径:
<path>/var/lib/clickhouse/</path>
日志文件路径:
<log>/var/log/clickhouse-server/clickhouse-server.log</log>

启动

systemctl start clickhouse-server

注意:clickhouse默认以clickhouse用户启动,所有的相关文件、文件夹属主属组都需要修改成clickhouse

1.7、拓展:yum 部署,(一般不用)

yum  -y install yum-utils
rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.repo
yum -y  install clickhouse-server clickhouse-client

/etc/init.d/clickhouse-server start   -- 启动服务

1.8、ck目录介绍

/etc/clickhouse-server:
服务端的配置文件目录,包括全局配置config.xml 和用户配置users.xml等。

/var/lib/clickhouse:
默认的数据存储目录(通常会修改默认路径配置,将数据保存到大容量磁盘挂载的路径)。

/var/log/clickhouse-server
默认保存日志的目录(通常会修改路径配置,将日志保存到大容量磁盘挂载的路径)。

/usr/bin 默认添加进系统环境变量中
clickhouse:主程序的可执行文件。 
clickhouse-client:一个指向ClickHouse可执行文件的软链接,供客户端连接 使用。 
clickhouse-server:一个指向ClickHouse可执行文件的软链接,供服务端启动 使用。
clickhouse-compressor:内置提供的压缩工具,可用于数据的正压反解。 

ClickHouse的底层访问接口支持TCP和HTTP两种协议,其中,TCP 协议拥有更好的性能,其默认端口为9000,主要用于集群间的内部通信及CLI客户端;而HTTP协议则拥有更好的兼容性,可以通过REST服务的形式被广泛用于JAVA、Python等编程语言的客户端,其默认端口为8123。通常而言,并不建议用户直接使用底层接口访问ClickHouse,更为推荐的方式是通过CLI和JDBC这些封装接口,因为它们更加简单易用!

二、集群部署

clickhouse集群是非主从结构,各个节点是相互独立的。我们可以根据配置灵活配置集群。

clickhouse集群概念:主要用于分布式表和表的副本

clickhouse集群底层依赖于zookeeper,来实现集群副本之间的同步。

2.1、部署3台单节点clickhouse,不启动

参照上述

2.2、部署zookeeper集群

zookeeper在clickhouse中主要用在副本表数据的同步(ReplicatedMergeTree引擎)以及分布式(Distributed)的操作上。

2.2.1、安装jdk

在安装zookeeper之前要先安装jdk,因为zookeeper是需要JDK来编译的。

下载地址:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

解压安装jdk
tar -zxvf jdk-8u11-linux-x64.tar.gz -C /usr/local/java/

修改配置文件,添加以下内容(jdk的路径)
#vi /etc/profile
 
#java
JAVA_HOME=/usr/local/java/jdk1.8.0_11
export PATH=$PATH:$JAVA_HOME/bin

#source /etc/profile

2.2.2、配置zookeeper集群

官网:

https://dlcdn.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz

mkdir /usr/local/zookeeper(创建zookeeper安装目录)
cd /usr/local/zookeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar -xvf apache-zookeeper-3.7.0-bin.tar.gz

vim /etc/profile
#zookeeper
export ZK_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZK_HOME/bin

source /etc/profile

创建配置:

cp /usr/local/zookeeper/zookeeper-3.7.0/pache-zookeeper-3.7.0-bin/conf/zoo_sample.cfg /usr/local/zookeeper/zookeeper-3.7.0/pache-zookeeper-3.7.0-bin/conf/zoo.cfg

修改配置参数(config.xml)

#vim /usr/local/zookeeper/zookeeper-3.7.0/conf/zoo.cfg
 
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
 
server.1=ip1:2888:3888
server.2=ip2:2888:3888 
server.3=ip3:2888:3888

(ip1,ip2,ip3为三台机器的ip地址,为主机之间建立互信做准备)

每台创建不一样的server id标识

vim /usr/local/zookeeper/data/myid(ip1输入1, ip2输入2, ip3输入3)

启动zk

/usr/local/zookeeper/zookeeper-3.7.0/bin/zkServer.sh start

如果启动报错 it is probably not running

	1、多检查三台虚拟机zoo.cfg配置文件是否有问题
	2、检查自己myid是否写对
	3、防火墙是否已关闭
	4、确定是否都三台虚拟机都启动了集群

2.3、配置clickhouse集群

2.3.1 配置文件:在以下两个配置文件内配置均可

/etc/clickhouse-server/config.xml
/etc/clickhouse-server/config.d/metrika.xml

2.3.2 集群配置标签:

<remote_services>

2.3.3 配置详情:

<yandex>
  <clickhouse_remote_servers> 
    <!-- 自定义集群名称 --!>
	<test_cluster1>
	  <!--定义集群的分片数量,2个shard标签说明有两个节点--!>
	  <shard>
	    <!--定义分片的副本数量,这里的副本只有一个--!>
		<weight>1</weight>
		<internal_replication>true</internal_replication>
		<replica>
		  <host>hadoop129</host>
		  <port>9000</port>
		</replica>
	  </shard>
	  <shard>
	    <weight>1</weight>
		<internal_replication>true</internal_replication>
	    <replica>
		  <host>hadoop130<host>
		  <port>9000</port>
		</replica>
	  </shard>
    </test_cluster1>	
  </clickhouse_remote_servers>
  
  <zookeeper-servers>
    <node index="1">
	  <host>hadoop129</host>
	  <port>2181</port>
	</node>
  </zookeeper-servers>
  <zookeeper-servers>
    <node index="2">
	  <host>hadoop130</host>
	  <port>2181</port>
	</node>
  </zookeeper-servers>
  <macros>
    <shard>01</shard>
	<replica>master</replica>
  </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>
    </case>
  </clickhouse_compression>
</yandex>

2.3.4 配置文件 users.xml

vi /etc/clickhouse-server/users.xml
#内存限制 
<max_memory_usage>30000000000</max_memory_usage>

#增加默认用户的密码,否则clickhouse不需要密码都可登录 
<users>
    <default>
        <password>密码自定义</password>
        <access_management>1</access_management>
    </default>

2.3.4 配置文件使用详解

remote_servers:

clickhouse集群配置标签,固定写法。注意:这里与之前版本不同,之前要求必须以clickhouse开头,新版本不再需要。

test_cluster1:

配置clickhouse的集群名称,可自由定义名称,注意集群名称中不能包含点号。内部可以配置集群中有几个分片,每个分片有几个副本。
分片是指包含部分数据的服务器,要读取所有的数据,必须访问所有的分片。
副本是指存储分片备份数据的服务器,要读取所有的数据,访问任意副本上的数据即可。

shard:

分片:一个clickhouse集群可以分多个分片,每个分片可以存储数据,这里分片可以理解为clickhouse机器中的每个节点,1个分片只能对应1服务节点 。这里可以配置一个或者任意多个分片,在每个分片中可以配置一个或任意多个副本,不同分片可配置不同数量的副本。如果只是配置一个分片,这种情况下查询操作应该称为远程查询,而不是分布式查询。

replica:

每个分片的副本,默认每个分片配置了一个副本。也可以配置多个,副本的数量上限是由clickhouse节点的数量决定的。如果配置了副本,读取操作可以从每个分片里选择一个可用的副本。如果副本不可用,会依次选择下个副本进行连接。该机制利于系统的可用性。

internal_replication:

默认为false,写数据操作会将数据写入所有的副本,设置为true,写操作只会选择一个正常的副本写入数据,数据的同步在后台自动进行。

zookeeper:

配置的zookeeper集群,注意:与之前版本不同,之前版本是“zookeeper-servers”。

macros:

区分每台clickhouse节点的宏配置,macros中<shard>标签代表当前节点的分片号,<replica>标签代表当前节点的副本号,这两个名称可以随意取,后期在创建副本表时可以动态读取这两个宏变量。注意:每台clickhouse节点<shard>需要配置不同名称。

networks:

这里配置ip为“::/0”代表任意IP可以访问,包含IPv4和IPv6。
注意:允许外网访问还需配置/etc/clickhouse-server/config.xml 参照第三步骤。

clickhouse_compression:

MergeTree引擎表的数据压缩设置,min_part_size:代表数据部分最小大小。min_part_size_ratio:数据部分大小与表大小的比率。method:数据压缩格式。

三、简单操作

3.1 查询集群状态

在node1、node2、node3任意一台节点进入clickhouse客户端,查询集群配置

clickhouse-client --password 

#查询集群信息,看到分片即代表集群配置成功。
master :) select * from system.clusters;
master :) select cluster,host_name from system.clusters;

3.2 客户端命令行参数

--host,-h:

clickhouse-client  -h node1
使用-h指定ip或者host名称时,需要在/etc/clickhouse-server/config.xml配置文件中114行配置:<listen_host>::</listen_host> ,代表可以任意ip可访问。配置完成后需要重启当期clickhouse节点生效。

--query,-q

只能在非交互式查询时使用,用于指定SQL语句。
clickhouse-client -q "show databases"

--database, -d:

clickhouse-client -d "system" -q "show tables"

--multiline, -m: 交互式客户端中可以执行多行函数

clickhouse-client -m

--time, -t:

在非交互式执行时,会打印每条SQL的执行时间,
clickhouse-client -t -q "show databases"

--stacktrace:

clickhouse-client --stacktrace

--multiquery,-n

在非交互式执行时,允许一次运行多条SQL语句,多条语句之间以分号间隔。
clickhouse-client  -n -q "show databases;use default;"

--user, -u

指定登录用户

--port

指定登录端口

--password

指定登录密码

3.3 基础命令

标签:配置,zookeeper,server,集群,Clickhouse,分片,节点,clickhouse
From: https://www.cnblogs.com/cuckooyang/p/17287361.html

相关文章

  • 基于虚拟化的混合云集群——kafka集群环境构建工作
    摘要本章将详细的介绍kafka集群环境的构建和kafka的相关问题介绍。下载kafka的安装包官网下载地址:ApacheKafka这个下载很重要,可能会遇到:1)错误:找不到或无法加载主类kafka.Kafka配置kafka的环境在kafa的解压包中建立kafka的日志的文件夹log的位置:/home/xjl/software/kafka2.0.0/......
  • kubernetes——容器集群管理软件
    摘要Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行......
  • 动力节点王鹤SpringBoot3笔记——jdk新特性
    一、JDK关注的新特性1.1搭建学习环境JDK:JDK19OpenJDK:https://jdk.java.net/19/LibericaJDK:​​https://bell-sw.com/pages/downloads/​​,是一个OpenJDK发行版,为云原生,容器特别优化。Maven:构建和依赖管理,版本选择3.6以上配置本地仓库和阿里云镜像IDEA2022.3.1Ulti......
  • 树:剑指 Offer 54. 二叉搜索树的第k大节点
    题目描述:给定一棵二叉搜索树,请找出其中第k大的节点的值。 示例1:    示例2:    解题思路:本文解法基于此性质:二叉搜索树的中序遍历为递增序列。•根据以上性质,易得二叉搜索树的中序遍历倒序为递减序列。•因此,求“二叉搜索树第k大......
  • ELK+kafka集群部署
    前言业务层可以直接写入到kafka队列中,不用担心elasticsearch的写入效率问题。消息系统主要功能1、解耦允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束2、冗余消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消......
  • A0--集群基础环境
    文件下载: ansible_v2.9.9flink-1.16.0hadoop-3.1.3hive-3.1.3kafka_2.13-3.3.1python-3.8.10spark-3.2.1tools.tgzzookeeper-3.6.3  一、安装并配置ansible自动化工具 1)上传ansible安装文件并解压缩tar -zxvfansible_......
  • hdfs集群的扩容和缩容
    目录1、背景2、集群黑白名单3、准备一台新的机器并配置好hadoop环境3.1我们现有的集群规划3.2准备一台新的机器3.2.1查看新机器的ip3.2.2修改主机名和host映射3.2.3配置时间同步3.2.4关闭防火墙3.2.5新建hadoop部署用户3.2.6复制hadoop04机器上的/etc/hosts文件到集群的另......
  • 1519. 子树中标签相同的节点数
    题目描述给了一些点的连通关系,每个点的值都不同,每个点上都哟一个附加的标签(小写字母)问:每个节点i的子树中标签和i相同的节点数f1-无向图后序遍历基本分析怎么根据连接关系进行遍历?先建图遍历的时候没有方向,怎么保证不会回去?加一个父节点的参数,保证不会往前走?怎么维护当前节......
  • docker 部署mongoDB集群与读写分离
    一.生成key文件需要注意集群中所有机器都需要用同一个文件,否则会出现验证失败的情况#生成keyopensslrand-base64756>/data/volume/mongodb/configdb/mongo.key#设置访问权限chmod400/data/volume/mongodb/configdb/mongo.key 二.启动MongoDB的docker容器d......
  • 决战圣地玛丽乔亚Day47----Redis集群
    4.Redis Cluster集群模式如果单机吞吐量过大,我们可以横向和纵向进行扩展,横向就是加节点(scaleout),纵向就是加配置(scaleup)。如果加配置,治标不治本,单机局限性和持久化问题无法解决(如轮式RDB快照还是AOF指令)横向扩展更容易扩展,可以解决很多问题,包括单一实例节点的硬件扩容限制......