clickhouse 部署&调试

本文详细介绍了ClickHouse的安装步骤及解决安装过程中遇到的问题,包括端口冲突的处理方法、远程访问配置及Python访问示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clickhouse安装

clickhouse的安装很简单,从官网下载几个包,然后rpm 或者yum 就可以安装。

我这里遇到的问题是安装完后,运行client的时候,显示server连接到的是0.125.124,并非是client的20.8.3.18这个版本,不一致。

运行sql也会报错:

Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Exception: Too large string size. (version 20.8.3.18

原因:

9000端口被占用:

[root@t3-tkias-0025-app02 clickhouse_rpm]# netstat -tunlp|grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN      1021/docker-proxy

解决:

修改/etc/clickhouse-server/config.xml,将tcp的端口从9000改为其他值,比如6000。

然后启动客户端的时候指定端口6000

 clickhouse-client --port 6000

运行成功:

 

配置远程访问端口

在/etc/clickhouse-servcer/config.xml中有一些已经注释掉的配置。

    <!-- Listen specified host. use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere. -->
    <!--<listen_host>::</listen_host>       -->
    <!-- Same for hosts with disabled ipv6: -->
    <!-- <listen_host>0.0.0.0</listen_host> -->

    <!-- Default values - try listen localhost on ipv4 and ipv6: -->
    <!--
 
    -->
    <!-- Don't exit if ipv6 or ipv4 unavailable, but listen_host with this protocol specified -->
    <!-- <listen_try>0</listen_try> -->

1) 如果想限制为本地访问,则去掉下面两行的注释

  <listen_host>::1</listen_host>
  <listen_host>127.0.0.1</listen_host>

验证:lsof -i :8123

看到确实是只监听localhost的8123端口。

 

2) 如果想监听远程的连接,则去掉下面这一行的注释:

<listen_host>::</listen_host>

这个表示监听远程的ipv4和ipv6的访问。

验证:lsof -i :8123

 

注意,两者不能都注释掉,否则clickhouse-server无法启动。

修改完后:

service clickhouse-server restart

重启启动应用。

ps: 我是在docker中运行了python,来访问clickhouse,之前一直无法连接上,就是因为我开启的是localhost。切换成远程后,容器内的python就可以顺利访问clickhouse数据库了。

另外,用python程序访问时需要用tcp的端口,默认是9000,如果修改过,就用修改过的,而不能用8123,程序如下:

from clickhouse_driver import Client, connect
host = '10.154.76.25'
database = 'default'
user = 'xzh'
password = '123'
port = '6000'
client = Client(host = host, database = database, user = user, password = password, port = port, send_receive_timeout=20)
sql = 'select 1'
try:    
    print(client.execute(sql))
except Exception as e:
    print(str(e))

 

离线安装DBeaver

公司电脑用的是内网,无法连接外网自动下载驱动。

所以用的方法是先找了一台能连外网的电脑,然后把下载的驱动放到了“离线电脑”的如下目录:

注意,这个文件夹是窗口->首选项->驱动->本地文件夹里指定的位置,也就是说驱动会从这里去找。

 

 

然后就一切顺利了:

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值