clickhouse 離線/在線 安裝和java通過jdbc鏈接


 檢查

需要確保是否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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM