Ubuntu 20.04 安裝ClickHouse集群

来源:https://www.cnblogs.com/kawhi187/archive/2023/04/06/17291506.html
-Advertisement-
Play Games

Ubuntu 20.04 安裝ClickHouse集群 引言 因為筆者最近一直想實現一個自己的APM服務端,但是看了很多APM服務端系統沒有使用.Net Core來寫的,都是採用Java或者Go,筆者是寫C#的,但是筆者認為.Net Core的性能在現在對比Go和Java很有優勢,所以筆者才有想法使 ...


Ubuntu 20.04 安裝ClickHouse集群

  • 引言

    因為筆者最近一直想實現一個自己的APM服務端,但是看了很多APM服務端系統沒有使用.Net Core來寫的,都是採用Java或者Go,筆者是寫C#的,但是筆者認為.Net Core的性能在現在對比Go和Java很有優勢,所以筆者才有想法使用.Net Core來實現一個APM的服務端;最近在研究SkyWalking APM服務端的實現,在研究下來SkyWalking存儲使用的是MySql、PgSql、ES用來存儲數據,筆者本想使用MySql來進行存儲但是看了很多文章都不推薦使用,原因是因為MySql吞吐量太低,對於大量數據提交並無法支撐,但是筆者不想是用ES,眾所周知ES的配置相當麻煩而且也很吃記憶體,筆者配置了幾次但是因為伺服器是自己家裡的機器,有時候會存在關機的情況,就會導致莫名其妙的無法啟動ES,所以筆者在研究了一些其他類型的資料庫,筆者經過對比MongDB、ClickHouse 最終選擇了ClickHouse;在筆者看來放棄MongoDB的原因也是因為他的吞吐量太低,因為MongDB並不是適合APM數據存儲,MongoDB本身是一個適用於存儲非結構化數據和半結構化數據。ClickHouse是一種列式資料庫,適用於存儲和分析大量結構化數據,而且他的寫入速度快,適合APM這種級別的寫入效率。實現APM服務端的話那麼它必然需要高性能的寫入,所以筆者選擇了ClickHouse。

  • ClickHouse簡介

    ClickHouse是一種高性能、開源、列式資料庫管理系統(DBMS),被設計用於線上分析處理(OLAP)環境下的大規模數據倉庫。以下是ClickHouse的優勢和缺點:

    • 優勢:

      1. 支持高併發:ClickHouse 使用並行處理機制來處理查詢請求,可以支持高併發場景。
      2. 數據壓縮空間大:ClickHouse 採用數據壓縮技術,可以減少數據的存儲空間,同時也減少了 I/O 傳輸。
      3. 索引是類似跳錶結構:ClickHouse 的索引是類似跳錶結構,不需要滿足最左原則,非常適合聚合計算。
      4. 寫入速度快:ClickHouse 的寫入速度非常快,特別適合寫本地表而不是 All 表。
      5. 採用了並行處理機制:ClickHouse 使用並行處理機制來處理查詢請求,可以充分利用伺服器的計算資源。
      6. 支持多種數據類型:ClickHouse 支持多種數據類型,包括數字、字元串、日期、時間、二進位等。
      7. 支持多種編程語言:ClickHouse 支持多種編程語言,包括 SQL、Python、R 等。
      8. 易於管理和維護:ClickHouse 採用面向對象的設計思想,使得管理和維護變得更加容易。
    • 缺點:

      1. 不支持事務:ClickHouse是一種面向分析的資料庫,不支持像MySQL或PostgreSQL這樣的事務。
      2. 不支持更新和刪除操作:ClickHouse是一種列式資料庫,不支持行級別的更新和刪除操作。
      3. 存儲格式限制:ClickHouse只支持列式存儲,不支持行式存儲。
      4. 操作複雜:ClickHouse相對於其他資料庫系統可能需要更長的學習和調試時間,因為它有許多不同的特性和配置選項。
    • 結論

      總的來說,ClickHouse是一種專門為大規模數據分析而設計的高性能資料庫,可以處理海量數據且速度非常快。但是,它不支持事務和行級別的更新和刪除操作,並且需要更複雜的配置和調試,因此需要更多的學習和使用時間。

  • 1、安裝ClickHouse

    官網安裝clickhouse命令:https://clickhouse.com/docs/zh/getting-started/install

    sudo apt-get install -y apt-transport-https ca-certificates dirmngr
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
    
    echo "deb https://packages.clickhouse.com/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 systemctl start  clickhouse-server 
    
    # 查看狀態
    sudo systemctl status  clickhouse-server 
    
    # 停止服務
    sudo systemctl stop  clickhouse-server 
    
    # 重新啟動服務端
    sudo systemctl restart  clickhouse-server
    
    # 連接服務端
    clickhouse-client # or "clickhouse-client --password" if you've set up a password.
    
  • 2、ClickHouse添加自定義用戶名

    • 2.1、通過配置 sudo nano /etc/clickhouse-server/users.xml文件配置賬號密碼

      推薦使用這種方式
        <!-- Users and ACL. -->
        <users>
            <kawhi>
                <!--<password></password>-->
                <password_sha256_hex>896f566e6b8731559d49b0744bdbdb3274ed3eaed2ed494f44da6f8957a6590d</password_sha256_hex>
                <networks>
                    <ip>::/0</ip>
                </networks>
                <!-- Settings profile for user. -->
                <profile>default</profile>
                <!-- Quota for user. -->
                <quota>default</quota>
                <!-- User can create other users and grant rights to them. -->
                <!-- <access_management>1</access_management> -->
            </kawhi>
        </users>
      
    • 2.2、進入ClickHouse-server以後創建自己的用戶

        clickhouse-client --password
        create user kawhi identified with sha256_password by 'abcdefg' host any;
        GRANT ALL ON *.* TO kawhi WITH GRANT OPTION;
        show grants for kawhi
      
  • 3、修改預設配置

    • 3.1、修改預設數據存儲目錄

      建議在所有安裝完成以後直接先修改目錄,這樣我們還沒有任何數據進來,避免遺漏或者丟失數據

      
      # 創建目錄
      mkdir  /clickhouse
      
      sudo chown clickhouse:clickhouse -R 你的目錄
      
      # 打開配置文件
      sudo nano /etc/clickhouse-server/config.xml
      # 找到<path>/var/lib/clickhouse/<path>    修改成以下
      <path>你的目錄<path> # 例如: <path>/home/kawhi/clickhouse/</path>
      
    • 3.2、打開遠程訪問

      紅框內的那段代碼預設是被註釋掉的,將其取消註釋。

        # 重新啟動服務端
        sudo systemctl restart  clickhouse-server
      
  • 4、clickhouse配置集群

    • 4.1、在你所有的clickhouse機器上重覆以上步驟

    • 4.2、添加集群配置

      在/etc/clickhouse-server/config.xml的配置文件中添加集群配置
        <remote_servers>
          <!--集群名稱《可自行修改》-->
          <luck_click_house_cluster>
              <!-- replica定義分片的副本數量,這裡只配置了一個,如果需要配置多個,追加replica即可  -->
              <shard> 
                  <!--weight表示每個分片的寫入權重值-->
                  <weight>1</weight> 
                  <!--internal_replication表示是否啟用內部複製-->
                  <internal_replication>true</internal_replication>
                  <!-- replica定義分片的副本數量,這裡只配置了一個,如果需要配置多個,追加replica即可  -->
                  <replica> 
                      <host>192.168.31.20</host>
                      <port>9000</port>
                      <user>default</user>
                      <password>wzw0126..</password>
                  </replica>
                  <replica>
                      <host>192.168.31.20</host>
                      <port>9000</port>
                      <user>default</user>
                      <password>wzw0126..</password>
                  </replica>
              </shard>
              <!-- replica定義分片的副本數量,這裡只配置了一個,如果需要配置多個,追加replica即可  -->
              <shard> 
                  <!--weight表示每個分片的寫入權重值-->
                  <weight>1</weight> 
                  <!--internal_replication表示是否啟用內部複製-->
                  <internal_replication>true</internal_replication>
                  <!-- replica定義分片的副本數量,這裡只配置了一個,如果需要配置多個,追加replica即可  -->
                  <replica> 
                      <host>192.168.31.21</host>
                      <port>9000</port>
                      <user>default</user>
                      <password>wzw0126..</password>
                  </replica>
                  <replica>
                      <host>192.168.31.21</host>
                      <port>9000</port>
                      <user>default</user>
                      <password>wzw0126..</password>
                  </replica>
              </shard>
              <!-- replica定義分片的副本數量,這裡只配置了一個,如果需要配置多個,追加replica即可  -->
              <shard> 
                  <!--weight表示每個分片的寫入權重值-->
                  <weight>1</weight> 
                  <!--internal_replication表示是否啟用內部複製-->
                  <internal_replication>true</internal_replication>
                  <!-- replica定義分片的副本數量,這裡只配置了一個,如果需要配置多個,追加replica即可  -->
                  <replica> 
                      <host>192.168.31.22</host>
                      <port>9000</port>
                      <user>default</user>
                      <password>wzw0126..</password>
                  </replica>
                  <replica>
                      <host>192.168.31.22</host>
                      <port>9000</port>
                      <user>default</user>
                      <password>wzw0126..</password>
                  </replica>
              </shard>
          </luck_click_house_cluster>
        </remote_servers>
      
      集群配置添加完成後確認集群在任意一臺機器上執行下麵的命令登錄資料庫,確認集群配置,我是使用的3拖6的集群配置;
        # 登錄clickhouse服務端
        clickhouse-client -u 你的用戶名
        # 查詢集群命令
        select * from system.clusters;
      
  • 5.3、結語

    在配置ClickHouse時遇到了很多問題,例如不知道集群如何設置,所以花費了將近一天的時間,但是如果你們公司有專門的DBA這件事情完全不用你操心,或者可以選擇雲服務商的ClickHouse,筆者純粹是想學習以下ClickHouse的集群配置,所以會花費一些時間來進行研究,但是重點仍然是APM服務端的實現。在看過SkyWalking的表設計之後,筆者是被震驚到了,他有287張表,甚是驚訝。畢竟SkyWalking已經是一個成熟的APM項目,所以還是有很多值得學習的。本篇只講瞭如何配置ClickHouse集群,但是筆者在創建分散式資料庫和表時發現ClickHouse想使用分散式的資料庫或者表還需要Zookeeper,所以ClickHouse會出至少兩篇文章,下一篇將記錄ClickHouse如何使用Zookeeper集群來建立分散式資料庫或者表。ClickHouse系列是APM系統的打頭。

學不完的技術,寫不完的代碼。QQ群:773595012
▼-----------------------------------------▼-----------------------------------------▼
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據管理技術的發展 第一節 資料庫技術發展概述 數據模型是資料庫系統的核心和基礎 以數據模型的發展為主線,資料庫技術可以相應地分為三個發展階段: 第一代的網狀、層次資料庫系統 第二代的關係資料庫系統 新一代的資料庫系統 一、第一代資料庫系統 層次資料庫系統 層次模型 網狀資料庫系統 網狀模型 層次模 ...
  • ORACLE資料庫中ORACLE_SID與INSTANCE_NAME在概念和意義上有什麼異同呢?下麵簡單來總結概況一下,很多時候,不少人都搞不清楚兩者的異同,甚至認為兩者是等價的。 ORACLE_SID與INSTANCE_NAME的異同 ORACLE_SID參數是操作系統的環境變數,用於和操作系統進 ...
  • 最近寫了幾個簡單的spark structured streaming 的代碼實例。 目的是熟悉spark 開發環境搭建, spark 代碼開發流程。 開發環境: 系統:win 11 java : 1.8 scala:2.13 工具:idea 2022.2 ,maven 3, git 2.37 sp ...
  • 在日常工作中,我們會遇見一些慢SQL,在分析這些慢SQL時,我們通常會看下SQL的執行計劃,驗證SQL執行過程中有沒有走索引。通常我們會調整一些查詢條件,增加必要的索引,SQL執行效率就會提升幾個數量級。我們有沒有思考過,為什麼加了索引就會能提高SQL的查詢效率,為什麼有時候加了索引SQL執行反而會... ...
  • navicat15安裝破解教程 一.navicati15安裝 參考教程 安裝包文件查找過程不再這裡贅述了,大家自行百度,相關經驗帖很多。 二. 破解 啟動破解工具,並點擊Patch 點擊後選擇我們安裝navicat的目錄 註意第二步的相關配置 點擊Generate生成key 打開navicat15, ...
  • 摘要:本文主要介紹GaussDB(DWS)雲原生數倉架構、產品能力,幫助開發者快速瞭解GaussDB(DWS)雲原生數倉相關信息與能力。 本文分享自華為雲社區《直播回顧 | GaussDB(DWS)雲原生數倉技術解析》,作者:胡辣湯。 在本期《GaussDB(DWS)雲原生數倉技術解析》的主題直播中 ...
  • 2017年,美國信用評級機構 Equifax 遭受黑客攻擊,導致1.4億個人的敏感信息泄露; 2020年,發生了 SolarWinds 公司的軟體供應鏈遭受惡意代碼攻擊事件,涉及多個行業和國家; 2022年,網信辦依據《數據安全法》等法律法規,對滴滴公司開出人民幣80.26億元的巨額罰款,對互聯網企 ...
  • Mysql 01 使用CMD連接資料庫 -- 在控制台連接資料庫(需將位置切換到mysql所在地址) mysql -u root -p password:12345 -- 修改mysql賬戶密碼及許可權,安裝配置完後慎用 update mysql.user set authentication_str ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...