一. 簡述:?
? ?ClickHouse 是一款高性能列式存儲數據庫,專為海量數據的實時分析場景設計。它以極致的查詢速度、高效的存儲利用率和強大的并行處理能力著稱,廣泛應用于日志分析、用戶行為分析、業務監控等大數據分析領域。
? 1. 核心特性:
?? ?a). 列式存儲:傳統行式數據庫(如 MySQL)按行存儲數據,適合增刪改查;ClickHouse 按列存儲,同一列數據連續存放,可大幅減少 IO 量(僅讀取查詢所需列),且相同類型數據壓縮率更高(通常比行式存儲高 5-10 倍)。
? ?b). ?高效的查詢性能:基于向量執行引擎,單次處理一批數據(而非單條),減少函數調用開銷;查詢會被拆分為多個子任務,在多個 CPU 核心上并行執行;內置大量優化的數學、字符串等函數,支持復雜計算高效執行。
? ?c). ?支持實時寫入更新:提供?INSERT
?語句支持高吞吐寫入(每秒數十萬條),數據寫入后立即可見。
? ?d). ?豐富的表引擎:表引擎決定數據存儲方式、索引策略和查詢特性,核心引擎包括:?
MergeTree
:常用引擎,支持分區、排序、TTL、副本和分片,適合海量歷史數據存儲。ReplacingMergeTree
:在合并分區時自動去重,適合處理重復數據。SummingMergeTree
:合并時自動聚合數據,適合預計算場景。Memory
:內存表,查詢極快但數據不持久,適合臨時計算。
? 2. 分布式架構支持:?
? ? ? 原生支持集群部署,通過分片(數據拆分到不同節點)和副本(數據冗余備份)實現高可用和水平擴展,用戶無需關心底層存儲分布。
? 3. 使用場景:
????????a). 日志與指標分析:如服務器日志、應用程序埋點數據的實時查詢。
????????b). 用戶行為分析:分析用戶在網站 / App 上的點擊、瀏覽等行為,生成漏斗圖、留存率等報表。
????????c). 業務監控與儀表盤:實時監控訂單量、支付成功率等關鍵指標,支持毫秒級響應的儀表盤展示。
????????d). 時序數據存儲:存儲物聯網設備的傳感器數據(如溫度、濕度),支持按時間范圍快速查詢。
三. 服務部署:?
? 1. ?檢查當前CPU是否支持SSE 4.2:
#grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
SSE 4.2 supported
2. 安裝部署:
#yum install yum-utils
#rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
#yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
#yum install clickhouse-server clickhouse-client(當無法聯網時,可通過https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/下載,只需要clickhouse-client,clickhouse-server,clickhouse-common-static三個包)
3. 配置clickhouse:/etc/clickhouse-server/config.xml
#vim /etc/clickhouse-server/config.xml
<!-- 監聽地址,默認只允許本地訪問,改為0.0.0.0允許外部訪問 -->
<listen_host>0.0.0.0</listen_host><!-- 數據存儲路徑(默認在/var/lib/clickhouse/) -->
<path>/var/lib/clickhouse/</path><!-- 日志路徑 -->
<log>/var/log/clickhouse-server/clickhouse-server.log</log>#設置密碼
1. 生成加密密碼:
echo -n "your_password" | sha256sum | awk '{print $1}'2. 編輯配置
#vim /etc/clickhouse-server/users.xml
<users><default><!-- 明文密碼(測試環境) --><password>your_password</password><!-- 或加密密碼(生產環境,通過clickhouse-client生成) --><!-- <password_sha256_hex>哈希值</password_sha256_hex> --><networks><ip>::/0</ip> <!-- 允許所有IP訪問 --></networks></default>
</users>
?4. 啟動服務:?
# 啟動服務
sudo systemctl start clickhouse-server
5. ?功能驗證:
# 本地連接(默認無密碼)
clickhouse-client-- 創建測試數據庫
CREATE DATABASE IF NOT EXISTS test;-- 創建表
CREATE TABLE test.logs (timestamp DateTime,level String,message String) ENGINE = MergeTree() ORDER BY timestamp;-- 插入數據
INSERT INTO test.logs VALUES (now(), 'INFO', 'ClickHouse installed successfully');-- 查詢數據
SELECT * FROM test.logs;
三. 關于集群部署
? ?clickhouse 在21.12版本之前,需要依賴zookeeper進行節點協調等任務, 從21.12起,引入了clickhouse-keeper,用來替代zookeeper。 部署多個節點后,配置集群元數據:?
#vim /etc/clickhouse-server/config.xml<remote_servers><my_cluster> <!-- mycluster --><shard> <!-- 分片1 --><replica><host>node1</host><port>9000</port></replica></shard><shard> <!-- 分片2 --><replica><host>node2</host><port>9000</port></replica></shard><shard> <!-- 分片2 --><replica><host>node2</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>#重啟所有節點,通過 SELECT * FROM system.clusters 驗證集群狀態。
?-------------------------------------------------------------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ?深耕運維行業多年,擅長運維體系建設,方案落地。歡迎交流!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? V: ywjw996
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ?? 《 運維經緯 》