ClickHouse集群搭建

ClickHouse相关安装包下载地址:安装包

分享个我下载好的安装包集合:
链接:https://pan.baidu.com/s/1Ela94sWBEnzDmDwS4FvVZg
提取码:yw9p

ClickHouse集群依赖Zookeeper集群,安装前确保Zookeeper集群正常。


1、配置hosts

修改所有节点的hosts,拿我的3个节点举例:
服务器之间最好配置好免密登录,确保端口开放正常,或者关闭防火墙。

vim /etc/hosts

在121.41.1.91配置为:

127.0.0.1 ck_node1
121.41.1.91 ck_node1
121.41.1.92 ck_node2
121.41.1.93 ck_node3

在121.41.1.92配置为:

127.0.0.1 ck_node2
121.41.1.91 ck_node1
121.41.1.92 ck_node2
121.41.1.93 ck_node3

在121.41.1.93配置为:

127.0.0.1 ck_node3
121.41.1.91 ck_node1
121.41.1.92 ck_node2
121.41.1.93 ck_node3

2、上传安装包到服务器

在这里插入图片描述
依次安装

	rpm -ivh clickhouse-server-common-19.16.14.65-1.el7.x86_64.rpm
	rpm -ivh clickhouse-common-static-19.16.14.65-1.el7.x86_64.rpm
	rpm -ivh clickhouse-server-19.16.14.65-1.el7.x86_64.rpm
	#rpm -ivh clickhouse-debuginfo-19.16.14.65-1.el7.x86_64.rpm
	#rpm -ivh clickhouse-test-19.16.14.65-1.el7.x86_64.rpm
	rpm -ivh clickhouse-client-19.16.14.65-1.el7.x86_64.rpm

如果报错

Start clickhouse-server service: /usr/bin/clickhouse-extract-from-config: error while loading shared libraries: libicui18n.so.42: cannot open shared object file: No such file or directoryCannot obtain value of path from config file: /etc/clickhouse-server/config.xml

则需要安装libicu相关包:
libicu-4.2.1-14.el6.x86_64.rpm
libicu-devel-4.2.1-14.el6.x86_64.rpm

3、修改配置文件

初始配置文件位置:
在这里插入图片描述
users.xml,所有节点一样

<?xml version="1.0"?>
<yandex>
    <!-- Profiles of settings. -->
    <profiles>
        <!-- Default settings. -->
        <default>
            <!-- Maximum memory usage for processing single query, in bytes. -->
            <max_memory_usage>10000000000</max_memory_usage>
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <load_balancing>random</load_balancing>
        </default>
        <!-- Profile that allows only read queries. -->
        <readonly>
            <readonly>1</readonly>
        </readonly>
    </profiles>
    <!-- Users and ACL. -->
    <users>
        <default>
            <!--密码,最好设置为密文 -->
            <password>db@123</password>
            <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <!-- Settings profile for user. -->
            <profile>default</profile>
            <!-- Quota for user. -->
            <quota>default</quota>
            <!-- For testing the table filters -->
            <databases>
                <test>
                    <!-- Simple expression filter -->
                    <filtered_table1>
                        <filter>a = 1</filter>
                    </filtered_table1>
                    <!-- Complex expression filter -->
                    <filtered_table2>
                        <filter>a + b &lt; 1 or c - d &gt; 5</filter>
                    </filtered_table2>
                    <!-- Filter with ALIAS column -->
                    <filtered_table3>
                        <filter>c = 1</filter>
                    </filtered_table3>
                </test>
            </databases>
        </default>
    </users>
    <!-- Quotas. -->
    <quotas>
        <!-- Name of quota. -->
        <default>
            <!-- Limits for time interval. You could specify many intervals with different limits. -->
            <interval>
                <!-- Length of interval. -->
                <duration>3600</duration>
                <!-- No limits. Just calculate resource usage for time interval. -->
                <queries>0</queries>
                <errors>0</errors>
                <result_rows>0</result_rows>
                <read_rows>0</read_rows>
                <execution_time>0</execution_time>
            </interval>
        </default>
    </quotas>
</yandex>

config.xml比较长,就不贴全文了
每个节点的配置一样的部分:

<listen_host>::</listen_host>
<!--不限制访问来源ip地址-->
<networks>
   <ip>::/0</ip>
</networks>

<!--设置时区-->
<timezone>Asia/Shanghai</timezone>

<!--设置ZK节点-->
<zookeeper>
 <node index="1">
     <host>ck_node1</host>
     <port>2181</port>
 </node>
 <node index="2">
     <host>ck_node2</host>
     <port>2181</port>
 </node>
 <node index="3">
     <host>ck_node3</host>
     <port>2181</port>
 </node>		
</zookeeper>

<!--集群信息,ck_cluster_1为集群名称-->
<remote_servers>
	<ck_cluster_1>
		<shard>
			<weight>1</weight>
			<internal_replication>true</internal_replication>
			<replica>
				<host>ck_node1</host>
				<port>9000</port>
				<user>default</user>
				<password>db@123</password>
			</replica>
		</shard>
		<shard>
			<weight>1</weight>
			<internal_replication>true</internal_replication>
			<replica>
				<host>ck_node2</host>
				<port>9000</port>
				<user>default</user>
				<password>db@123</password>
			</replica>
		</shard>
		<shard>
			<weight>1</weight>
			<internal_replication>true</internal_replication>
			<replica>
				<host>ck_node3</host>
				<port>9000</port>
				<user>default</user>
				<password>db@123</password>
			</replica>
		</shard>			
	</ck_cluster_1>
</remote_servers>

<compression incl="clickhouse_compression">
    <case>
        <min_part_size>10000000000</min_part_size>       
        <min_part_size_ratio>0.01</min_part_size_ratio>  
        <method>zstd</method>
    </case>
</compression>

<!--日志,方便排查错误-->
<logger>
     <level>trace</level>
     <log>/var/log/clickhouse-server/clickhouse-server.log</log>
     <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
     <size>1000M</size>
     <count>10</count>
 </logger>

每个节点的配置不一样的部分,主要是方便建表的时候使用一些宏变量。
ck_node1

<macros>
    <layer>01</layer>
    <shard>01</shard>
    <replica>01-01-1</replica>
</macros>

ck_node2

<macros>
    <layer>02</layer>
    <shard>01</shard>
    <replica>02-02-1</replica>
</macros>

ck_node3

<macros>
    <layer>03</layer>
    <shard>01</shard>
    <replica>03-03-1</replica>
</macros>

比如建复制表使用宏变量{shard},{replica}:

CREATE TABLE IF NOT EXISTS cola.ip_session_merge_local ON CLUSTER ‘ck_cluster_1’ (ts_date Date,ts_date_time DateTime,user_id Int64,event_type String,site_id Int64,groupon_id Int64, category_id Int64, merchandise_id Int64, search_text String )ENGINE = ReplicatedMergeTree(‘/clickhouse/tables/{shard}/cola/ip_session_merge’,‘{replica}’)PARTITION BY ts_date ORDER BY (ts_date_time,site_id,event_type) SETTINGS index_granularity = 8192;

4、启动服务

service clickhouse-server start //启动
service clickhouse-server stop
service clickhouse-server restart
systemctl status clickhouse-server
clickhouse-client -m -h 127.0.0.1 --password   
select * from system.clusters;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值