当前位置: 首页 > news >正文

EMR集群运行TPC-DS在云盘和OSS中的对比

1.简介

        TPC-DS是大数据领域最为知名的Benchmark标准。本文介绍使用阿里云EMR集群运行TPC-DS在云盘和OSS中的表现对比。

2.环境准备

1.创建EEMR-5.10.1集群

        1个master,2个core,3台机器都s是4c16g。

2.安装Git和Maven

sudo yum install -y git maven

3.下载TPC-DS Benchmark工具。

git clone https://github.com/hortonworks/hive-testbench.git
//如果访问github失败可以手动下载
//https://github.com/hortonworks/hive-testbench/archive/hdp3.zip?spm=a2c4g.11186623.0.0.2aef5cb4OKS4v0&file=hdp3.zip

4.编译并打包数据生成器

cd hive-testbench
./tpcds-build.sh

5.生成并加载数据

1.检查hive数据库是否存在

hive -e "desc database tpcds_bin_partitioned_orc_xx"

2.清理已经存在的数据库 

hive -e "drop database tpcds_bin_partitioned_orc_xx cascade"

3.配置Hive服务地址

        tpcds-setup.sh脚本默认配置的Hive服务地址与EMR集群环境不一致,所以需要将脚本中HiveSever的地址替换为EMR集群中的Hive服务地址。具体命令如下:

sed -i 's/localhost:2181\/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=default/master1-1:10000\//' tpcds-setup.sh
//脚本默认配置的Hive服务地址为:jdbc:hive2://localhost:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=default。通过上述命令替换后的Hive服务地址为:jdbc:hive2://master-1-1:10000/。

4.修复开源工具配置问题

        部分参数在Hive 2和Hive 3等开源版本中不支持,继续使用TPC-DS会导致作业报错,所以需要参考以下命令替换参数。

sed -i 's/hive.optimize.sort.dynamic.partition.threshold=0/hive.optimize.sort.dynamic.partition=true/' settings/*.sql

5.生成并加载数据。

        生成的数据可以保存在HDFS和OSS中,2者的区别就是创建库的时候给定存储的位置不一样。如果使用HDFS我们不用手动创建数据库,使用OSS我们手动创建数据库并指定数据库存储在OSS中。

1.使用HDFS存储数据的场景。

        MR集群默认将TPC-DS Table数据保存在HDFS上。执行如下命令生成并加载数据:

FORMAT=parquet ./tpcds-setup.sh xx //xx我们最开始写2就行了,表示生成2G的数据,FORMAT默认使用orc

2.使用OSS存储数据的场景

        通过EMR存储和计算分离的架构能力,可以很方便的做到将数据保存在OSS。具体操作步骤如下:

.//创建数据库并设置数据库使用的存储位置是oss
create database if not exists oss_tpcds_bin_partitioned_orc_xx;
//<bucket-name>需要改成和EMR集群在同一地域的OSS Bucket名称。
alter database oss_tpcds_bin_partitioned_orc_xx set location 'oss://<bucket-name>/warehouse/oss_tpcds_bin_partitioned_orc_xx.db';
//修改加载数据库的脚本
cp tpcds-setup.sh oss-tpcds-setup.sh 
//DATABASE=tpcds_bin_partitioned_${FORMAT}_${SCALE}改为DATABASE=oss_tpcds_bin_partitioned_${FORMAT}_${SCALE},将数据加载到前面创建的库中去
vim oss-tpcds-setup.sh 
//生成并加载数据,执行完成之后我们就可以看到oss的buket中已经有数据了
export FORMAT=parquet 
nohup ./oss-tpcds-setup.sh xx

6.运行TPC-DS SQL

1.使用Hive运行TPC-DS SQL

        可以运行单个SQL也可以批量运行SQL,批量运行的SQL有99个sql,存放在sample-queries-tpcds工作目录下。

1.单独运行

cd sample-queries-tpcds
hive --database tpcds_bin_partitioned_orc_xx
set hive.execution.engine=tez;
source query1.sql;

2.批量运行

cd hive-testbench
# 生成一个Hive配置文件,并指定Hive执行引擎为Tez。
echo 'set hive.execution.engine=tez;' > sample-queries-tpcds/testbench.settings
nohup ./runSuite.pl tpcds xx > tpc-ds-orc-2-test.csv//如果要执行存储在oss上的数据,如果要执行的parquet的表,也相应改一下就行
cp runSuite.pl oss-runSuite.pl
//将tpcds' => "tpcds_bin_partitioned_orc_$scale"改为tpcds' => "oss_tpcds_bin_partitioned_orc_$scale"
vim oss-runSuite.pl
nohup ./oss-runSuite.pl tpcds xx > oss-tpc-ds-orc-2-test.csv

2.使用Spark运行TPC-DS SQL
7.云盘和OSS对比

http://www.lryc.cn/news/7930.html

相关文章:

  • 菜鸟在 windows 下 python 中安装 jupyter 踩坑要点 、被神化的 VsCode
  • k8s简单搭建
  • 计算机SCI期刊审稿人,一般关注论文的那些问题? - 易智编译EaseEditing
  • Docker迁移以及环境变量问题
  • Sphinx文档生成工具(二)
  • Python快速上手系列--JSON--入门篇
  • axios中的GET POST PUT PATCH,发送请求时params和data的区别
  • hume项目k8s的改造
  • MACD红二波选股公式,选出MACD二次翻红的标的
  • mac上安装mysql
  • Django 模型继承问题
  • Vue3篇.01-简介及基本使用,项目创建方式, 模板语法, 事件监听, 修饰符
  • 别学英语了,真的
  • CRM系统五大技巧集成Excel为销售流程赋能
  • 交通部互通互联码的根证书规则
  • Map和Set(Java详解)
  • Vue 3的响应式机制
  • 30岁了,说几句大实话
  • AsyncTask使用及源码查看Android P
  • 花2个月面过华为测开岗,拿个30K不过分吧?
  • JAVA练习51-最大子数组和
  • Inception Transformer
  • 10分钟学会数据库压力测试,你敢信?
  • 论文阅读 | Video Super-Resolution Transformer
  • 7-6 带头节点的双向循环链表操作
  • npm publish 、 npm adduser 提示 403 的问题
  • Java 8的函数式接口使用示例
  • 2023年企业如何改善员工体验?为什么员工体验很重要?
  • 设计模式:桥接模式让抽象和实现解耦,各自独立变化
  • C++学习记录——십 STL初级认识、标准库string类