[原创]手把手教你搭建单机clickhouse开发环境

手把手教你搭建单机clickhouse开发环境

Clickhouse是一款非常优秀的高性能统计数据库。近些日子,由于研发工作需要,引入了clickhouse作为实时统计数据库。为了便于和研发团队一起分析问题,在本机搭建了clickhouse环境。过程中,还是不可避免地踩到了一些坑,所以就把这些解决过程都记录了下来,以免有类似问题能够快速定位和解决。

一、准备运行环境

我的工作电脑是华为的MateBookD,处理器i7-8550U 2GHz,内存16GB

操作系统为随机带的Windows10家庭中文版。

选择用虚拟机来搭建clickhouse,虚拟机配置为6.5G内存,两块硬盘各50GB,分配了2个4c的处理器。操作系统CentOS Linux release 8.3.2011

二、安装clickhouse

这一部分重点参考官方手册:https://clickhouse.tech/#quick-start

1、 // 安装管理repository及扩展包的工具yum

sudo yum install yum-utils

2、// 安装clickhouse-key,添加clickhouse.repo源

sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG

sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.repo

3、 // 安装clickhouse-server和clickhouse-client组件

sudo yum install clickhouse-server clickhouse-client

4、// 设置clickhouse-server随操作系统自动启动

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

5、// 查看clickhouse-server运行状态

service clickhouse-server status

三、本机用clickhouse-client连接到clickhouse-server

首先尝试的是本机访问,通过以下命令:

clickhouse-client 报如下错误。

ClickHouse client version 20.12.5.14 (official build).

Connecting to localhost:9000 as user default.

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

查看日志发现监听错误,查看配置文件。

vim /etc/clickhouse-server/config.xml,

将<listen_host>::</listen_host>取消注释,保存退出。

重启服务:service clickhouse-server restart,再次运行clickhouse-client连接成功。

四、用python连接到clickhouse-server

先安装python3(python2不支持该驱动):yum install -y python3 python3-devel

用pip3安装clickhouse驱动,pip3 install clickhouse-driver

进入python后,3步访问clickhouse-server:

1、引入该驱动

from clickhouse_driver import Client

2、连接到clickhouse-server

client = Client(host='IP地址', database='default', user='default',password='')

3、执行clickhouse查询语句

client.execute('SHOW DATABASES')

五、远程用clickhouse-client连接到clickhouse-server

用的是windows的linux子系统ubuntu(参考本公众号另一篇文章《用windows10家庭版构建基础的开发环境》)

安装clickhouse-client,然后运行clickhouse-client -h 虚拟机IP命令,报timeout错误,

Code: 209. DB::NetException: Timeout: connect timed out:

先ping虚拟机ip访问正常,然后查看防火墙端口:

firewall-cmd --list-ports 运行结果为空

增加端口远程访问映射,firewall-cmd --zone=public --add-port=9000/tcp --permanent

重启防火墙生效,firewall-cmd --reload

运行clickhouse-client -h 虚拟机IP成功。

六、远程用dbeaver连接到clickhouse-server,我用的dbeaver版本是直接从官网下载的ce版本,Version 7.3.0.20201129213。

1、新建数据库连接,选择clickhouse数据库类型下一步。

2、输入连接信息,如下图点击Test connection,

“1 ”Host:可以输入clickhouse所在服务器地址,端口如果没改过就用8123即可。输入“2 ”schema数据库名称[可不填],输入“3 ”username默认是default,输入“4 ”密码[如未设置则可不填写]。

点击“6 ”Test connection报超时,如第五步,需要把8123端口也加到防火墙访问映射列表上。firewall-cmd --zone=public --add-port=8123/tcp --permanent

重启防火墙生效,firewall-cmd --reload

仍报错无法连接,重点检查驱动设置,点击“5”Edit Driver Settings按照下图选择“Add  Artifact”设置驱动信息。驱动以Artifact方式注册,

groupid 用ru.yandex.clickhouse,

Artifact Id用clickhouse-jdbc

Classifier空,

Version:release

然后下载驱动,测试连接成功。这里边比较容易出问题的还是驱动下载,如果出错,就重新加载一下Artifact。

七、给clickhouse-server的默认用户设置一个密码

分3步,1、随机生成sha256密钥(为安全不建议明文)

明文:PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"

密文:echo -n "$PASSWORD" | sha256sum | tr -d '-'

2、vim /etc/clickhouse-server/users.xml

找到“ <password></password>”替换为如下:

<password_sha256_hex>[密文]</password_sha256_hex>

目前为止,基本的clickhouse开发环境就建立起来了。

通用类似以下命令,可以运行编写好的sql文件

clickhouse-client -h [ip address] --password [password] --multiquery <  [filename].sql

感谢大家的阅读,后续一些容易出错的地方,我也会持续总结、分享出来。

(0)

相关推荐