一、ClickHouse安装方式:
为了方便使用,一般采用RPM包方式安装,其他两种方式这里不做说明。
二、下载安装包
官方没有提供rpm包,但是Altinity第三方公司提供了。
地址:https://packagecloud.io/altinity/clickhouse
三、配置文件
安装好rmp包后,默认配置文件在/etc/clickhouse-server/目录下,主要涉及以下3种配置文件,也可以自定义配置文件位置,如果修改了目录记得连带修改启动脚本。
默认启动脚本,注意,这个名字虽然叫server,其实是个shell脚本vi /etc/init.d/clickhouse-server
12 CLICKHOUSE_USER=clickhouse
13 CLICKHOUSE_GROUP=${CLICKHOUSE_USER}
14 SHELL=/bin/bash
15 PROGRAM=clickhouse-server
16 GENERIC_PROGRAM=clickhouse
17 EXTRACT_FROM_CONFIG=${GENERIC_PROGRAM}-extract-from-config
18 SYSCONFDIR=/data/clickhouse
19 CLICKHOUSE_LOGDIR=/data/clickhouse/logs
20 CLICKHOUSE_LOGDIR_USER=root
21 CLICKHOUSE_DATADIR_OLD=/data/clickhouse
22 LOCALSTATEDIR=/data/clickhouse/lock
23 BINDIR=/usr/bin
24 CLICKHOUSE_CRONFILE=/etc/cron.d/clickhouse-server
25 CLICKHOUSE_CONFIG=$SYSCONFDIR/config.xml
26 LOCKFILE=$LOCALSTATEDIR/$PROGRAM
27 RETVAL=0
29 CLICKHOUSE_PIDDIR=/var/run/$PROGRAM
30 CLICKHOUSE_PIDFILE="$CLICKHOUSE_PIDDIR/$PROGRAM
<?xml version=""1.0""?>
<yandex>
<!--日志-->
<logger>
<level>error</level>
<log>/data/clickhouse/logs/clickhouse.log</log>
<errorlog>/data/clickhouse/logs/error.log</errorlog>
<size>500M</size>
<count>5</count>
</logger>
<!--本地节点信息-->
<http_port>8123</http_port>
<tcp_port>9000</tcp_port>
<interserver_http_port>9009</interserver_http_port>
<interserver_http_host>本机IP</interserver_http_host> <!--本机域名或IP-->
<!--本地配置-->
<listen_host>0.0.0.0</listen_host>
<max_connections>4096</max_connections>
<receive_timeout>800</receive_timeout>
<send_timeout>800</send_timeout>
<keep_alive_timeout>300</keep_alive_timeout>
<max_concurrent_queries>1000</max_concurrent_queries>
<uncompressed_cache_size>8589934592</uncompressed_cache_size>
<mark_cache_size>5368709120</mark_cache_size>
<path>/data/clickhouse/</path>
<tmp_path>/data/clickhouse/tmp/</tmp_path>
<users_config>users.xml</users_config>
<default_profile>default</default_profile>
<log_queries>1</log_queries>
<default_database>default</default_database>
<!--集群相关配置-->
<remote_servers incl=""clickhouse_remote_servers"" />
<zookeeper incl=""zookeeper-servers"" optional=""true"" />
<macros incl=""macros"" optional=""true"" />
<builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>
<max_session_timeout>3600</max_session_timeout>
<default_session_timeout>300</default_session_timeout>
<max_table_size_to_drop>0</max_table_size_to_drop>
<merge_tree>
<parts_to_delay_insert>300</parts_to_delay_insert>
<parts_to_throw_insert>600</parts_to_throw_insert>
<max_delay_to_insert>2</max_delay_to_insert>
</merge_tree>
<max_table_size_to_drop>0</max_table_size_to_drop>
<max_partition_size_to_drop>0</max_partition_size_to_drop>
<distributed_ddl>
<!-- Path in ZooKeeper to queue with DDL queries -->
<path>/clickhouse/task_queue/ddl</path>
</distributed_ddl>
<include_from>/etc/clickhouse-server/metrika.xml</include_from>
</yandex>
<?xml version="1.0"?>
<yandex>
<profiles>
<default>
<max_memory_usage>10000000000</max_memory_usage>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
</default>
<readonly>
<max_memory_usage>10000000000</max_memory_usage>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
<readonly>1</readonly>
</readonly>
</profiles>
<quotas>
<!-- Name of quota. -->
<default>
<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>
<users>
<default>
<!-- PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-' -->
<!-- password UHXQQmhb -->
<password_sha256_hex>65b84b497ef843f7c9629251a64e307caecbf7327975af4d18f83261239e1460</password_sha256_hex>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</default>
<ck>
<password_sha256_hex>65b84b497ef843f7c9629251a64e307caecbf7327975af4d18f83261239e1460</password_sha256_hex>
<networks>
<ip>::/0</ip>
</networks>
<profile>readonly</profile>
<quota>default</quota>
</ck>
</users>
</yandex>
<yandex>
<!--ck集群节点-->
<clickhouse_remote_servers>
<clickhouse_cluster_name>
<!--分片1-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.68.1.1</host>
<port>9000</port>
<user>default</user>
<password>password</password>
</replica>
<!--复制集1-->
<replica>
<host>192.68.1.2</host>
<port>9000</port>
<user>default</user>
<password>password</password>
</replica>
</shard>
<!--分片2-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.68.1.3</host>
<port>9000</port>
<user>default</user>
<password>password</password>
</replica>
<!--复制集2-->
<replica>
<host>192.68.1.4</host>
<port>9000</port>
<user>default</user>
<password>password</password>
</replica>
</shard>
</clickhouse_cluster_name>
</clickhouse_remote_servers>
<!--zookeeper相关配置-->
<zookeeper-servers>
<node index=""""1"""">
<host>192.68.1.5</host>
<port>2181</port>
</node>
<node index=""""2"""">
<host>192.68.1.6</host>
<port>2181</port>
</node>
<node index=""""3"""">
<host>192.68.1.7</host>
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<layer>01</layer>
<shard>01</shard> <!--分片号-->
<replica>192.68.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>
四、ClickHouse常用架构:
五、分布式高可用集群架构
以下是2个分片、2个副本集的架构,zookeeper机器可以跟ClickHouse共用,但是如果压力较大,IO消耗较多,可能会延迟,建议分开。
role | shard1 | shard2 |
---|---|---|
replica | 192.168.1.1 | 192.168.1.3 |
replica | 192.168.1.2 | 192.168.1.4 |
zookeeper集群:
index | node |
---|---|
1 | 192.168.1.5 |
2 | 192.168.1.6 |
3 | 192.168.1.7 |
架构如下:
六、安装zookeeper集群,至少3台
tickTime=2000 | 基本时间单位, 毫秒值 |
---|---|
initLimit=30000 | tickTime的倍数,follower和leader之间的最长心跳时间 |
syncLimit=10 | tickTime的倍数,leader和follower之间发送消息, 请求和应答的最大时间 |
dataDir=/export/data/zookeeper/data | 数据目录 |
dataLogDir=/export/data/zookeeper/logs | 日志目录,如果没设定,默认和dataDir相同 |
clientPort=2181 | 监听client连接的端口号 |
maxClientCnxns=2000 | zookeeper最大连接 |
maxSessionTimeout=60000000 | 最大的会话超时时间 |
autopurge.snapRetainCount=10 | 保留的文件数目,默认3个 |
autopurge.purgeInterval=1 | 自动清理snapshot和事务日志,清理频率,单位是小时 |
globalOutstandingLimit=200 | 等待处理的最大请求数量 |
preAllocSize=131072 | 日志文件大小Kb,切换快照生成日志 |
snapCount=3000000 | 两次事务快照之间可执行事务的次数,默认的配置值为100000 |
leaderServes=yes | leader是否接受client请求,默认为yes即leader可以接受client的连接,当节点数为>3时,建议关闭 |
server.1=192.168.1.5:2888:3888 | 2888 leader\follower传输信息端口,3888推举端口 |
server.2=192.168.1.6:2888:3888 | 2888 leader\follower传输信息端口,3888推举端口 |
server.3=192.168.1.7:2888:3888 | 2888 leader\follower传输信息端口,3888推举端口 |
6. 启动
/usr/local/zookeeper/bin/zkServer.sh [start\status\stop]
七、安装部署clickhouse