Windows10配置运行Hive on tez

网友投稿 758 2022-05-30

背景

前面博客已经介绍了如何配置Hadoop和Hive运行环境。即本文开始前,本地已经顺利运行Hive,并可以提交hive on mr任务。

在hive领域中,tez是其中一款比较常用的执行引擎。其支持DAG作业模式,可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。Hive也有一部分优化特性基于tez实现。

本文介绍如何让hive启动执行tez任务。步骤主要的执行环境是Windows PowerShell,但组件对Windows的支持实在不友好,有部分内容不得不使用WSL。WSL下使用Hadoop和Hive方式基本类似,后续有需要再补充。

版本

OS:Windows 10 Pro 1903

Java:1.8.0_261

Tez:apache-tez-0.9.2-bin.tar.gz

(可以在 官方主页 找到下载,也可以在 Apache Backup Site 中下载)

tomcat:8.5.60,官网下载

前置依赖

tez版本选择

经过测试,3.1.0支持使用tez-0.9.2

其他版本需要自行测试,如发现不合适可以稍作调整

启动HDFS,以便上传tez lib

WSL环境

支持tez ui运行,支持tar打包命令

如果没有WSL环境,则不必执行配置步骤6、7,影响是不能使用tez的日志web页面,看任务执行细节不太方便

配置步骤

目的:配置 tez.lib.uris

解压,apache-tez-0.9.2-bin.tar.gz

目录结构

apache-tez-0.9.2-bin |- share |- |- tez.tar.gz |- conf |- |- tez-default-template.xml |- |- tez-runtime-default-template.xml |- lib |- tez-ui-0.9.2.war |- ...

准备apache-tez-0.9.2-bin/share目录下的tez.tar.gz

上传hdfs

# PowerShell下执行 hadoop fs -mkdir -p /apps/tez hadoop fs -put tez.tar.gz /apps/tez hadoop fs -ls /apps/tez # WSL模式安装的Hadoop, 执行命令类似

新建配置tez-site.xml

先放在 apache-tez-0.9.2-bin/conf 目录下

tez.use.cluster.hadoop-libs false tez.lib.uris hdfs:///apps/tez/tez.tar.gz tez.history.logging.service.class org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService tez.tez-ui.history-url.base http://localhost:9999/

修改配置yarn-site.xml

$HADOOP_HOME/etc/hadoop 目录下

yarn.timeline-service.enabled true yarn.timeline-service.hostname localhost yarn.timeline-service.http-cross-origin.enabled true yarn.resourcemanager.system-metrics-publisher.enabled true yarn.log-aggregation-enable true yarn.log.server.url http://localhost:19888/jobhistory/logs yarn.nodemanager.vmem-check-enabled false

可选配置:要求WSL环境支持

可选,启动timeline server:http://localhost:8188/

./sbin/yarn-daemon.sh start timelineserver

可选,启动jobhistory server:http://localhost:19888/

./sbin/mr-jobhistory-daemon.sh start historyserver

可选启动tez ui:要求WSL环境支持

准备tez目录下的tez-ui-0.9.2.war

解压apache-tomcat-8.5.60

配置:conf/server.xml

添加到webapps

清空webapps(先备份再清空)

cp tez-ui-0.9.2.war ROOT.war

启动

./bin/startup.sh # 启动第一次,以解压war ./bin/shutdown.sh # 停止,以便修改配置

修改配置:webapps/ROOT/config

默认端口就是rm 8088和timeline 8188

如实际端口不对,需要自行调整

配置hive on tez

复制配置文件到hive conf

cp apache-tez-0.9.2-bin/conf/tez-site.xml $HIVE_HOME/conf/

这就不必修改HADOOP_CLASSPATH来添加tez-site.xml文件,因为启动hive时默认会加载hive conf目录

添加配置(tez-site.xml)

hive.tez.container.size 4

添加配置(mapred-site.xml)

mapreduce.job.counters.max 12000

可用性测试

Windows10非WSL环境下,无tez ui

D:\install\apache-tez-0.9.2-bin目录下

环境变量

$env:TEZ_CONF_DIR="D:\install\apache-tez-0.9.2-bin\conf" $env:TEZ_JARS="D:\install\apache-tez-0.9.2-bin" $env:HADOOP_CLASSPATH="$env:TEZ_CONF_DIR;$env:TEZ_JARS\*;$env:TEZ_JARS\lib\*"

测试数据

hadoop fs -put LICENSE /tmp

执行样例

hadoop jar tez-examples-0.9.2.jar orderedwordcount /tmp/LICENSE /tmp/result

通过hdfs查看结果

hadoop fs -cat /tmp/result/part-v002-o000-r-00000

可选:已启动tez ui

http://localhost:8088/cluster 可以看到运行记录

启动时添加环境变量

export TEZ_HOME=/mnt/d/install/apache-tez-0.9.2-bin for jar in `ls $TEZ_HOME | grep jar`; do export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar done for jar in `ls $TEZ_HOME/lib`; do export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/lib/$jar done hive

测试语句

set hive.execution.engine=tez; -- SQL1 select a.wr_returned_date_sk, a.cnt, b.cnt from (select wr_returned_date_sk, count(1) as cnt from web_returns where wr_returned_date_sk between 2452977 and 2452979 group by wr_returned_date_sk) a join ( select wr_returned_date_sk, count(1) as cnt from web_returns where wr_returned_date_sk between 2452977 and 2452979 group by wr_returned_date_sk ) b on a.wr_returned_date_sk = b.wr_returned_date_sk; -- SQL2 select * from (select wr_returned_date_sk from web_returns where wr_returned_date_sk between 2452977 and 2452979 ) a join ( select wr_returned_date_sk from web_returns where wr_returned_date_sk between 2452977 and 2452979 ) b on a.wr_returned_date_sk = b.wr_returned_date_sk;

后续启动或停止

可选启动tez ui:要求WSL环境支持

cd $HADOOP_HOME ./sbin/start-yarn.sh ./sbin/yarn-daemon.sh start timelineserver ./sbin/mr-jobhistory-daemon.sh start historyserver cd /mnt/d/install/apache-tomcat-tez-ui ./bin/startup.sh

环境变量设置

export TEZ_HOME=/mnt/d/install/apache-tez-0.9.2-bin for jar in `ls $TEZ_HOME |grep jar`; do export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar done for jar in `ls $TEZ_HOME/lib`; do export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/lib/$jar done

Windows10配置运行Hive on tez

启动hive

hive

其他问题

java.lang.IllegalArgumentException: Illegal Capacity: -10444

https://issues.apache.org/jira/browse/HIVE-19918

hive.tez.container.size

参考文档

http://tez.apache.org/install.html

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-Tez

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/TimelineServer.html

https://issues.apache.org/jira/browse/YARN-9517

https://issues.apache.org/jira/browse/YARN-4037

https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/ClusterSetup.html

https://stackoverflow.com/questions/43441437/container-is-running-beyond-virtual-memory-limits

https://tez.apache.org/tez-ui.html

https://support.datameer.com/hc/en-us/articles/115005289466-How-to-Enable-Tez-History-UI-for-Hadoop-

https://cwiki.apache.org/confluence/display/Hive/Hive+on+Tez#HiveonTez-InstallationandConfiguration

https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.5.3/bk_command-line-installation/content/ref-a80115dc-6300-4372-9c8e-6f7c0f902b92.1.html

EI企业智能 Hive Windows 智能数据 表格存储服务 CloudTable

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux开发_介绍目录编程、标准文件编程、Linux系统文件接口编程、GDB调试
下一篇:开源=免费?
相关文章