從starrocks安裝說起和Oracle的OLAP殊途同歸

xuexiaogang發表於2024-02-20

StarRocks是一款分析型資料庫(他的定語也很多,分散式存算分離等等)。作為資料庫他的執行和維護遲早也是落在我這裡的。對於做資料庫的人都知道什麼是交易型資料庫,什麼是分析型資料庫。以及什麼是事務分析混合型資料庫。但是對於非這塊領域的人根本不知道為什麼選擇某個產品。某些產品是好,但是為什麼好不知道。只是傻子過年看街坊,別人這樣用了,那我也這樣用。至於為什麼不知道。

其實行式儲存對交易友好,因為寫入和修改是以行為基礎。而列式儲存對分析友好,是因為聚合都是對列進行運算的。而如果大家熟悉我國的實際業務場景就會發現。幾乎沒有單純的OLTP,單純的OLAP。都會發現是事務分析混合的。這也就是為什麼2021年時候信通院白皮書定了資料庫七大趨勢之一就是HTAP。

從技術分類來說Oracle、MySQL是資料庫。Redis、MongoDB、influxdb、neo4j、Elasticsearch也是資料庫。Hadoop技術棧也是資料庫。區塊鏈也是資料庫。Impala、StarRocks等也是資料庫。所以最終有問題都會涉及到我。本著這個思路我也嘗試著進行一下安裝。雖然也有容器化部署的方式,但是自己手工安裝一遍收穫是不一樣的。

考慮到大家說我排版問題,這次用截圖。

下載好安裝包傳上去。將近3G啊。下載了一會。

不少yum安裝的,看上去容易。正式環境時候怎麼辦?還能yum嗎?

解壓以後該有的目錄都有了。不用自己建立(自己建立的還亂,官方的目錄層級挺好的)

然後就編輯fe的配置檔案。Fe是前臺的意思。FE(Frontend)負責管理後設資料、管理客戶端連線、進行查詢規劃、查詢排程等工作。每個 FE 節點都會在記憶體保留一份完整的後設資料,這樣每個 FE 節點都能夠提供無差別的服務。

所以要建立這個後設資料目錄。(本次體驗為單機部署)

然後設定環境變數(為了以後打命令偷懶)

這裡遇到一個問題,一定要在環境變數中設定JAVA_HOME。開始以為安裝了他能自己識別。

啟動前臺程式。

然後配置後臺程式。BE (Backend)。這裡需要把相應的路徑寫到配置檔案中去。

BE 是 StarRocks 的後端節點,負責資料儲存和 SQL 計算等工作。

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

在執行 SQL 計算時,一條 SQL 語句首先會按照語義規劃成邏輯執行單元,然後再按照資料的分佈情況拆分成具體的物理執行單元。物理執行單元會在對應的 BE 節點上執行,這樣可以實現本地計算,避免資料的傳輸與複製。

然後啟動後臺程式。start_be.sh –-daemon

但是這裡出問題了。後臺程式啟動失敗,也沒錯誤日誌。傳說的be.info日誌沒有。在反覆確認配置沒有問題後,只得找人諮詢。恰好微信好友有一個原廠的朋友。問過後原廠產研的老師非常準確的說,是avx2的問題。沒有 avx2 的話, be 肯定啟動失敗。

這裡解釋一下:AVX2(Advanced Vector Extensions 2)是一種指令集擴充套件,用於增強處理器的平行計算能力。它引入了更多的SIMD(Single Instruction, Multiple Data)指令,可以同時對多個資料進行操作,加快向量化計算和並行處理的速度。

AVX2指令集在一些需要進行大規模資料處理和平行計算的任務中能夠提供效能優勢,例如影像和影片處理、科學計算、機器學習等。透過使用AVX2指令集,程式可以更高效地利用CPU的平行計算能力,加快運算速度,提高系統的響應能力。

說到這裡明白了,是我虛擬機器的指令集不支援。馬上找給我虛擬機器的同事看看能不能解決?最後是把虛擬機器做熱遷移,遷移到一個新的宿主機上。

現在看到支援avx2指令集了,後臺程式也開起來了。

他的客戶端用的是MySQL的客戶端。

這裡密碼是空。輸入回車。不寫 -p我試下來不行。

執行這個命令看看前臺程式和後臺程式。

然後就可以像MySQL一樣操作的。但是

語法不一樣。直接建表會出ERROR的1064錯誤。需要指定分片鍵等。關鍵的是由於是單機體驗,要手寫副本1.預設是3.目前不能再配置檔案中修改。

最後寫入資料。

重點來了:

StarRocks一開始說了是列式資料庫,所以適合分析。這點應該說明白了。之所以表現出眾主要原因我覺得應該是SIMD(向量化執行)我這裡引用一下楊廷琨老師PPT

Oracle的In-memory之所以快,其實也是因為SIMD的原因(當然在記憶體中做就更加快了),而這個是2013年就釋出的。試想一下2013年做出來的,那麼哪年開始做的?又是哪年開始設計的?這才是重點。

我這裡標題之所以寫殊途同歸,看來要像分析更快,最後SIMD目前看是繞不過去的。而這些都是數學的範疇吧。我一直說資料庫是數學和物理學的結合(CPU 記憶體這些硬體就是物理器件)。至今還有不少人,沒有意識到資料庫和數學的緊密關係。(當然內行人都已經認識到了,沒有意識到的也的確是外行。也許有些人並不看重資料庫所以沒有認識也就沒有認識吧)。其實在2010年之前我就是外行,我就沒認識到。

透過今天這個我想說,要知道有些技術,要知其然也要知其所以然。

來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/637517/viewspace-3006898/,如需轉載,請註明出處,否則將追究法律責任。

相關文章