一、前提
需要在三台及以上安装clickhouse单机 单机安装连接
二、配置
2.1、修改配置文件config.xml
需要在每台主机修改 config.xml ,如下
vim /etc/clickhouse-server/config.xml
先修改 tcp_port 为 9977,默认端口为9000 因为这个端口和 HDFS 的冲突了
<tcp_port>9977</tcp_port>
listen_host 表示能监听的主机,:: 表示任意主机都可以访问
<listen_host>::</listen_host>
<!-- <listen_host>::1</listen_host> -->
<!-- <listen_host>127.0.0.1</listen_host> -->
2.2、在全部机器的etc目录下新建metrika.xml文件
vim /etc/metrika.xml
<yandex>
<!-- 该标签表示所有服务节点 -->
<clickhouse_remote_servers>
<!-- 3分片1副本 该标签表示一个clickhouse集群名称 可以配置多个集群,集群名称不同-->
<clickhouse_3shards_1replicas>
<!-- 该标签表示当前集群的一个节点 -->
<shard>
<!-- 数据自动同步 -->
<internal_replication>true</internal_replication>
<replica>
<host>hadoop102</host>
<port>9977</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>hadoop103</host>
<port>9977</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>hadoop104</host>
<port>9977</port>
</replica>
</shard>
</clickhouse_3shards_1replicas>
</clickhouse_remote_servers>
<!-- zookeeper 自动同步 -->
<zookeeper-servers>
<!-- index 等于 zk 的 myid -->
<node index="1">
<host>hadoop102</host>
<port>2181</port>
</node>
<node index="2">
<host>hadoop103</host>
<port>2181</port>
</node>
<node index="3">
<host>hadoop104</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!-- 配置文件中macros若省略,则建复制表时每个分片需指定zookeeper路径及副本名称,同一分片 上路径相同,副本名称不同;若不省略需每个分片不同配置 -->
<macros>
<replica>hadoop102</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>
三、启动
3.1、启动 zk
3.2、启动服务器
需要在每台主机启动
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
3.3、检查是否启动
netstat -nltp | grep clickhouse
3.4、启动客户端
语法:
clickhouse-client --host=... --port=... --user=... --password=... -m
username:用户名
password:密码
host:服务器IP
port:端口
-m:允许多行查询
比如:
默认使用 default 用户 密码为空
clickhouse-client --host hadoop102 --port 9977 --user dafault --password
3.5、配置用户
停止所有主机并配置如下:
vim /etc/clickhouse-server/users.xml
需要在 users 标签里面添加
<!-- 该标签表示用户名 -->
<clickhouse>
<!-- 该标签表示密码 -->
<password>clickhouse</password>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</clickhouse>
3.6、重新启动服务
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
3.7、检查是否重新启动
netstat -nltp | grep clickhouse
3.8、启动一个客户端
clickhouse-client --host hadoop102 --port 9977 --user clickhouse --password clickhouse -m
3.9、创建一个数据库
create database clickhouse2;
此时创建的数据库 clickhouse2 只能在本机有其他主机是没有的,可以发现,即使配置了集群配置,但是每一台主机都是独立的
3.10、创建分布式数据库
on cluster 集群名称
create database clickhouse3 on cluster clickhouse_4shards_1replicas
此时再查看其他主机,就会都有 clickhouse3 数据库了