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源创计划”,欢迎正在阅读的你也加入,一起分享。

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