1. 程式人生 > >ClickHouse學習系列之一【安裝說明】

ClickHouse學習系列之一【安裝說明】

背景

      最近花了些時間看了下ClickHouse文件,發現它在OLAP方面表現很優異,而且相對也比較輕量和簡單,所以準備入門瞭解下該資料庫系統。按照習慣第一步先安裝,本文對其使用者許可權管理方面進行梳理說明。

說明

      ClickHouse是一個快速的開源資料庫管理系統,它是面向列的。工作速度比傳統方法快100-1000倍,ClickHouse的效能超過了目前市場上可比的面向列的DBMS。 每秒鐘每臺伺服器每秒處理數億至十億多行和數十千兆位元組的資料。

  先看ClickHouse官網怎麼介紹它的一些特性:

  1. 快速:ClickHouse會充分利用所有可用的硬體,以儘可能快地處理每個查詢。單個查詢的峰值處理效能超過每秒2 TB(解壓縮後,僅使用的列)。在分散式設定中,讀取是在健康副本之間自動平衡的,以避免增加延遲。
  2. 容錯:ClickHouse支援多主機非同步複製,並且可以跨多個數據中心進行部署。所有節點都相等,這可以避免出現單點故障。單個節點或整個資料中心的停機時間不會影響系統的讀寫可用性。
  3. 可伸縮:ClickHouse可以在垂直和水平方向上很好地縮放。 ClickHouse易於調整以在具有數百或數千個節點的群集上或在單個伺服器上,甚至在小型虛擬機器上執行。當前,每個單節點安裝的資料量超過數萬億行或數百兆兆位元組。
  4. 易用:ClickHouse簡單易用,開箱即用。它簡化了所有資料處理:將所有結構化資料吸收到系統中,並且立即可用於構建報告。 SQL允許表達期望的結果,而無需涉及某些DBMS中可以找到的任何自定義非標準API。

充分利用硬體:ClickHouse與具有相同的可用I/O吞吐量和CPU容量的傳統的面向行的系統相比,ClickHouse處理典型的分析查詢要快兩到三個數量級。 列式儲存格式允許在RAM中容納更多熱資料,從而縮短了響應時間。

  1. 提高CPU效率:向量化查詢執行涉及相關的SIMD處理器指令和執行時程式碼生成。 處理列中的資料會提高CPU行快取的命中率。
  2. 優化磁碟訪問:ClickHouse可以最大程度地減少範圍查詢的次數,從而提高了使用旋轉磁碟驅動器的效率,因為它可以保持連續儲存資料。
  3. 最小化資料傳輸:ClickHouse使公司無需使用專門針對高效能運算的專用網路即可管理其資料。

功能豐富:

  1. 友好的SQL:ClickHouse具有使用者友好的SQL查詢,並具有許多內建分析功能。除了大多數DBMS中可以找到的常用功能外,ClickHouse還提供了許多特定的功能。
  2. 高效管理非規範化資料:ClickHouse的面向列性質允許每個表具有數百或數千列,而不會減慢SELECT查詢的速度。通過利用廣泛的資料組織選項,例如陣列,元組和巢狀資料結構,可以打包更多資料。
  3. 連線分散式或共置資料:ClickHouse提供了用於聯接表的各種選項。聯接既可以是本地群集,也可以訪問儲存在外部系統中的資料。還有一個外部字典支援,它提供了另一種更簡單的語法,用於從外部源訪問資料。
  4. 近似查詢處理:使用者可以控制結果準確性和查詢執行時間之間的權衡,這在處理多個TB或PB的資料時非常方便。 ClickHouse還提供了概率資料結構,可快速有效地計算基數和分位數

可靠:

  1. ClickHouse一直在管理PB級資料,這些資料為俄羅斯領先的搜尋提供商,歐洲最大的IT公司之一Yandex的大量高負載大眾受眾服務提供服務。自2012年以來,ClickHouse一直為公司的網路分析服務,比較電子商務平臺,公共電子郵件服務,線上廣告平臺,商業智慧工具和基礎架構監視提供強大的資料庫管理。
  2. ClickHouse可以配置為位於獨立節點上的純分散式系統,而沒有任何單點故障。
  3. 軟體和硬體故障或配置錯誤不會導致資料丟失。 ClickHouse不會刪除“損壞的”資料,而是將其儲存或詢問您在啟動前該怎麼做。每次對磁碟或網路進行讀取或寫入之前,所有資料均經過校驗和。幾乎不可能意外刪除資料,因為即使存在人為錯誤,也有保護措施。
  4. ClickHouse提供了對查詢複雜性和資源使用情況的靈活限制,可以通過設定對其進行微調。可以同時為多個高優先順序低延遲請求和一些具有後臺優先順序的長時間執行的查詢提供服務。

何時使用ClickHouse:

  用於分析結構良好且不可變的事件或日誌流,建議將每個此類流放入具有預連線維度的單個寬表中。

何時不使用ClickHouse:

  不適合事務性工作負載(OLTP)、高價值的鍵值請求、Blob或文件儲存。

外部介紹:

  • Percona公司怎麼看ClickHouse:
    ClickHouse: New Open Source Columnar Database
    Column Store Database Benchmarks

  在Percona的基準測試中,得出的結論是:ClickHouse在此基準測試中絕對是贏家:與MariaDB ColumnStore和Apache Spark相比,它顯示出更好的效能(> 10倍)和更好的壓縮。 如果您正在尋找最佳效能和壓縮率,則ClickHouse看起來非常不錯。同時,ColumnStore提供了一個MySQL端點(MySQL協議和語法),因此如果您要從MySQL進行遷移,它是一個不錯的選擇。具體的測試可以看上面2篇文章。

安裝

ClickHouse目前有二種方法進行安裝:一個是通過系統包安裝(Ubuntu:apt-get;Centos:yum install),另一個是通過編譯安裝。可以在 Quick start  進行檢視:

Ubuntu:
sudo apt-get install dirmngr sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4 echo "deb http://repo.clickhouse.tech/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、RedHat sudo yum install yum-utils sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64 sudo yum install clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start clickhouse-client 編譯安裝,注意安裝前新增使用者 export LATEST_VERSION=$(curl -s https://repo.clickhouse.tech/tgz/stable/ | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -V -r | head -n 1) curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-common-static-$LATEST_VERSION.tgz curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-common-static-dbg-$LATEST_VERSION.tgz curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-server-$LATEST_VERSION.tgz curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-client-$LATEST_VERSION.tgz tar -xzvf clickhouse-common-static-$LATEST_VERSION.tgz sudo clickhouse-common-static-$LATEST_VERSION/install/doinst.sh tar -xzvf clickhouse-common-static-dbg-$LATEST_VERSION.tgz sudo clickhouse-common-static-dbg-$LATEST_VERSION/install/doinst.sh tar -xzvf clickhouse-server-$LATEST_VERSION.tgz sudo clickhouse-server-$LATEST_VERSION/install/doinst.sh sudo /etc/init.d/clickhouse-server start tar -xzvf clickhouse-client-$LATEST_VERSION.tgz sudo clickhouse-client-$LATEST_VERSION/install/doinst.sh

安裝完成之後,各個目錄的分配如下:

  • 配置檔案目錄:/etc/clickhouse-server
  • 資料檔案目錄:/var/lib/clickhouse
  • 日誌檔案目錄:/var/log/clickhouse-server

各個目錄可以在配置檔案(config.xml)裡進行修改,後續文章會有關於配置檔案的說明。個人比較推薦使用apt或則yum來安裝,安裝好了開始登陸使用吧!

登陸

有二種方式登入ClickHouse,一是通過命令列登陸,而是通過圖形介面登陸。安裝好後登陸的預設使用者名稱是default。

①:命令列登陸,如:

clickhouse-client --user=zhoujy --password=123456 --host=192.168.163.132

②:圖形介面登陸,預設圖形介面管理是不開啟的,需要啟動則需要開啟引數:<http_server_default_response></http_server_default_response>,預設http埠為8123:

注意:上面的登陸使用者是需要開啟遠端(任意IP)訪問的,已經需要是所有(管理,非ReadOnly)許可權,否則登入失敗,預設的default是不能登陸的,只能localhost登陸。關於如何配置使用者許可權管理在下篇文章中介紹。

總結

      ClickHouse作為一個高效能OLAP資料庫,雖然OLAP能力逆天但也不應該把它用於任何OLTP事務性操作的場景,相比OLTP:不支援事務、不擅長根據主鍵按行粒度的查詢、不擅長按行刪除資料,目前市場上的其他同類高效能OLAP資料庫同樣也不擅長這些方面。因為對於一款OLAP資料庫而言,OLTP能力並不是重點。