­

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在此基準測試中絕對是贏家:與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.133

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

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

總結

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