首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >0863-如何使用Docker在Windows下快速构建Impala4.0环境

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

作者头像
Fayson
发布2021-10-11 17:08:11
发布2021-10-11 17:08:11
2.2K0
举报
文章被收录于专栏:Hadoop实操Hadoop实操

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的安装包并安装,安装过程略,使用以下链接下载安装包并进行安装:

代码语言:javascript
复制
https://docs.docker.com/desktop/windows/install/

2.确认Docker Desktop安装成功,运行以下命令

代码语言:javascript
复制
docker run -d -p 80:80 docker/getting-started

通过Container/Apps可以看到起来了一个docker

也可以访问本地的80端口查看网页

说明你的Docker Desktop已经安装成功并能正常使用。

3.搭建Impala4.0

1.从以下地址下载文件quickstart.yml放到Xterm的家目录

代码语言:javascript
复制
https://github.com/apache/impala/blob/master/docker/quickstart.yml

2.在Xterm的家目录新建文件夹quickstart_conf,并从以下地址下载hive.xml文件放到该目录

代码语言:javascript
复制
https://github.com/apache/impala/blob/master/docker/quickstart_conf/hive-site.xml

3.运行以下命令进行Impala的Docker环境的前置设置

代码语言:javascript
复制
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

代码语言:javascript
复制
docker-compose -f quickstart.yml up -d

我这个环境因为已经下载过这些image,所以非常快,否则这个步骤会需要等待较长的时间。

5.从Docker Desktop可以查看到已经起来了4个docker

6.验证可以从本地访问Coordinator的25000界面

自此Impala4.0本地基于Docker的环境已经创建完成。

4.导入测试数据并登录impala-shell

1.执行以下命令导入数据

代码语言:javascript
复制
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文件中

代码语言:javascript
复制
172.18.0.5  docker_impalad-1_1

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

代码语言:javascript
复制
docker run --network=quickstart-network -it ${IMPALA_QUICKSTART_IMAGE_PREFIX}impala_quickstart_client impala-shell

此时已经登录到impala-shell

7.执行select命令确认之前的数据已经导入成功

5.Impala4.0新特性测试

1.测试rollup语法支持

代码语言:javascript
复制
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语法

代码语言:javascript
复制
(select t_time_sk from time_dim) except (select t_time_sk from time_dim_test) limit 20;

3.测试intersect语法

代码语言:javascript
复制
select t_time_sk from time_dim_test intersect select t_time_sk from time_dim;

4.测试cube语法

代码语言:javascript
复制
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语法

代码语言:javascript
复制
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支持设置精度

代码语言:javascript
复制
select count(distinct ws_list_price),count(distinct ws_sales_price) from web_sales;
select ndv(ws_list_price,10),ndv(ws_sales_price,10) from web_sales;
select ndv(ws_list_price,2),ndv(ws_sales_price,2) from web_sales;

可以发现当把NDV的精度设为10比设为2的时候更接近于真实的count distinct的值。

参考文档:

代码语言:javascript
复制
https://github.com/apache/impala/tree/master/docker
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档