Hive之路-生成tpcds数据
背景
前面的文章,基本实现了从0搭建Hive的运行环境。包括Hadoop、Hive,也包括HiveServer2、Tez。距离在Hive上调试开发,还欠缺一套开发环境,待后续补充。
而环境有了后,测试什么、用什么表示这个系统可用?大多时候,我们想额外学习一个软件或者开源项目时候,就容易陷入"安装-部署-安装-部署"的循环中。没有实际使用的场景,或者自己构造的场景不足以触发特性(考虑不周),我们自己就容易不知所措而渐渐失去兴趣。
有一套业界通用或者共识性的测试套件或者数据,就容易解决这个问题(也避免陷入闭门造车的情况)。恰好,数据库是有标准的测试用例的。不止一套,本文选取了较为常见、且近几年更新、且有较多实际运行例子的测试数据集TPCDS。
版本
OS:Windows 10 Pro 1903
WSL: Ubuntu-18.04 VERSION 1 (查看命令 wsl.exe --list --verbose
)
Java:1.8.0_261
maven: Apache Maven 3.6.3
tpcds:V3
- 官方地址:http://www.tpc.org/tpcds/
- 申请下载Download TPC-DS_Tools_v3.0.0.zip表单
- 完成表单填写后邮箱获取下载链接
- Hortonworks调整版:https://github.com/hortonworks/hive-testbench
- 分支为 hdp3
- 文章剩余部分都基于Hortonworks版实现,便捷且针对Hive做了适配
前置依赖
- 安装gcc支持: 通过WSL-Ubuntu包管理安装
sudo apt update
sudo apt install build-essential
- 启动Hadoop(包括yarn)
- 启动hive metastore: 目前已从derby转为mysql,有兴趣再补充metastore迁移方式
配置步骤
Windows10环境下,WSL
- 下载
git clone https://github.com/hortonworks/hive-testbench.git
注意分支为 hdp3
- 打包程序
# 1. Windows下需要替换换行符
sed -i 's/\r$//' *.sh
# 2. 前置准备
bash tpcds-build.sh
- 脚本修改适配
- 修改脚本,直接使用hive(WSL环境没有配置beeline)
文件:tpcds-setup.sh
echo "TPC-DS text data generation complete."
#HIVE="beeline -n hive -u 'jdbc:hive2://localhost:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=default' "
HIVE="hive"
# Create the text/flat tables as external tables. These will be later be converted to ORCFile.
- 修改不支持的参数
- 注释 hive.optimize.sort.dynamic.partition.threshold
- 目前发现仅在Cloudera中提供该配置:https://docs.cloudera.com/cdp-private-cloud-base/7.1.5/ozone-storing-data/topics/ozone-config-work-with-Hive.html
vim settings/init.sql
vim settings/load-flat.sql
vim settings/load-partitioned.sql
-- set hive.optimize.sort.dynamic.partition.threshold=0;
- 生成数据
生成步骤包括:
- 调用tpcds-gen-1.0-SNAPSHOT.jar生成TEXT数据
- 从TEXT导入并转存为ORC数据,并加上constraint
# 生成大小2G的数据集
# 生成文件放置于/tmp目录下
bash tpcds-setup.sh 2 /tmp
副产物:本地生成的导入脚本
cat load_orc_2.mk
可用性测试
- 登录hive
cd sample-queries-tpcds
hive
- 查看数据库结构
show databases;
describe database tpcds_text_2;
describe database tpcds_bin_partitioned_orc_2;
- 查询测试
注意:部分语句无法执行。hive3才开始支持全部TPCDS语句。
use tpcds_bin_partitioned_orc_2;
source query3.sql; -- 约60s可以跑完,31行结果
source query15.sql; -- 潜在运行资源不足
query3结果: 单机约60s,31行结果
1998 4003002 exportiedu pack #2 744.26
1998 7014008 edu packnameless #8 683.34
1998 7013003 exportinameless #3 681.69
1998 4004001 edu packedu pack #1 574.06
1998 10003014 exportiunivamalg #14 533.89
1998 3003001 exportiexporti #1 434.29
1998 8011005 amalgmaxi #5 394.29
1999 7014008 edu packnameless #8 707.63
1999 7013003 exportinameless #3 692.77
1999 3003001 exportiexporti #1 583.01
1999 4003002 exportiedu pack #2 455.42
1999 4004001 edu packedu pack #1 424.78
1999 8011005 amalgmaxi #5 345.39
1999 10003014 exportiunivamalg #14 343.96
2000 3003001 exportiexporti #1 1108.86
2000 7014008 edu packnameless #8 743.30
2000 4004001 edu packedu pack #1 576.33
2000 10003014 exportiunivamalg #14 555.09
2000 4003002 exportiedu pack #2 445.96
2000 1002002 importoamalg #2 356.64
2001 1002002 importoamalg #2 562.68
2001 10003014 exportiunivamalg #14 501.64
2001 4003002 exportiedu pack #2 487.25
2001 7014008 edu packnameless #8 292.24
2001 6011006 amalgbrand #6 258.72
2002 1004001 edu packamalg #1 939.34
2002 8012002 amalgedu pack #1 813.40
2002 10003014 exportiunivamalg #14 502.43
2002 4003002 exportiedu pack #2 428.15
2002 7014008 edu packnameless #8 185.69
2002 6011006 amalgbrand #6 145.53
后续启动或停止
一般一次性生成,无需重复打包或者安装。
需要生成不同大小数据集,模仿调用:
bash tpcds-setup.sh 2 /tmp
其他问题
\r
command not found
原因: Windows的换行符不兼容WSL/cygwin
# 替换换行符
sed -i 's/\r$//' *.sh
- SSL证书问题
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
添加curl参数,不检查证书
修改文件 tpcds-gen/Makefile
tpcds_kit.zip:
curl --insecure https://public-repo-1.hortonworks.com/hive-testbench/tpcds/README
curl --insecure --output tpcds_kit.zip https://public-repo-1.hortonworks.com/hive-testbench/tpcds/TPCDS_Tools.zip
- mvn失败/mvn加速
手动指定settings.xml
,修改repo
同样修改文件 tpcds-gen/Makefile
target/tpcds-gen-1.0-SNAPSHOT.jar: $(shell find -name *.java)
mvn -s /mnt/d/.m2/settings-hive-wsl.xml package
clean:
mvn -s /mnt/d/.m2/settings-hive-wsl.xml clean
- TEXT转ORC过程资源不足
考虑优化参数:distribute by [cr_returned_date_sk]
以优化写入分区的文件数量。
- GC overhead limit exceeded
增加hadoop heapsize大小配置
export HADOOP_HEAPSIZE=10240
use tpcds_bin_partitioned_orc_2;
source query15.sql;
- 点赞
- 收藏
- 关注作者
评论(0)