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

发布于 6 个月前 作者 strcld 3481 次浏览 来自 实战经验

手把手教你搭建单机clickhouse开发环境 Clickhouse是一款非常优秀的高性能统计数据库。近些日子,由于研发工作需要,引入了clickhouse作为实时统计数据库。为了便于和研发团队一起分析问题,在本机搭建了clickhouse环境。过程中,还是不可避免地踩到了一些坑,所以就把这些解决过程都记录了下来,以免有类似问题能够快速定位和解决。 一、准备运行环境 我的工作电脑是华为的MateBookD,处理器i7-8550U 2GHz,内存16GB 操作系统为随机带的Windows10家庭中文版。 选择用虚拟机来搭建clickhouse,虚拟机配置为6.5G内存,两块硬盘各50GB,分配了2个4c的处理器。操作系统CentOS Linux release 8.3.2011 图片1.png 二、安装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-******* --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运行状态 ******* clickhouse-server status 图片2.png 三、本机用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, 图片3.png 将<listen_host>::</listen_host>取消注释,保存退出。 重启服务:******* 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数据库类型下一步。 图片4.png 2、输入连接信息,如下图点击Test connection, 图片5.png “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。 图片6.png 七、给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> 图片7.png 目前为止,基本的clickhouse开发环境就建立起来了。 通用类似以下命令,可以运行编写好的sql文件  clickhouse-client -h [ip address] --password [password] --multiquery <  [filename].sql    感谢大家的阅读,后续一些容易出错的地方,我也会持续总结、分享出来。

1 回复

我以为是开发环境,原来是运行环境啊,其实直接用docker镜像,搭建个运行环境超快的,除了下载镜像花点时间外,不到1分钟就能用上了。

回到顶部