Hive tpcds - 3 测试

1. 下载资源

我用的是 hortonworks 的版本,其他的也应该类似。

git clone git@github.com:hortonworks/hive-testbench.git

2. 编译

./tpcds-build.sh

如果目标服务器不能上网,或者不想环境再配置一遍,可以把编译之后的整个目录打包,上传到目标服务器上进行解压。

3. 生成数据

sh tpcds-setup.sh 3 /tmp/tpds-gen

第1个参数是数据规模,3 代表 3G,最小是 2,代表 2 G。此参数是必须的。
第 2 个参数是临时数据的位置。默认是 ${fs.defaultFS}/tmp/tpcds-generate

生成数据时,默认用beeline 连接 hiveserver2,用 zookeeper 做服务发现。如果我们没有配置,可以修改 tpcds-setup.sh 直接连接 hiveserver2。

默认连接 hiveserver2 的方式。

HIVE="beeline -n hive -u 'jdbc:hive2://localhost:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=default' "

直接连接 hiveserver2 的方式

HIVE="beeline -n hive -u 'jdbc:hive2://localhost:10000 "

创建集群

1 个 master 节点,8 vcores, 32 G memory。
20 个 core 节点,4 vcores, 16G memory,高性能云磁盘 500GB。为 nodemanager 配置 4 vcores, 12 G 内存。

执行 query

进入 sample-queries-tpcds 目录,可以看到 99 个查询语句。
我们编写 query-all.sh 可以执行 99 个查询。

SCALE=3
LOGFILE=query-all-`date +"%Y%m%d-%H%M%S"`.log 
for ((i=1;i < 100; i++)); do
   echo ""
   echo ""
   echo ""
   echo ""
   echo "Begin exec query${i} at `date +"%Y%m%d-%H:%M.%S"`" >> ${LOGFILE} 2>&1
   echo hive -e "use tpcds_bin_partitioned_orc_${SCALE}; source query${i}.sql" >> ${LOGFILE} 2>&1
   hive -e "use tpcds_bin_partitioned_orc_${SCALE}; source query${i}.sql" >> ${LOGFILE} 2>&1
       if [ $? != 0]; then
         echo "End exec query${i} failed" >> ${LOGFILE} 2>&1 
          exit 1;
       fi
   echo "End exec query${i} successfully at `date +"%Y%m%d-%H:%M.%S"`" >> ${LOGFILE} 2>&1
done 

修改 tez-site.xml

tez.counters 默认是 1200,比较小,改成 200000

<property>
      <name>tez.counters.max</name>
      <value>200000</value>
    </property>

以 TEZ 的方式执行

由于 core 节点 4 vcores,16 G memory,每个容器可以 4G 内存。修改 hive-site.xml,把 container 的容量改为 4 G,并修改 jvm 参数。
hive-site.xml 添加以下内容:

<property>
      <name>hive.tez.container.size</name>
      <value>4096</value>
</property>
<property>
      <name>hive.tez.java.opts</name>
      <value>-server -Xmx3545m -Djava.net.preferIPv4Stack=true -XX:NewRatio=8 -XX:+UseNUMA -XX:+UseParallelGC -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps</value>
</property>

执行 99 个 query。

nohup sh query-all.sh &

LLAP 测试

生成 LLAP 程序

由于 20 个 core 节点,每个 4 vcores,总共可以运行 80 个容器。hive 自动启动两个 TEZ APP,去除 Application Master的开销 和 LLAP AM 的开销。
因为每台服务器仅能启动一个 LLAP 后台进程,设置启动 18 个容器,每个容器 8 G 内存,1 个 executors。

hive --service llap --name llap-demo --instances 18 --cache 1280m --executors 1 --iothreads 1 --size 8000m --xmx 5000m --queue default --loglevel INFO

启动 LLAP 服务

llap-yarn-13Oct2021/run.sh 

配置 hive-site.xml

<property>
  <name>hive.execution.engine</name>
  <value>tez</value>
</property>
<property>
  <name>hive.llap.execution.mode</name>
  <value>all</value>
</property>
<property>
  <name>hive.execution.mode</name>
  <value>llap</value>
</property>
<property>
  <name>hive.llap.daemon.service.hosts</name>
  <value>@llap-demo</value>
</property>
<property>
  <name>hive.llap.daemon.memory.per.instance.mb</name>
  <value>8000</value>
</property>
<property>
  <name>hive.llap.daemon.num.executors</name>
  <value>1</value>
</property> 

执行 query

nohup sh query-all.sh &

可以看到,每次执行都生成新的日志文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值