Doris(一) -- 簡介和安裝

来源:https://www.cnblogs.com/paopaoT/archive/2023/05/26/17435792.html
-Advertisement-
Play Games

## Doris 簡介 ### Doris 概述 Apache Doris 由百度大數據部研發 (之前叫百度 Palo,2018 年貢獻到 Apache 社區後,更名為 Doris), 在百度內部,有超過 200 個產品線在使用,部署機器超過 1000 台,單一業務最大可達到上百 TB。 Apach ...


Doris 簡介

Doris 概述

Apache Doris 由百度大數據部研發 (之前叫百度 Palo,2018 年貢獻到 Apache 社區後,更名為 Doris), 在百度內部,有超過 200 個產品線在使用,部署機器超過 1000 台,單一業務最大可達到上百 TB。

Apache Doris 是一個現代化的 MPP(Massively Parallel Processing,即大規模並行處理)分析型(OLAP)資料庫產品。僅需亞秒級響應時間即可獲得查詢結果,有效地支持實時數據分析。

Apache Doris 的分散式架構非常簡潔,易於運維,並且可以支持 10PB 以上的超大數據集。

Apache Doris 可以滿足多種數據分析需求,例如固定歷史報表,實時數據分析,互動式數據分析和探索式數據分析等。

OLAP和OLTP

聯機事務處理OLTP(On-Line Transaction Processing)
公司業務系統使用資料庫的場景,針對業務系統資料庫有大量隨機的增刪改查
要求: 高併發 速度快 支持事務

聯機分析處理OLAP(On-Line Analytical Processing)
公司的數據分析使用資料庫的場景,對已經生成好的數據進行統計分析

要求:

  • 一次操作都是針對的整個數據集
  • 只有查這個動作,不會去增刪改
  • 查詢的響應速度相對慢點也能接受
  • 併發量要求不是太高

比較

OLTP OLAP
數據源 僅包含當前運行日常業務數據 整合來自多個來源的數據,包括OLTP和外部來源
目的 面嚮應用,面向業務,支撐事務 面向主題,面向分析,支持分析決策
焦點 當下 主要面向過去,面向歷史(實時數倉除外)
任務 增刪改查 要是用於讀,select查詢,寫操作很少
響應時間 毫秒 秒,分鐘,小時 取決於數據量和查詢的複雜程度
數據量 小數據,MB,GB 大數據,TP,PB

使用場景

  • 報表分析
    • 實時看板 (Dashboards)
    • 面向企業內部分析師和管理者的報表
    • 面向用戶或者客戶的高併發報表分析(Customer Facing Analytics)。比如面向網站主的站點分析、面向廣告主的廣告報表,併發通常要求成千上萬的 QPS ,查詢延時要求毫秒級響應。著名的電商公司京東在廣告報表中使用 Apache Doris ,每天寫入 100 億行數據,查詢併發 QPS 上萬,99 分位的查詢延時 150ms。
  • 即席查詢(Ad-hoc Query):面向分析師的自助分析,查詢模式不固定,要求較高的吞吐。小米公司基於 Doris 構建了增長分析平臺(Growing Analytics,GA),利用用戶行為數據對業務進行增長分析,平均查詢延時 10s,95 分位的查詢延時 30s 以內,每天的 SQL 查詢量為數萬條。
  • 統一數倉構建 :一個平臺滿足統一的數據倉庫建設需求,簡化繁瑣的大數據軟體棧。海底撈基於 Doris 構建的統一數倉,替換了原來由 Spark、Hive、Hbase、Phoenix 組成的舊架構,架構大大簡化。
  • 數據湖聯邦查詢:通過外表的方式聯邦分析位於 Hive、Hudi 中的數據,在避免數據拷貝的前提下,查詢性能大幅提升

優勢

image

架構
Doris 的架構很簡潔,只設 FE(Frontend)前端進程、BE(Backend)後端進程兩種角色、兩個後臺的服務進程,不依賴於外部組件,方便部署和運維,FE、BE 都可線上性擴展。

  1. FE(Frontend):存儲、維護集群元數據;負責接收、解析查詢請求,規劃查詢計劃,調度查詢執行,返回查詢結果。主要有三個角色:
    • Leader 和 Follower:主要是用來達到元數據的高可用,保證單節點宕機的情況下,元數據能夠實時地線上恢復,而不影響整個服務。
    • Observer:用來擴展查詢節點,同時起到元數據備份的作用。如果在發現集群壓力非常大的情況下,需要去擴展整個查詢的能力,那麼可以加 observer 的節點。observer 不參與任何的寫入,只參與讀取。
  2. BE(Backend):負責物理數據的存儲和計算;依據 FE 生成的物理計劃,分散式地執行查詢。數據的可靠性由 BE 保證,BE 會對整個數據存儲多副本或者是三副本。副本數可根據需求動態調整。
  3. MySQL Client:Doris 藉助 MySQL 協議,用戶使用任意 MySQL 的 ODBC/JDBC 以及 MySQL 的客戶端,都可以直接訪問 Doris。
  4. Broker:一個獨立的無狀態進程。封裝了文件系統介面,提供 Doris 讀取遠端存儲系統中文件的能力,包括 HDFS,S3,BOS 等。

image

預設埠

實例名稱 埠名稱 預設埠 通訊方向 說明
BE be_port 9060 FE-->BE BE 上 thrift server 的埠,用於接收來自 FE 的請求
BE webserver_port 8040 BE<-->FE BE 上的 http server 埠
BE heartbeat_service_port 9050 FE-->BE BE 上心跳服務埠,用於接收來自 FE 的心跳
BE brpc_prot* 8060 FE<-->BE,BE<-->BE BE 上的 brpc 埠,用於 BE 之間通信
FE http_port 8030 FE<-->FE ,用戶<--> FE FE 上的 http_server 埠
FE rpc_port 9020 BE-->FE ,FE<-->FE FE 上 thirft server 埠
FE query_port 9030 用戶<--> FE FE 上的 mysql server 埠
FE edit_log_port 9010 FE<-->FE FE 上 bdbje 之間通信用的埠
Broker broker_ipc_port 8000 FE-->BROKER,BE-->BROKER Broker 上的 thrift server,用於接收請求

安裝

安裝前準備

  1. Linux 操作系統版本需求
    CentOS 7.1及以上版本
    Ubuntu 16.04及以上版本

  2. 軟體需求
    java 1.8及以上版本
    GCC 4.8.2及以上版本

  3. 操作系統環境要求

vi /etc/security/limits.conf 
# 在文件最後添加下麵幾行信息(註意* 也要複製進去)

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

# ulimit -n 65535 臨時生效
# 重啟永久生效。

# 如果不修改這個句柄數大於等於60000,啟動doris be節點時會報如下錯誤
File descriptor number is less than 60000. Please use (ulimit -n) to set a value equal or greater than 60000
W1120 18:14:20.934705  3437 storage_engine.cpp:188] check fd number failed, error: Internal error: file descriptors limit is too small
W1120 18:14:20.934713  3437 storage_engine.cpp:102] open engine failed, error: Internal error: file descriptors limit is too small
F1120 18:14:20.935087  3437 doris_main.cpp:404] fail to open StorageEngine, res=file descriptors limit is too small

  1. 時鐘同步

Doris 的元數據要求時間精度要小於5000ms,所以所有集群所有機器要進行時鐘同步,避免因為時鐘問題引發的元數據不一致導致服務出現異常。

# ntpdate是一個向互聯網上的時間伺服器進行時間同步的軟體
yum install ntpdate -y

# 然後開始三台機器自己同步時間

ntpdate ntp.sjtu.edu.cn

# 美國標準技術院時間伺服器:time.nist.gov(192.43.244.18)
# 上海交通大學網路中心NTP伺服器地址:ntp.sjtu.edu.cn(202.120.2.101)
# 中國國家授時中心伺服器地址:cn.pool.ntp.org(210.72.145.44)

# 將當前時間寫入bios,這樣才能永久生效不變,不然reboot後還會恢復到原來的時間
clock -w
  1. 關閉交換分區(swap)

交換分區是linux用來當做虛擬記憶體用的磁碟分區;
linux可以把一塊磁碟分區當做記憶體來使用(虛擬記憶體、交換分區);
Linux使用交換分區會給Doris帶來很嚴重的性能問題,建議在安裝之前禁用交換分區;

# 臨時關閉交換分區
swapoff -a
# 永久刪除Swap掛載
vim /etc/fstab
註釋 swap 行
  1. mysql

安裝FE

1.官網下載源碼包,官網地址:https://doris.apache.org
2.下載後上傳到linux並解壓
3.修改配置文件

# 去自己的路勁中找到fe.conf文件
vi /opt/apps/doris/fe/conf/fe.conf
#配置文件中指定元數據路徑: 註意這個文件夾要自己創建
meta_dir = /opt/data/dorisdata/doris-meta
#修改綁定 ip(每台機器修改成自己的 ip)
priority_networks = 192.168.22.0/24

安裝BE

1.官網下載源碼包,官網地址:https://doris.apache.org
2.下載後上傳到linux並解壓
3.修改配置文件

#  去自己的路勁中找到be.conf文件
vi /opt/apps/doris/be/conf/be.conf

#配置文件中指定數據存放路徑: 需在啟動前創建目錄
storage_root_path = /opt/data/doris/be/storage.HDD;/opt/data/doris/be/storage.SSD

#修改綁定 ip(每台機器修改成自己的 ip) 
priority_networks = 192.168.17.0/24 

分發集群

for i in 2 3
do
scp /et/profile linux0$i:/etc/profile
scp -r /opt/apps/doris/ linux0$i:/opt/apps/
done

Mysql CLient連接FE

# 進入到fe的bin目錄下執行
./start_fe.sh --daemon

mysql -h linux01 -P 9030 -uroot
# 設置密碼
SET PASSWORD FOR 'root' = PASSWORD('123');


# 查看fe的運行狀態
SHOW PROC '/frontends'\G;

# 添加BE節點
ALTER SYSTEM ADD BACKEND "linux01:9050"; 
ALTER SYSTEM ADD BACKEND " linux02:9050"; 
ALTER SYSTEM ADD BACKEND " linux03:9050";

# 查看BE狀態
SHOW PROC '/backends';

# 添加環境變數
vi /etc/profile

#doris_fe
export DORIS_FE_HOME=/opt/app/doris1.1.4/fe
export PATH=$PATH:$DORIS_FE_HOME/bin

#doris_be
export DORIS_BE_HOME=/opt/app/doris1.1.4/be
export PATH=$PATH:$DORIS_BE_HOME/bin

source /etc/profile

# 啟動 BE(每個節點)
start_be.sh --daemon

# 啟動後再次查看BE的節點
SHOW PROC '/backends';
# Alive 為 true 表示該 BE 節點存活

部署FS_Broker

Broker 以插件的形式,獨立於 Doris 部署。如果需要從第三方存儲系統導入數據,需要部署相應的 Broker,預設提供了讀取 HDFS、百度雲 BOS 及 Amazon S3 的 fs_broker。fs_broker 是無狀態的,建議每一個 FE 和 BE 節點都部署一個 Broker。

# 啟動 Broker
/opt/apps/doris/fe/apache_hdfs_broker/bin/start_broker.sh --daemon
# 使用 mysql-client 連接啟動的 FE,執行以下命令:
mysql -h linux01 -P 9030 -uroot -p 123
ALTER SYSTEM ADD BROKER broker_name "linux01:8000","linux02:8000","linux03:8000";

# broker_name 這隻是一個名字,可以自己取
# 查看 Broker 狀態 
# 使用 mysql-client 連接任一已啟動的 FE,執行以下命令查看 Broker 狀態:
SHOW PROC "/brokers";

擴容和縮容

FE 擴容和縮容

可以通過將 FE 擴容至 3 個以上節點來實現 FE 的高可用。
使用 MySQL 登錄客戶端後,可以使用 sql 命令 SHOW PROC '/frontends'\G; 查看 FE 狀態,目前就一臺 FE

FE 分為 Leader,Follower 和 Observer 三種角色。 預設一個集群,只能有一個 Leader,可以有多個 Follower 和 Observer。其中 Leader 和 Follower 組成一個 Paxos 選擇組,如果Leader 宕機,則剩下的 Follower 會自動選出新的 Leader,保證寫入高可用。Observer 同步 Leader 的數據,但是不參加選舉。
如果只部署一個 FE,則 FE 預設就是 Leader。在此基礎上,可以添加若幹 Follower 和 Observer。

-- 添加FE的新節點
ALTER SYSTEM ADD FOLLOWER "linux02:9010";
ALTER SYSTEM ADD OBSERVER "linux03:9010";

在linux01和linux02分別啟動FE

# 第一次添加,一定要加這兩個參數  --helper  linux01:9010
/opt/apps/doris/fe/bin/start_fe.sh --helper  linux01:9010 --daemon

此時,再在linux01的mysql客戶端中使用 SHOW PROC '/frontends'\G; 命令查看FE的狀態

刪除FE節點命令

-- 刪除 Follower FE 時,確保最終剩餘的 Follower(包括 Leader)節點最好為奇數。
ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

ALTER SYSTEM DROP FOLLOWER "linux03:9010";

BE 擴容和縮容

增加 BE 節點

-- 在 MySQL 客戶端,通過 ALTER SYSTEM ADD BACKEND 命令增加 BE 節點。
ALTER SYSTEM ADD BACKEND "linux01:9050";

-- DROP 方式刪除 BE 節點(不推薦)
ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";
ALTER SYSTEM DROP BACKEND "linux03:9050";

-- 註意:DROP BACKEND 會直接刪除該 BE,並且其上的數據將不能再恢復!!!所以我們強烈不推薦使用 DROP BACKEND 這種方式刪除 BE 節點。當你使用這個語句時,會有對應的防誤操作提示。

-- DECOMMISSION 方式刪除 BE 節點(推薦)
ALTER SYSTEM DECOMMISSION BACKEND  "be_host:be_heartbeat_service_port"; 
ALTER SYSTEM DECOMMISSION BACKEND "linux03:9050";
-- 1.該命令用於安全刪除 BE 節點。命令下發後,Doris 會嘗試將該 BE 上的數據向其 他 BE 節點遷移,當所有數據都遷移完成後,Doris 會自動刪除該節點。 
-- 2.該命令是一個非同步操作。執行後,可以通過 SHOW PROC '/backends'; 看到該 BE節點的 isDecommission 狀態為 true。表示該節點正在進行下線。
-- 3.該命令不一定執行成功。比如剩餘 BE 存儲空間不足以容納下線 BE 上的數據,或者剩餘機器數量不滿足最小副本數時,該命令都無法完成,並且 BE 會一直處於isDecommission 為 true 的狀態。 
-- 4.DECOMMISSION 的進度,可以通過 SHOW PROC '/backends'; 中的 TabletNum 查看,如果正在進行,TabletNum 將不斷減少。 
-- 5.該操作可以通過如下命令取消:CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 取消0後,該 BE 上的數據將維持當前剩餘的數據量。後續 Doris 重新進行負載均衡。

Broker 擴容縮容

-- Broker 實例的數量沒有硬性要求。通常每台物理機部署一個即可。Broker 的添加和刪除可以通過以下命令完成:

ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port";
ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";
ALTER SYSTEM DROP ALL BROKER broker_name;
-- Broker 是無狀態的進程,可以隨意啟停。當然,停止後,正在其上運行的作業會失敗,重試即可。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python全景系列的第七篇,本文將深入探討Python模塊與包的基本概念,使用方法以及其在實際項目中的應用。我們也會揭示一些鮮為人知,卻又實用的技術細節。 ...
  • > ML.Net - 開源的跨平臺機器學習框架 > - 支持CPU/GPU訓練 > - 輕鬆簡潔的預測代碼 > - 可擴展其他的機器學習平臺 > - 跨平臺 ![img](https://img2023.cnblogs.com/blog/1339560/202305/1339560-20230524 ...
  • 要使用 `systemctl` 啟動單個服務,其中包含多個進程,你可以使用 Systemd 的 `template` 機制。以下是使用 Systemd 'template' 以創建一個可同時啟動多個進程的服務單元文件的過程: 1. 為你的服務創建一個 template 服務單元文件。服務單元文件通常 ...
  • 目錄 一、條件判斷 二、邏輯判斷 三、if和case 四、七個實驗 一、條件判斷 1.test測試 test [ 條件表達式 ] -e:測試目錄是否存在 -d:測試是否為目錄 -f:是否為文件 -r:當前用戶是否有讀寫許可權 -w:當前用戶是否有寫許可權 -x:當前用戶是否有執行許可權 2.整數值判斷 格 ...
  • INFINI Labs 產品更新啦~,本次產品版本更新包括 Gateway v1.14.0、Console v1.2.0、Easysearch v1.1.1 等,其中 Console 在上一版基礎上做了很多優化改進以及新增了一些特性,如新增數據比對校驗功能、數據看板模塊新增了表格組件、圖表組件支持下 ...
  • 我們都知道,預設情況下,nginx的項目log是一直被累計寫入的,隨著時間越久,那麼這個文件就會越大,這個時候如果我們要去做一些查找和排查就會比較困難,因為日誌文件太大,操作起來比較費勁。 因此我們為了規避這個問題,提出日誌切割的方案。 那日誌切割的原理是怎麼樣的,我們來分析一下,我們先統計下連續1 ...
  • 在上篇文章 [《深入理解 slab cache 記憶體分配全鏈路實現》](https://mp.weixin.qq.com/s?__biz=Mzg2MzU3Mjc3Ng==&mid=2247488152&idx=1&sn=7c65f8ee28e9cc14a86e9df92b6d2b93&chksm=c ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202305/3076680-20230516151258933-1445766867.png) # 1. 基本信息 SQL進階教程 [日]MICK 人民郵電出版社,2017年11月出版,**1版** ## 1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...