【獎勵公示】第20期 2022年4月獎勵名單公示:社區明星評選 | 新人獎 | 博客同步 | 推薦獎
1276
2025-04-04
1 前言
大家好,今天繼續向各位分享在華為云上編譯和使用ClickHouse,這里會以單節點為例,后續會有系列博文介紹怎樣部署集群和使用,歡迎持續關注^_^
2?準備工作
在開始本文之前,建議在華為云購買一臺云服務器,同時考慮到后續的順利操作,云服務器需要有一些要求:
CPU架構:x86計算
規格:c6.2xlarge.4,如果想編譯快一點盡量提高CPU的核數
鏡像:公共鏡像,CentOS CentOS 8.0 64bit
系統盤:高IO,100GB
彈性公網:按流量計費(提高下載速度)
3 操作系統
安裝軟件包
[root@ecs-dc69?~]#?yum?install?-y?gcc-c++?cmake?git
4 編譯
4.1 下載ClickHouse代碼
[root@ecs-dc69?~]#?git?clone?https://github.com/ClickHouse/ClickHouse.git [root@ecs-dc69?~]#?cd?ClickHouse/ [root@ecs-dc69?ClickHouse]#?git?checkout?-b?20.9?remotes/origin/20.9
4.2 編譯gcc-9.3.0
編譯ClickHouse需要GCC9及以上的版本,而本機已安裝的版本只有GCC8,不能滿足:
[root@ecs-dc69?~]#?gcc?--version gcc?(GCC)?8.3.1?20191121?(Red?Hat?8.3.1-5) Copyright?(C)?2018?Free?Software?Foundation,?Inc. This?is?free?software;?see?the?source?for?copying?conditions.??There?is?NO warranty;?not?even?for?MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.
所以需要自行編譯安裝,這里介紹兩種方式:
從ClickHouse代碼庫觸發編譯安裝
[root@ecs-dc69?ClickHouse]#?cd?utils/ci [root@ecs-dc69?ci]#?vim?default-config ... 27?GCC_SOURCES_VERSION=gcc-9.3.0??????????#?or?gcc-7.1.0 ...
修改gcc版本信息“latest”為“gcc-9.3.0”,然后編譯安裝:
[root@ecs-dc69?ci]#?./build-gcc-from-sources.sh
注意:因為編譯gcc時間會比較長,如果中間出現網絡掉線,建議不要重新執行這個腳本,可以增量繼續:
[root@ecs-dc69?~]#?cd?ClickHouse/utils/ci/workspace/gcc/gcc-build/ [root@ecs-dc69?gcc-build]#?make?-j8?&&?make?install
自行下載安裝包編譯安裝
[root@ecs-dc69?~]#?wget?https://mirrors.nju.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz [root@ecs-dc69?~]#?tar?xvf?gcc-9.3.0.tar.gz [root@ecs-dc69?~]#?cd?gcc-9.3.0 [root@ecs-dc69?gcc-9.3.0]#?./contrib/download_prerequisites [root@ecs-dc69?gcc-9.3.0]#?mkdir?build [root@ecs-dc69?gcc-9.3.0]#?cd?build [root@ecs-dc69?build]#?../configure?--enable-languages=c,c++?--disable-multilib [root@ecs-dc69?build]#?make?-j8?&&?make?install
另外,如果網絡問題無法自動下載gcc的依賴包,可以參考以下幾個鏈接或從其他渠道下載:
[root@ecs-dc69?gcc-9.3.0]#?wget?ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [root@ecs-dc69?gcc-9.3.0]#?wget?ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [root@ecs-dc69?gcc-9.3.0]#?wget?ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [root@ecs-dc69?gcc-9.3.0]#?wget?ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
編譯和安裝完gcc后,檢查下正確性:
[root@ecs-dc69?gcc-build]#?which?gcc /usr/local/bin/gcc [root@ecs-dc69?gcc-build]#?which?g++ /usr/local/bin/g++ [root@ecs-dc69?gcc-build]#?gcc?--version gcc?(GCC)?9.3.0 Copyright?(C)?2019?Free?Software?Foundation,?Inc. This?is?free?software;?see?the?source?for?copying?conditions.??There?is?NO warranty;?not?even?for?MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE. [root@ecs-dc69?gcc-build]#?g++?--version g++?(GCC)?9.3.0 Copyright?(C)?2019?Free?Software?Foundation,?Inc. This?is?free?software;?see?the?source?for?copying?conditions.??There?is?NO warranty;?not?even?for?MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE. [root@ecs-dc69?gcc-build]#
4.3 設置環境變量
[root@ecs-dc69?~]#?export?LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH [root@ecs-dc69?~]#?export?CC=gcc?CXX=g++
4.4 編譯ClickHouse
下載ClickHouse依賴包:
[root@ecs-dc69?~]#?cd?ClickHouse/ [root@ecs-dc69?ClickHouse]#?git?submodule?update?--init?--recursive
注意:這里如果因為網絡問題,也可以自行下載并上傳子模塊代碼(注意子模塊代碼版本信息),但不要執行上面命令。
[root@ecs-dc69?ClickHouse]#?mkdir?build?&&?cd?build [root@ecs-dc69?build]#?cmake?../ [root@ecs-dc69?build]#?make?-j8
5 測試驗證
啟動進程
[root@ecs-dc69?build]#?./programs/clickhouse-server
啟動客戶端
創建1張MergeTree表,然后插入2條記錄并讀取:
[root@ecs-dc69?build]#?./programs/clickhouse-client?--multiline ClickHouse?client?version?20.9.4.1. Connecting?to?localhost:9000?as?user?default. Connected?to?ClickHouse?server?version?20.9.4?revision?54439. ecs-dc69?:) ecs-dc69?:)?create?table?table1?( :-]???`EventDate`?DateTime, :-]???`id`?UInt64 :-]?)?engine?=?MergeTree() :-]?partition?by?toYYYYMM(EventDate) :-]?order?by?id; CREATE?TABLE?table1 ( ????`EventDate`?DateTime, ????`id`?UInt64 ) ENGINE?=?MergeTree() PARTITION?BY?toYYYYMM(EventDate) ORDER?BY?id Ok. 0?rows?in?set.?Elapsed:?0.004?sec.? ecs-dc69?:)?INSERT?INTO?table1?VALUES?('2020-01-01?01:01:01',?1); INSERT?INTO?table1?VALUES Ok. 1?rows?in?set.?Elapsed:?0.004?sec.? ecs-dc69?:)?INSERT?INTO?table1?VALUES?('2020-01-01?01:01:02',?2); INSERT?INTO?table1?VALUES Ok. 1?rows?in?set.?Elapsed:?0.001?sec.? ecs-dc69?:)?select?*?from?table1; SELECT?* FROM?table1 ┌───────────EventDate─┬─id─┐ │?2020-01-01?01:01:01?│??1?│ └─────────────────────┴────┘ ┌───────────EventDate─┬─id─┐ │?2020-01-01?01:01:02?│??2?│ └─────────────────────┴────┘ 2?rows?in?set.?Elapsed:?0.002?sec.? ecs-dc69?:)
MapReduce MapReduce服務 EI企業智能 大數據 ClickHouse
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。