typora-root-url: assets
安装单机版的clickhouse
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
sudo yum install -y clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start
clickhouse-client # or "clickhouse-client --password" if you set up a password.
如果想使用最新版本,请将repo文件中stable
版本关闭testing
版本打开(建议在您的测试环境中使用)。prestable
有时也可用
1)修改配置/etc/clickhouse-server/config.xml
1、开放远程连接: <listen_host>::</listen_host>
2、数据目录改为服务器最大的数据盘,如此处是/data2:
<!-- Path to data directory, with trailing slash. -->
<path>/data2/clickhouse/</path>
<tmp_path>/data2/clickhouse/tmp/</tmp_path>
<user_files_path>/data2/clickhouse/user_files/</user_files_path>
<format_schema_path>/data2/clickhouse/format_schemas/</format_schema_path>
2) 其他优化配置项修改
1、配置日志文件切割 (100M做一个切割,ClickHouse存储的已归档日志文件的数量 设置为 10),配置文件:/etc/clickhouse-server/config.xml
修改如下:
<size>100M</size>
<count>10</count>
2、配置允许的文件导入的错误数(放到<interserver_http_port> 配置项后面):
<input_format_allow_errors_num>100</input_format_allow_errors_num>
3、配置连接超时时间参数
vim /etc/clickhouse-server/config.xml
修改如下参数:
<keep_alive_timeout>900</keep_alive_timeout>
<default_session_timeout>600</default_session_timeout>
4、是否使用未压缩块的缓存,提升短查询速度。接受0或1。默认情况下0(禁用),改为1
修改:<use_uncompressed_cache>0</use_uncompressed_cache> 为 <use_uncompressed_cache>1</use_uncompressed_cache>
5、修改单个查询使用的最大内存限制
<max_memory_usage>20000000000</max_memory_usage>
6、添加如下参数 至 <max_memory_usage>参数后面
<max_bytes_before_external_group_by>80000000000</max_bytes_before_external_group_by>
3)修改默认账号密码
1、配置账号密码: vim /etc/clickhouse-server/users.xml
修改: <password></password> 为 <password>mypasswd123</password>
clickhouse分布式集群
集群规划
192.168.222.130 hdp001 关防火墙, host映射, 时钟同步 JDK, Zookeeper clickhouse-server 9100
192.168.222.131 hdp002 关防火墙, host映射, 时钟同步 JDK, Zookeeper clickhouse-server 9100
192.168.222.132 hdp003 关防火墙, host映射, 时钟同步 JDK, Zookeeper clickhouse-server 9100
关于机器之前的免密、关防火墙、host映射、时钟同步以及JDK和Zookeeper的安装步骤,这里就不再介绍了。
先按照上面单机模式的部署在hdp001、hdp002、hdp003上部署安装clickhouse。
部署完毕后在hdp001的环境上修改clickhouse的配置文件的如下项:
vim /etc/clickhouse-server/config.xml
<listen_host>::</listen_host> #开放远程连接,单机部署的时候已设置过,需要再次确认这个配置是否打开
#集群配置
<test_cluster_one_shard_three_replicas_localhost> #集群名称,可随意定义,这里是默认名称
<shard>
<replica>
<host>hdp001</host> #节点1主机名或者填主机IP,根据实际修改
<port>9100</port> #节点1的clickhouse端口号,根据实际修改
</replica>
</shard>
<shard>
<replica>
<host>hdp002</host> #节点2主机名或者填主机IP,根据实际修改
<port>9100</port> #节点2的clickhouse端口号,根据实际修改
</replica>
</shard>
<shard>
<replica>
<host>hdp003</host> #节点3主机名或者填主机IP,根据实际修改
<port>9100</port> #节点3的clickhouse端口号,根据实际修改
</replica>
</shard>
</test_cluster_one_shard_three_replicas_localhost>
#ZK配置
<zookeeper>
<node>
<host>hdp001</host> #ZK节点1主机名或者填主机IP,根据实际修改
<port>2181</port> #ZK端口号,根据实际修改
</node>
<node>
<host>hdp002</host> #ZK节点2主机名或者填主机IP,根据实际修改
<port>2181</port> #ZK端口号,根据实际修改
</node>
<node>
<host>hdp003</host> #ZK节点3主机名或者填主机IP,根据实际修改
<port>2181</port> #ZK端口号,根据实际修改
</node>
</zookeeper>
修改完配置文件以后,分发到其他的两个节点上,更改权限,启动hdp001上的clickhouse
scp config.xml root@hdp002:/etc/clickhouse-server/
scp config.xml root@hdp002:/etc/clickhouse-server/
chown clickhouse:clickhouse /etc/clickhouse-server/ -R
#启动clickhouse时,不能用root用户,需用clickhouse用户。
sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml
确保hdp001上的clickhouse启动没有以后,可以用以下命令启动其他两个节点的clickhouse
nohup sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml &
查看端口,验证clickhouse是否成功启动
打开client
clickhouse-client --host="127.0.0.1" --port="9100" --user="default" --password="dtsw1234"
输入sql语句查看集群
select * from system.clusters;
可以看到test_cluster
就是我们定义的集群名称,一共有三个分片,每个分片有一份数据。剩下的为配置文件默认自带的集群配置。
测试分布式集群
在hdp001、hdp002、hdp003 分别创建本地表cluster3s1r_local
CREATE TABLE default.cluster3s1r_local (`id` Int32,`website` String,`wechat` String,`FlightDate` Date,Year UInt16)ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192);
在node01节点上创建分布式表
CREATE TABLE default.cluster3s1r_all AS cluster3s1r_local ENGINE = Distributed(test_cluster, default, cluster3s1r_local, rand());
往分布式表cluster3s1r_all
插入数据,cluster3s1r_all
会随机插入到三个节点的cluster3s1r_local
里
插入数据
INSERT INTO default.cluster3s1r_all (id,website,wechat,FlightDate,Year)values(1,'https://www.baidu.com/','clickhouse部署','2022-07-20',2022);
INSERT INTO default.cluster3s1r_all (id,website,wechat,FlightDate,Year)values(2,'http://www.merryyo.cn/','clickhouse集群','2022-07-20',2022);
INSERT INTO default.cluster3s1r_all (id,website,wechat,FlightDate,Year)values(3,'http://www.xxxxx.cn/','xxxxx','2022-07-20',2020);
查询分布式表和本地表
select * from cluster3s1r_all;
select * from cluster3s1r_local;
hdp001
hdp002
hdp003