starrocks

  一、StarRocks 是開源的新一代極速全場景MPP數據庫。它採用新一代的彈性MPP架構,可以高效支持大數據量級的多維分析、實時分析、高併發分析等多種數據分析場景。StarRocks 性能出色,它採用了全面向量化技術,比同類產品平均快3-5倍。

  二、定位。原有的以 Hadoop 爲核心的大數據生態,在性能、實效性、運維難度及靈活性等方面都難以滿足企業的需求。OLAP 數據庫面臨着越來越多的挑戰,很難有一種數據庫能夠適配大部分的業務。作爲一款 MPP 架構的分析性數據庫,StarRocks 能夠支撐 PB 級別的數據量,擁有靈活的建模方式,可以通過向量化引擎、物化視圖、位圖索引、稀疏索引等優化手段構建極速統一的分析層數據存儲系統。定位如圖:

  

  三、架構

  

   1)FE-leader:

    • Leader 從 Follower 中自動選出,進行選主需要集羣中有半數以上的 Follower 節點存活。如果 Leader 節點失敗,Follower 會發起新一輪選舉。
    • Leader FE 提供元數據讀寫服務。只有 Leader 節點會對元數據進行寫操作,Follower 和 Observer 只有讀取權限。Follower 和 Observer 將元數據寫入請求路由到 Leader 節點,Leader 更新完數據後,會通過 BDB JE 同步給 Follower 和 Observer。必須有半數以上的 Follower 節點同步成功纔算作元數據寫入成功。

   2)FE-follower:

    • 只有元數據讀取權限,無寫入權限。通過回放 Leader 的元數據日誌來異步同步數據。
    • 參與 Leader 選舉,必須有半數以上的 Follower 節點存活才能進行選主。

  4)FE-Observer

    • 主要用於擴展集羣的查詢併發能力,可選部署。
    • 不參與選主,不會增加集羣的選主壓力。
    • 通過回放 Leader 的元數據日誌來異步同步數據。

  3)BE

    • 數據存儲方面,StarRocks 的 BE 節點都是完全對等的,FE 按照一定策略將數據分配到對應的 BE 節點。BE 負責將導入數據寫成對應的格式存儲下來,並生成相關索引。

    • 在執行 SQL 計算時,一條 SQL 語句首先會按照具體的語義規劃成邏輯執行單元,然後再按照數據的分佈情況拆分成具體的物理執行單元。物理執行單元會在對應的數據存儲節點上執行,這樣可以實現本地計算,避免數據的傳輸與拷貝,從而能夠得到極致的查詢性能。

  四、安裝

  1)下載地址:https://releases.starrocks.io/starrocks/StarRocks-2.5.10.tar.gz

  2)docker安裝集羣

  

  FE:

FROM java:8
ADD ./StarRocks-2.5.10.tar.gz .
RUN mv StarRocks-2.5.10 starrocks
RUN mkdir -p /starrocks/fe/meta
CMD /starrocks/fe/bin/start_fe.sh

  BE:

FROM java:8
ADD ./StarRocks-2.5.10.tar.gz .
RUN mv StarRocks-2.5.10 starrocks
RUN mkdir -p /starrocks/be/storage
CMD "/starrocks/be/bin/start_be.sh"

  docker-compose.yml:

version: '3'
services:
  xbd-starrocks-fe-1:
    build:
      context: ./
      dockerfile: Dockerfile-StarRocks-FE
    image: xbd-starrocks-fe
    container_name: xbd-starrocks-fe-1
    restart: always
    privileged: true
    ports:
      - 8030:8030
      - 9030:9030
    networks:
      - starrocks

  xbd-starrocks-fe-2:
    build:
      context: ./
      dockerfile: Dockerfile-StarRocks-FE
    image: xbd-starrocks-fe
    container_name: xbd-starrocks-fe-2
    restart: always
    privileged: true
    ports:
      - 8031:8030
      - 9031:9030
    command: "/starrocks/fe/bin/start_fe.sh --helper xbd-starrocks-fe-1:9010"
    depends_on:
      - xbd-starrocks-fe-1
    networks:
      - starrocks

  xbd-starrocks-be-1:
    build:
      context: ./
      dockerfile: Dockerfile-StarRocks-BE
    image: xbd-starrocks-be
    container_name: xbd-starrocks-be-1
    restart: always
    privileged: true
    volumes:
      - /var/lib/starrocks-1:/starrocks/be/storage
    networks:
      - starrocks

  xbd-starrocks-be-2:
    build:
      context: ./
      dockerfile: Dockerfile-StarRocks-BE
    image: xbd-starrocks-be
    container_name: xbd-starrocks-be-2
    restart: always
    privileged: true
    volumes:
      - /var/lib/starrocks-2:/starrocks/be/storage
    networks:
      - starrocks

networks:
  starrocks:
    external: true

  在docker-compose的環境下執行

docker-compose up -d

  然後等待啓動,通過mysql客戶端執行以下操作:密碼爲空

mysql -h xbd-starrocks-fe-1 -P 9030 -u root -p

  連接後執行:

alter system add follower "xbd-starrocks-fe-2:9010";
alter system add backend "xbd-starrocks-be-1:9050";
alter system add backend "xbd-starrocks-be-2:9050";

  添加集羣就可以了。

  其他命令:

alter system add follower/observer/backend "host:editLogPort/editLogPort/port"; #添加節點
alter system drop follower/observer "host:editlogport/editlogport/port"; # 刪除fe節點
alter system decommission backend "host:port"; # 刪除be節點

  SHOW PROC '/frontends'; # fe信息
  SHOW PROC '/backends'; # be信息

  頁面查看

  

 

   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章