clickhouse安装说明

  1. 下载clickhouse相关安装文件:

下载地址: https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/

  1. Linux执行安装指令

rpm -ivh +包名

注意:先执行安装common-static。因为server和client安装时需要依赖common中的文件。

  1. 客户端与服务端启动

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

注意事项:如果linux报: init script is already running;

如果此时客户端连接服务端时:

ClickHouse client version 20.11.3.3 (official build).

Connecting to localhost:9000 as user default.

Code: 210. DB::NetException: Connection refused (localhost:9000)

说明服务端未启动成功。则需要执行指令: systemctl start clickhouse-server.service

并修改etc/clickhouse-server/config.xml,打开注释<listen_host>::</listen_host>

再执行服务端重启systemctl restart clickhouse-server.service。在尝试客户端连接服务端。

sudo /etc/init.d/clickhouse-server stop

sudo /etc/init.d/clickhouse-server restart

sudo /etc/init.d/clickhouse-server start

ps -aux |grep clickhouse

进入clickhouse-client

clickhouse-client --host 172.xxx.xxx.xxx --port 9000

clickhouse-client -m

select * from system.clusters;

select 1;

exit;

ALTER TABLE ontime_local DELETE WHERE Year='2003';

clickHouse日志查看

clickHouse-server默认日志路径:/var/log/clickhouse-server

如果你在 clickhouse-server 没有找到任何有用的信息或根本没有任何日志,您可以使用命令查看 system.d :

$ sudo journalctl -u clickhouse-server

.显示尾部的最新10行日志

journalctl  -n

主要原因是:启动 clickhouse 默认用户是 clickhouse 但是当前用户是root

解决方案:

第一种:创建一个用户组为 clickhouse 使用clickhouse用启动

第二种(推荐):

cd /var/lib/

chown -R root:root clickhouse

chmod 777 /etc/metrika.xml

指定配置文件路径

clickhouse-server --config-file=/etc/clickhouse-server/config.xml

后台启动

nohup clickhouse-server --config-file=/etc/clickhouse-server/config.xml &

nohup clickhouse-server --config-file=/etc/clickhouse-server/config.xml 1>~/logs/clickhouse_std.log 2>~/logs/clickhouse_err.log &

LINUX中如何查看某个端口是否被占用

netstat  -anp  | grep   8123

2.netstat   -nultp(此处不用加端口号)

该命令是查看当前所有已经使用的端口情况

1.集群节点信息

172.xxx.xxx.xxx ch201
172.xxx.xxx.xxx ch202
172.xxx.xxx.xxx ch203

2. 搭建一个zookeeper集群

在这三个节点搭建一个zookeeper集群(如果搭建可以直接忽略这一步),先在一个节点上根据以下配置

2.1. 下载 zookeeper-3.4.12.tar.gz 安装包,放置到上面三台服务器一个目录下(/mpjava/)

2.2. 进入到/mpjava/目录下,解压tar包,tar -zxvf zookeeper-3.4.12.tar.gz

2.3. 进入zookeeperconf目录,拷贝zoo_sample.cfgzoo.cfgcp zoo_sample.cfg zoo.cfg 修改zoo.cfg文件:

tickTime=2000
initLimit=10
syncLimit=5
dataDir= /mpjava/zookeeper-3.4.13/data
dataLogDir= /mpjava/zookeeper-3.4.13/dataLog
clientPort=2181
autopurge.purgeInterval=0
globalOutstandingLimit=200
server.1=ch201:2888:3888
server.2=ch202:2888:3888
server.3=ch203:2888:3888

2.4. 创建需要的目录

$:mkdir -p /apps/zookeeper-3.4.13/data
$:mkdir -p /apps/zookeeper-3.4.13/dataLog

配置完成后将当前的zookeeper目录scp到其他两个节点

2.5. 设置myid

$:vim /data/ myid #ch201为1,ch202为2,ch203为3

2.6. 进入zookeeperbin目录,启动zookeeper服务,每个节点都需要启动

$: ./zkServer.sh start

2.7. 启动之后查看每个节点的状态

$: ./zkServer.sh status

其中有一个节点是leader,有两个节点是follower,证明zookeeper集群是部署成功的

2.8. 测试zookeeper

$: ./zkCli.sh -server 172.xxx.xxx.xxx:2181

如果出现拒绝连接,查看防火墙是否关闭,关闭防火墙service iptables stop重启zookeeper,或排查是否配置有误

2.9.停止

./zkServer.sh stop

集群部署

三个节点全部按照上面的指导部署单节点成功后开始配置部署集群需要的配置

4.1.首先以一个节点为例配置,vim /etc/metrika.xml,添加配置信息如下:

<yandex>
<clickhouse_remote_servers>
<perftest_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch201</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>ch202</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch203</host>
<port>9000</port>
</replica>
</shard>
</perftest_3shards_1replicas>
</clickhouse_remote_servers>
 
<!--zookeeper相关配置-->
<zookeeper-servers>
<node index="1">
<host>ch201</host>
<port>2182</port>
</node>
<node index="2">
<host>ch202</host>
<port>2182</port>
</node>
<node index="3">
<host>ch203</host>
<port>2182</port>
</node>
</zookeeper-servers>
 
<macros>
<replica>ch203</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>
<!-- 其中大部分配置一样,以下的配置根据节点的IP/域名具体配置 -->
<macros>
<replica>ch203</replica>
</macros>

注意:为什么直接vim /etc/metrika.xml一个新文件,这里很难去理解,有点莫名其妙,其实如果仔细看过clickhouse的配置文件/etc/clickhouse-server/config.xml就能明白,有这么一段被注释的配置说明:

<!-- If element has 'incl' attribute, then for it's value will be used corresponding substitution from another file.
         By default, path to file with substitutions is /etc/metrika.xml. It could be changed in config in 'include_from' element.
         Values for substitutions are specified in /yandex/name_of_substitution elements in that file.
      -->

配置一个节点完成之后,将/etc/metrika.xml文件scp到其他两个节点并配置

<macros>
<replica>ch203</replica>
</macros>

对应的IP/域名

# 三台服务器依次进行一下操作

vim /etc/clickhouse-server/config.xml

<!-- 外部配置文件 -->

<include_from>/etc/metrika.xml</include_from>

5.按照上面的指导配置完成之后,在每个节点都启动clickhouse的服务,和单节点启动一样,当出现无误后,查看clickhouselog文件,如果出现以下信息,就基本没有问题

https://img2018.cnblogs.com/blog/1044602/201912/1044602-20191205190001278-712904639.png

6.进一步验证

在每个节点启动clickhouse客户端,和单节点启动完全一样,查询集群信息

select * from system.clusters;

ch201节点应该是以下信息:
https://img2018.cnblogs.com/blog/1044602/201912/1044602-20191205190020350-138756087.png

ch202节点应该是以下信息:
https://img2018.cnblogs.com/blog/1044602/201912/1044602-20191205190028812-1626408162.png

ch203节点应该是以下信息:
https://img2018.cnblogs.com/blog/1044602/201912/1044602-20191205190039066-937670195.png

可以看到红框内的信息基本相同,但是也有细微差别,红框外是之前的单节点的信息
至此,clickhouse的集群部署完全成功,生产环境针对数据量可能还需要一些额外的配置

中台的网关的日志测试:

通过DBeaver来执行ClickHouse的SQL语句:

三台服务器执行:

CREATE TABLE default.xxxx

(

    `id` UUID DEFAULT generateUUIDv4() COMMENT '主键id',

    `service_id` Nullable(String) COMMENT '微服务名',

    `instance_id` Nullable(String) COMMENT '实例ID',

    `call_time` DateTime64(3) COMMENT '调用时间',

    `call_result_content` Nullable(String) COMMENT '调用结果内容',

    `create_by` String COMMENT '创建人',

    `create_time` DateTime DEFAULT now() COMMENT '创建时间',

    INDEX create_by_idx create_by TYPE set(0) GRANULARITY 5,

    INDEX api_name_idx api_name TYPE set(0) GRANULARITY 5

)

ENGINE = MergeTree

PARTITION BY toYYYYMM(call_time)

ORDER BY call_time

SETTINGS index_granularity = 8192

其中一台执行:

CREATE TABLE xxxx_all AS xxxx ENGINE = Distributed(clickhouse_cluster, default, xxxx, rand());

通过ClickHouse-Demo的执行入库压测数据xxxx_all。

再通那台执行查询:xxxx_all。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木鱼-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值