0863-如何使用Docker在Windows下快速構建Impala4.0環境

1.文檔編寫目的



歷經15個月,Apache Impala 4.0終於發佈了!本次發佈一共包含700多個JIRA,新增了很多特性,包括但不限於:

  • 支持所有TPC-DS 99個查詢的語法,查詢不再需要重寫就可以在Impala上執行。新增的語法主要有

    • GroupBy語句裏支持 ROLLUP、CUBE 和 GROUPING SETS (IMPALA-7204)

    • SelectList中支持非關聯子查詢 (IMPALA-8954)

    • 支持 INTERSET 和 EXCEPT 集合操作 (IMPALA-9943、IMPALA-4974)

  • 透明的查詢重試 (IMPALA-9124)

  • 支持按Z-Order寫入數據 (IMPALA-8755)

  • 支持異步Codegen (IMPALA-5444)

  • 支持讀取Hive full-ACID ORC表的數據 (IMPALA-9042)

  • 支持Apache Iceberg (IMPALA-10149)

  • 支持更多的存儲,如Ozone、GCS(Google雲存儲)等

  • 支持aarch64 (ARM)平臺 (IMPALA-9376)

……

具體參考《Apache Impala 4.0 發佈了!》,因爲Impala4.0的發佈同時提供了Docker集羣供快速試用 (IMPALA-9793),本文檔主要是根據Github上的Impala項目中docker鏡像快速構建Impala4.0的本地測試環境,測試工具:

  • Windows 10 家庭中文版

  • MobaXterm Personal Edition v21.2

  • Docker Desktop v20.10.8


2.在Windows上準備Docker Desktop環境



1.通過以下鏈接下載docker的安裝包並安裝,安裝過程略,使用以下鏈接下載安裝包並進行安裝:

https://docs.docker.com/desktop/windows/install/


2.確認Docker Desktop安裝成功,運行以下命令

docker run -d -p 80:80 docker/getting-started


通過Container/Apps可以看到起來了一個docker


也可以訪問本地的80端口查看網頁

說明你的Docker Desktop已經安裝成功並能正常使用。


3.搭建Impala4.0



1.從以下地址下載文件quickstart.yml放到Xterm的家目錄

https://github.com/apache/impala/blob/master/docker/quickstart.yml


2.在Xterm的家目錄新建文件夾quickstart_conf,並從以下地址下載hive.xml文件放到該目錄

https://github.com/apache/impala/blob/master/docker/quickstart_conf/hive-site.xml


3.運行以下命令進行Impala的Docker環境的前置設置

docker network create -d bridge quickstart-network
export QUICKSTART_LISTEN_ADDR=0.0.0.0
export IMPALA_QUICKSTART_IMAGE_PREFIX="apache/impala:4.0.0-"


4.運行以下命令創建Impala4.0的集羣,會同時創建4個docker,包括Catalogd, StateStore和Impalad各一個,還有一個HMS

docker-compose -f quickstart.yml up -d

我這個環境因爲已經下載過這些image,所以非常快,否則這個步驟會需要等待較長的時間。


5.從Docker Desktop可以查看到已經起來了4個docker


6.驗證可以從本地訪問Coordinator的25000界面

自此Impala4.0本地基於Docker的環境已經創建完成。


4.導入測試數據並登錄impala-shell



1.執行以下命令導入數據

docker-compose -f ./quickstart.yml -f ./quickstart-load-data.yml up -d


2.通過Docker Desktop可以看到多了一個docker


3.單擊點開來可以發現正在導入TPC_DS的數據


4.登錄到home_impalad-1_1的CLI獲取該docker的ip地址


5.將該ip地址和docker_impalad-1_1的主機名配置到自己Windows的hosts文件中

172.18.0.5  docker_impalad-1_1


6.使用以下命令登錄到impala-shell

docker run --network=quickstart-network -it ${IMPALA_QUICKSTART_IMAGE_PREFIX}impala_quickstart_client impala-shell

此時已經登錄到impala-shell


7.執行select命令確認之前的數據已經導入成功



5.Impala4.0新特性測試



1.測試rollup語法支持

select cc_call_center_id, cc_rec_start_date,sum(cc_call_center_sk) from call_center group by rollup(cc_call_center_id,cc_rec_start_date);


2.測試except語法

(select t_time_sk from time_dim) except (select t_time_sk from time_dim_test) limit 20;


3.測試intersect語法

select t_time_sk from time_dim_test intersect select t_time_sk from time_dim;


4.測試cube語法

select i_item_id, i_brand, sum(i_item_sk) as sss from item group by i_item_id, i_brand with cube limit 10;


5.測試grouping sets語法

select i_item_id, i_class_id, sum(i_current_price) from item group by grouping sets(i_item_id, i_class_id) limit 10;


6.測試NDV支持設置精度

select count(distinct ws_list_price),count(distinct ws_sales_price) from web_sales;
select ndv(ws_list_price,10),ndv(ws_sales_price,10from web_sales;
select ndv(ws_list_price,2),ndv(ws_sales_price,2from web_sales;

可以發現當把NDV的精度設爲10比設爲2的時候更接近於真實的count distinct的值。


參考文檔:

https://github.com/apache/impala/tree/master/docker

本文分享自微信公衆號 - Hadoop實操(gh_c4c535955d0f)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

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