檢查
需要確保是否x86_64處理器構架、Linux並且支持SSE 4.2指令集
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
官網給的是Ubuntu/Debian的安裝方式:如下
sudo apt-get install dirmngr sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4 echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list sudo apt-get update sudo apt-get install -y clickhouse-server clickhouse-client sudo service clickhouse-server start clickhouse-client
centos的安裝
參考:https://github.com/Altinity/clickhouse-rpm-install
#step 1
#先下載安裝腳本
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
#可以指定系統版本
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo os=centos dist=7 bash
#這里注意,我當時指定錯了系統版本,導致找不到libstdc++的依賴包,汗顏!!
#step 2
#查看庫里clickhouse相關的包
sudo yum list 'clickhouse*'
#step 3
#安裝核心的服務和客戶端
sudo yum install -y clickhouse-server clickhouse-client
#step 4
#啟動服務
service clickhouse-server start
#step 5
#啟動客戶端
clickhouse-client
離線安裝
離線安裝包下載地址http://repo.yandex.ru/clickhouse/
另一個下載地址https://packagecloud.io/altinity/clickhouse
所以安裝順序如下: clickhouse-common-static clickhouse-server clickhouse-client 安裝完后啟動 #啟動服務 service clickhouse-server start #啟動客戶端 clickhouse-client 或者clickhouse-client -h127.0.0.1 進入命令行后show databases;看到如下,說明安裝成功 SHOW DATABASES ┌─ name ─┐ │ default │ │ system │ └── —— ──┘
通過java JDBC鏈接Clickhouse
maven 依賴
<dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.1.54</version> </dependency>
java代碼
JDBC Driver Class: ru.yandex.clickhouse.ClickHouseDriver
應為我沒有配置賬號密碼,所以直接給個url就可以創建鏈接,代碼如下:
public static Connection getClickHouseConnection() throws SQLException { String url="jdbc:clickhouse://ip:8123/dataBaseName"; ClickHouseDataSource dataSou=new ClickHouseDataSource(url);//這是官方給的創建方式 return dataSou.getConnection();
//return dataSou.getConnection(username, password);
}
PS:這里可以不用Class.forName()去DriverManager注冊初始化drive,感興趣的同學可以研究一下java類加載機制和jdk1.6以后引入的service provider概念。
遠程連接配置項
注意:vi /etc/clickhouse-server/config.xml中的如下配置項
類似mysql中的遠程連接權限,放開ipv4連接打開注釋
<listen_host>0.0.0.0</listen_host>
<!-- 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: --> <!-- <listen_host>::1</listen_host> <listen_host>127.0.0.1</listen_host> -->
ps:我還發現個神奇的事情
配置上面遠程連接后,本機用 clickhouse-client 或者 clickhouse-client -h localhost 連接本機服務,他是拒絕的
ClickHouse client version 19.9.2.4 (official build). Connecting to localhost:9000 as user default. Code: 210. DB::NetException: Connection refused (localhost:9000, ::1)
但是用 clickhouse-client -h 本機ip 或者 clickhouse-client -h 127.0.0.1 是可以連接的。(clickhouse版本如上 version 19.9.2.4)
備注:系統 /etc/hosts 內是有 127.0.0.1 到 localhost的映射的。
附:Clickhouse官方文檔 https://clickhouse.yandex/docs/zh/