ClickHouse安装与下载
目录
1. ClickHouse简介
1.1 ClickHouse优点:
1.2 ClickHouse缺点:
1.3 ClickHouse引擎:
1.3.1 数据库引擎
1.3.2 表引擎
2. ClickHouse下载安装
2.1 ClickHouse下载安装
2.2 ClickHouse使用
1. ClickHouse简介
ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(DBMS:Database Management System) , 主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse
ClickHouse是一个完全的列式分布式数据库管理系统(DBMS),允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展,简单方便,高可靠性,容错。它在大数据领域没有走 Hadoop 生态,而是采用 Local attached storage 作为存储,这样整个 IO 可能就没有 Hadoop 那一套的局限。它的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持 shard + replication 这种解决方案。它还提供了一些 SQL 直接接口,有比较丰富的原生 client。
1.1 ClickHouse优点:
1.灵活的MPP架构,支持线性扩展,简单方便,高可靠性
2.多服务器分布式处理数据 ,完备的DBMS系统
3.底层数据列式存储,支持压缩,优化数据存储,优化索引数据 优化底层存储
4.容错跑分快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,其可处理的数据级别已达到10亿级别
5.功能多:支持数据统计分析各种场景,支持类SQL查询,异地复制部署
6.海量数据存储,分布式运算,快速闪电的性能,几乎实时的数据分析 ,友好的SQL语法,出色的函数支持。
1.2 ClickHouse缺点:
1.不支持事务,不支持真正的删除/更新;
2.不支持高并发,官方建议qps为100,可以通过修改配置文件增加连接数,但是在服务器足够好的情况下;
3.SQL满足日常使用80%以上的语法,join写法比较特殊;最新版已支持类似SQL的join,但性能不好;
4.尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作,因为ClickHouse底层会不断的做异步的数据合并,会影响查询性能,这个在做实时数据写入的时候要尽量避开;
5.Clickhouse快是因为采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以ClickHouse不能支持高并发的使用场景,默认单查询使用CPU核数为服务器核数的一半,安装时会自动识别服务器核数,可以通过配置文件修改该参数。
1.3 ClickHouse引擎:
表引擎是 ClickHouse 的一大特色。可以说, 表引擎决定了如何存储表的数据。包括:
数据的存储方式和位置
支持哪些查询以及如何支持
并发数据访问
索引的使用
是否可以执行多线性请求
数据复制参数
引擎决定了数据的存储位置、存储结构、表的特征(是否修改操作DDL、DDL、是否支持并发操作)
1.3.1 数据库引擎
目前支持的数据库引擎有5种:
Ordinary:默认引擎,在绝大多数情况下我们都会使用默认引擎,使用时无须刻意声明。在此数据库下可以使用任意类型的表引擎。
Dictionary:字典引擎,此类数据库会自动为所有数据字典创建它们的数据表
Memory:内存引擎,用于存放临时数据。此类数据库下的数据表只会停留在内存中,不会涉及任何磁盘操作,当服务重启后数据会被清除
Lazy:日志引擎,此类数据库下只能使用Log系列的表引擎
MySQL:MySQL引擎,将远程的MySQL服务器中的表映射到ClickHouse中,常用语数据的合并。
MaterializeMySQL:MySQL数据同步;将MySQL数据全量或增量方式同步到clickhouse中,解决mysql服务并发访问压力过大的问题。
1.3.2 表引擎
2. ClickHouse下载安装
2.1 ClickHouse下载安装
官方下载地址:https://packages.clickhouse.com/tgz/stable
阿里云下载地址:https://mirrors.aliyun.com/clickhouse/tgz/stable
一共需要下载4个文件:
clickhouse-client-22.2.2.1.tgz
clickhouse-common-static-22.2.2.1.tgz
clickhouse-common-static-dbg-22.2.2.1.tgz
clickhouse-server-22.2.2.1.tgz
将下载后的四个安装文件上传到服务器,这里是上传到linux的/opt/software/下。
依次将这四个安装包解压,并且每解压一个,执行一下解压文件夹下的install下的doinst.sh脚本。
1. clickhouse-common-static-22.2.2.1.tgz
tar -zxvf /opt/software/clickhouse-common-static-22.2.2.1.tgz
./clickhouse-common-static-22.2.2.1/install/doinst.sh
2. clickhouse-common-static-dbg-22.2.2.1.tgz
tar -zxvf /opt/software/clickhouse-common-static-dbg-22.2.2.1.tgz
./clickhouse-common-static-dbg-22.2.2.1/install/doinst.sh
3. clickhouse-server-22.2.2.1.tgz
注意:在运行doinst.sh时,clickhouse会默认创建一个default的用户,让你设置密码,不设置密码可以按回车。
tar -zxvf /opt/software/clickhouse-server-22.2.2.1.tgz
./clickhouse-server-22.2.2.1/install/doinst.sh
4. clickhouse-client-22.2.2.1.tgz
tar -zxvf /opt/software/clickhouse-client-22.2.2.1.tgz
./clickhouse-client-22.2.2.1/install/doinst.sh
#查看 clickhouse 命令
clickhouse --help
#启动clickhouse服务
clickhouse start
启动结果:
2.2 ClickHouse使用
连接clickhouse
clickhouse-client -u default --password 199511
连接成功结果
clickhouse相关目录
# 命令目录
/usr/bin
ll |grep clickhouse
-------------------------------------------
# 配置文件目录
cd /etc/clickhouse-server/
-------------------------------------------
# 日志目录
cd /var/log/clickhouse-server/
-------------------------------------------
# 数据文件目录
cd /var/lib/clickhouse/
允许远程访问
clickhouse 默认不允许远程访问,需要修改配置文件:
cd /etc/clickhouse-server/
vi config.xml
注意:只需要把 <listen_host>::</listen_host> 这一个的注释放开即可。
重启clickhouse服务:
clickhouse restart
在浏览器输入服务器ip:8123验证一下,显示OK即代表可远程连接。
使用客户端连接clickhouse
第一次连接需要安装驱动,根据提示操作即可安装成功。
————————————————
clickhouse 安装
clickhouse中文文档地址:
https://clickhouse.com/docs/zh/getting-started/tutorial/
1、centos安装部署
采用tgz的方式安装
官网上安装部署有比较详细的说明,具体文档地址如下,支持deb、rpm、tgz、docker等安装部署方式
https://clickhouse.com/docs/zh/getting-started/install/
tgz包下载地址:
https://packages.clickhouse.com/tgz/
https://github.com/ClickHouse/ClickHouse/releases
下载的版本是22.3.2.2,以此版本为例,tgz包上传到同一个目录下,执行以下操作
1 2 3 4 5 6 7 8 9 10 11 |
|
tar -xzvf clickhouse-common-static-22.3.2.2.tgz
tar -xzvf clickhouse-common-static-dbg-22.3.2.2.tgz
tar -xzvf clickhouse-server-22.3.2.2.tgz
tar -xzvf clickhouse-client-22.3.2.2.tgz
./clickhouse-common-static-22.3.2.2/install/doinst.sh
./clickhouse-common-static-dbg-22.3.2.2/install/doinst.sh
./clickhouse-server-22.3.2.2/install/doinst.sh
[root@clickhouse2 opt]# ./clickhouse-server-22.3.2.2/install/doinst.sh
ClickHouse binary is already located at /usr/bin/clickhouse
Symlink /usr/bin/clickhouse-server already exists but it points to /opt/clickhouse. Will replace the old symlink to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-server to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-client to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-local to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-benchmark to /usr/bin/clickhouse.
Symlink /usr/bin/clickhouse-copier already exists but it points to /opt/clickhouse. Will replace the old symlink to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-copier to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-obfuscator to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-git-import to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-compressor to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-format to /usr/bin/clickhouse.
Symlink /usr/bin/clickhouse-extract-from-config already exists but it points to /opt/clickhouse. Will replace the old symlink to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-extract-from-config to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-keeper to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-keeper-converter to /usr/bin/clickhouse.
Creating clickhouse group if it does not exist.
groupadd -r clickhouse
Creating clickhouse user if it does not exist.
useradd -r --shell /bin/false --home-dir /nonexistent -g clickhouse clickhouse
Will set ulimits for clickhouse user in /etc/security/limits.d/clickhouse.conf.
Creating config directory /etc/clickhouse-server/config.d that is used for tweaks of main server configuration.
Creating config directory /etc/clickhouse-server/users.d that is used for tweaks of users configuration.
Config file /etc/clickhouse-server/config.xml already exists, will keep it and extract path info from it.
/etc/clickhouse-server/config.xml has /var/lib/clickhouse/ as data path.
/etc/clickhouse-server/config.xml has /var/log/clickhouse-server/ as log path.
Users config file /etc/clickhouse-server/users.xml already exists, will keep it and extract users info from it.
Creating log directory /var/log/clickhouse-server/.
Creating data directory /var/lib/clickhouse/.
Creating pid directory /var/run/clickhouse-server.
chown -R clickhouse:clickhouse '/var/log/clickhouse-server/'
chown -R clickhouse:clickhouse '/var/run/clickhouse-server'
chown clickhouse:clickhouse '/var/lib/clickhouse/'
groupadd -r clickhouse-bridge
useradd -r --shell /bin/false --home-dir /nonexistent -g clickhouse-bridge clickhouse-bridge
chown -R clickhouse-bridge:clickhouse-bridge '/usr/bin/clickhouse-odbc-bridge'
chown -R clickhouse-bridge:clickhouse-bridge '/usr/bin/clickhouse-library-bridge'
Enter password for default user:
Password for default user is saved in file /etc/clickhouse-server/users.d/default-password.xml.
Setting capabilities for clickhouse binary. This is optional.
Cannot set 'net_admin' or 'ipc_lock' or 'sys_nice' capability for clickhouse binary. This is optional. Taskstats accounting will be disabled. To enable taskstats accounting you may add the required capability later manually.
Allow server to accept connections from the network (default is localhost only), [y/N]: y
The choice is saved in file /etc/clickhouse-server/config.d/listen.xml.
chown -R clickhouse:clickhouse '/etc/clickhouse-server'
ClickHouse has been successfully installed.
Start clickhouse-server with:
sudo clickhouse start
Start clickhouse-client with:
clickhouse-client --password
Created symlink from /etc/systemd/system/multi-user.target.wants/clickhouse-server.service to /etc/systemd/system/clickhouse-server.service.
./clickhouse-client-22.3.2.2/install/doinst.sh
2、启动server
关于tgz安装的时候这条命令
sudo /etc/init.d/clickhouse-server start 或: sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml 下面这个会有执行日志,如果遇到权限问题,执行相关的权限命令: 如:sudo chown -R clickhouse:clickhouse /usr/lib
查看是否启动成功
ps -ef|grep clickhouse
命令行登录(默认没有密码)
$ clickhouse-client
3、修改密码
1 |
|
注:只读文件,退出时命令: wq!
重启服务: systemctl restart clickhouse-server 密码登录: clickhouse-client --password xxxx
clickhouse-client --password ecs****
登录:
默认端口 9000
4、远程访问
vim /etc/clickhouse-server/config.xml
之后重启clickhouse-server
systemctl restart clickhouse-server
防火墙: 开放 22端口: firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=8123/tcp --permanent
重新载入一下: firewall-cmd --reload
5、修改default 用户权限:
修改default 为管理员用户:users.xml (/etc/clickhouse-server/users.xml)下面: vim /etc/clickhouse-server/users.xml
里面 将<access_management>1</access_management>注释去掉,改为管理员权限,重启
systemctl restart clickhouse-server
6、修改数据目录
配置文件
vim /etc/clickhouse-server/config.xml
后期修改方法:
clickhouse默认数据目录在 /var/lib/clickhouse, 一般分区空间有限,需要修改。
只要停止数据库之后移走该目录再软连接回原地址,即可不修改config.xml实现对数据目录的修改。
#先停库 sudo clickhouse stop sudo mkdir -p /data01/ch/ #权限一定要修改否则没权限就启动不了 sudo chown -R clickhouse:clickhouse /data01/ch sudo mv /var/lib/clickhouse /data01/ch/ #建立软连接 sudo ln -s /data01/ch/clickhouse /var/lib/clickhouse sudo chown -R clickhouse:clickhouse /var/lib/clickhouse sudo ls -l /var/lib/clickhouse #启动 sudo clickhouse start
如果启动不了,一般都是目录的权限问题,可以根据具体的报错日志来判断是哪个目录。
重启生效 systemctl restart clickhouse-server
6.3,启动服务
启动服务之前,修改config.xml,修改数据的保存地址
<!-- <path>/var/lib/clickhouse/</path> -->
<path>/u01/chbase/data/</path>
<!-- <tmp_path>/var/lib/clickhouse/tmp/</tmp_path> -->
<tmp_path>/u01/chbase/data/tmp/</tmp_path>
<!-- <user_files_path>/var/lib/clickhouse/user_files/</user_files_path> -->
<user_files_path>/u01/chbase/data/user_files/</user_files_path>
正是由于修改了路径,所以这个目录的 OWNER 设为 clickhouse 用户
mkdir -p /u01/chbase/data/
mkdir -p /u01/chbase/data/tmp
mkdir -p /u01/chbase/data/user_files
chmod -R 775 /u01/
chown -R clickhouse:clickhouse /u01/chbase/data/
clickhouse用户由安装 程序自动创建,启动脚本会基于此用户启动服务
启动有两种方式:首先是基于默认配置的启动,命令如下
cd /usr/bin
service clickhouse-server start
7、创建用户和角色
创建角色及用户
登录client:
clickhouse-client -m --user test--password xxxxx(密码)
创建角色
创建一个角色acaidb_rw, 该角色针对数据库acaidb具备读写权限。 CREATE ROLE acaidb_rw; GRANT SELECT, INSERT, ALTER UPDATE, ALTER DELETE ON acaidb.* TO acaidb_rw; 如果让一个角色只允许select,不允许修改数据,下面的语句就可以。 CREATE ROLE acaidb_read; GRANT SELECT ON acaidb.* TO acaidb_read; 创建普通账户并赋权 我们分别创建账户reader和writer,然后把只读角色ro分配给reader,把读写角色分配给writer。这样,reader拥有只读权限,writer拥有读写权限。 新建一个数据库用户acai,并设置密码(将下文的<你的密码>替换)。并给用户acai赋予读写权限角色acaidb_rw 。 CREATE USER IF NOT EXISTS acai IDENTIFIED WITH sha256_password BY '<你的密码>'; 如: CREATE USER IF NOT EXISTS testuser IDENTIFIED WITH PLAINTEXT_PASSWORD BY '12222' GRANT acaidb_rw TO acai; 使用下列命令访问clickhouse数据,show databases得到acaidb,说明我们成功了。因为acai用户只能访问acaidb。 # clickhouse-client -m -u acai --password '<你的密码>' --query 'show databases;'
创建记录如下:
CREATE ROLE ehrdsrw; CREATE USER IF NOT EXISTS ehrds IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'u_2024' GRANT ehrdsrw TO ehrds ; create database if not exists ehrdsdb; GRANT SELECT, INSERT, ALTER UPDATE, ALTER DELETE ON ehrdsdb.* TO ehrdsrw; GRANT ALL ON ehrdsdb.* TO ehrds;
8、web浏览器访问:
前面两步做完后,可以通过 ip:8123/play 访问到clickhouse界面,然后再password处输入密码即可
1、密码问题解决:
users.xml 里面的password 不生效,删除配置文件 rm -f /etc/clickhouse-server/users.d/default-password.xml 重启
2、更全面的部署方式:
https://zhuanlan.zhihu.com/p/522431332