ClickHouse安装文档

1.系统要求

ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。

1
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

2.系统结构

3.安装

3.1 单机安装

3.1.1 yum安装

1
2
3
4
5
6
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.

3.1.2 tar安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
LATEST_VERSION=$(curl -s https://packages.clickhouse.com/tgz/stable/ | \
grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -V -r | head -n 1)
export LATEST_VERSION

case $(uname -m) in
x86_64) ARCH=amd64 ;;
aarch64) ARCH=arm64 ;;
*) echo "Unknown architecture $(uname -m)"; exit 1 ;;
esac

for PKG in clickhouse-common-static clickhouse-common-static-dbg clickhouse-server clickhouse-client
do
curl -fO "https://packages.clickhouse.com/tgz/stable/$PKG-$LATEST_VERSION-${ARCH}.tgz" \
|| curl -fO "https://packages.clickhouse.com/tgz/stable/$PKG-$LATEST_VERSION.tgz"
done

exit 0

tar -xzvf "clickhouse-common-static-$LATEST_VERSION-${ARCH}.tgz" \
|| tar -xzvf "clickhouse-common-static-$LATEST_VERSION.tgz"
sudo "clickhouse-common-static-$LATEST_VERSION/install/doinst.sh"

tar -xzvf "clickhouse-common-static-dbg-$LATEST_VERSION-${ARCH}.tgz" \
|| tar -xzvf "clickhouse-common-static-dbg-$LATEST_VERSION.tgz"
sudo "clickhouse-common-static-dbg-$LATEST_VERSION/install/doinst.sh"

tar -xzvf "clickhouse-server-$LATEST_VERSION-${ARCH}.tgz" \
|| tar -xzvf "clickhouse-server-$LATEST_VERSION.tgz"
sudo "clickhouse-server-$LATEST_VERSION/install/doinst.sh"
sudo /etc/init.d/clickhouse-server start

tar -xzvf "clickhouse-client-$LATEST_VERSION-${ARCH}.tgz" \
|| tar -xzvf "clickhouse-client-$LATEST_VERSION.tgz"
sudo "clickhouse-client-$LATEST_VERSION/install/doinst.sh"

3.1.3.配置

  • 外网访问

  • 用户名密码

    3.2 集群安装

    3.2.1 zookeeper安装

  • 注线上需采用非docker安装

    1
    2
    3
    4
    docker stop zookeeper
    docker rm zookeeper
    docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:3.5
    docker update zookeeper --restart=always
  • 配置 zkEnv.sh

    1
    2
    ##zkEnv.sh 文件配置
    ZOO_LOG4J_PROP="ERROR,CONSOLE"
  • 配置zoo.cfg

    1
    2
    3
    4
    5
    6
    ## 配置自动清理
    autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。
    autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。

    autopurge.snapRetainCount=20
    autopurge.purgeInterval=48

    3.2.2 clickhouse安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 下载安装
    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

    # 关闭防火墙
    systemctl stop firewalld.service
    systemctl status firewalld.service

    3.2.3 集群配置

    机器 分片 副本
    10.41.1.199 1 1
    10.41.0.114 1 2
    10.41.0.158 2 1
  • user.xml(配置用户)

  • config.xml(配置集群)

  • 修改存储路径

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #先停库
    systemctl stop clickhouse-server.service

    mkdir /data1/clickhouse/
    chown -R clickhouse:clickhouse /data1/clickhouse/
    yes | cp -rf /var/lib/clickhouse /data1/clickhouse/

    systemctl restart clickhouse-server.service

    systemctl status clickhouse-server.service

    # 备注 采用 service clickhouse-server stop/restart 可能出错

  • 需修改的配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!-- 删除较大的数据 -->
    <max_table_size_to_drop>0</max_table_size_to_drop>

    <!-- 插入限制 -->
    <merge_tree>
    <parts_to_delay_insert>600</parts_to_delay_insert>
    <parts_to_throw_insert>600</parts_to_throw_insert>
    <max_delay_to_insert>2</max_delay_to_insert>
    <max_suspicious_broken_parts>5</max_suspicious_broken_parts>
    </merge_tree>


    3.3.操作台

  • 数据库

    • 使用mysql5.7,创建数据库:clickvisual
      1
      2
      3
      4
      5
      6
      docker stop mysql3336
      docker rm mysql3336
      docker run --privileged=true --name mysql3336 -p 3336:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.19
      docker update mysql3336 --restart=always


  • 应用

    1
    2
    3
    wget https://github.com/clickvisual/clickvisual/releases/download/v0.3.2-rc1/clickvisual-v0.3.2-rc1-linux-amd64.tar.gz

    tar -xzvf clickvisual-v0.3.2-rc1-linux-amd64.tar.gz
  • 修改配置

    1
    2
    3
    dsn = "root:root@tcp(127.0.0.1:3336)/clickvisual?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=True&loc=Local&readTimeout=1s&timeout=1s&writeTimeout=3s"
    rootURL = "http://localhost:19001"

     [https://clickvisual.gocn.vip/clickvisual/02install/install-introduce.html](https://clickvisual.gocn.vip/clickvisual/02install/install-introduce.html)
    

5.使用

5.1 本地表测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CREATE DATABASE IF NOT EXISTS devloglocal


CREATE TABLE IF NOT EXISTS devloglocal.applog
(

`timestamp` DateTime,
`observedTimestamp` DateTime,
`traceId` String,
`spanId` String,
`severityText` String,
`severityNumber` Int32,
`instrumentationScope` String,
`body` String,
`resource_names` Array(String),
`resource_values` Array(String),
`attribute_names` Array(String),
`attribute_values` Array(String)
)
ENGINE = MergeTree
PARTITION BY timestamp
ORDER BY timestamp
SETTINGS index_granularity = 8192;


INSERT INTO devloglocal.applog
(`timestamp`, observedTimestamp, traceId, spanId, severityText, severityNumber, instrumentationScope, body, resource_names, resource_values, attribute_names, attribute_values)
VALUES(1658217082, 1658217082, '3232', '3232', 'INFO ', 9, 'org.example.logdemo.LogTest', ' test', ['instance','service','namespace','region'], ['10.3.12.55','app','biz','idc'], ['app','session'], ['3232','32']);


SELECT * FROM devloglocal.applog limit 0, 10

5.2 集群测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
CREATE DATABASE IF NOT EXISTS devlog on cluster enic_cluster

DROP DATABASE devloglocal on cluster enic_cluster

CREATE TABLE IF NOT EXISTS devlog.applogrep on cluster enic_cluster
(

`timestamp` DateTime,
`observedTimestamp` DateTime,
`traceId` String,
`spanId` String,
`severityText` String,
`severityNumber` Int32,
`instrumentationScope` String,
`body` String,
`resource_names` Array(String),
`resource_values` Array(String),
`attribute_names` Array(String),
`attribute_values` Array(String)
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/devlog/applogrep', '{replica}')
PARTITION BY timestamp
ORDER BY timestamp
SETTINGS index_granularity = 8192;

create table devlog.applogrep_cluster on cluster enic_cluster
(
`timestamp` DateTime,
`observedTimestamp` DateTime,
`traceId` String,
`spanId` String,
`severityText` String,
`severityNumber` Int32,
`instrumentationScope` String,
`body` String,
`resource_names` Array(String),
`resource_values` Array(String),
`attribute_names` Array(String),
`attribute_values` Array(String)
)engine = Distributed(enic_cluster, devlog, applogrep, hiveHash(traceId));

SELECT `timestamp`, observedTimestamp, traceId, spanId, severityText, severityNumber, instrumentationScope, body, resource_names, resource_values, attribute_names, attribute_values
FROM devlog.applogrep_cluster;

5.3 其他命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
create table devlog.applog_cluster on cluster enic_cluster
(
`timestamp` DateTime,
`observedTimestamp` DateTime,
`traceId` String,
`spanId` String,
`severityText` String,
`severityNumber` Int32,
`instrumentationScope` String,
`body` String,
`resource_names` Array(String),
`resource_values` Array(String),
`attribute_names` Array(String),
`attribute_values` Array(String)
)engine = Distributed(enic_cluster, devlog, applog, hiveHash(traceId));

Distributed(集群名称,库名,本地表名,分片键)

show tables;




SELECT COUNT(*) FROM devlog.applog_cluster;


select * from system.clusters

6.官方文档