Hive3新特性 1

简介: Hive3新特性

1 Hive On Tez

1.1 Hive引擎的支持

Hive作为数据仓库工具,底层的计算由分布式计算框架实现,目前Hive支持三种计算引擎,分

别是MapReduce、Tez、Spark。Hive中默认的计算引擎是MapReduce,由hive.execution.engine

参数属性控制。

Hive从2.x版本开始就提示未来的版本中将不再支持底层使用MapReduce,推荐使用Tez或者

Spark引擎来代替MapReduce计算。如果依旧要使用MapReduce,需要使用Hive的1.x版本。

WARN : Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions.

Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.


1.2 Tez的介绍

Hive底层默认的的计算引擎为MapReduce,由于MapReduce的编程模型不够灵活,性能相对

较差等问题,在实际使用Hive的过程中,我们建议将Hive的底层计算引擎更改为Tez或者Spark引擎。

Tez是Apache社区中的一种支持DAG作业的开源计算框架,它可以将多个有依赖的作业转换为

一个作业从而大幅提升DAG作业的性能。核心思想是将Map和Reduce两个操作进一步拆分,即Map

被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、

Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作

经过一些控制程序组装后,可形成一个大的DAG作业。最终Tez也会将程序提交给YARN来实现运

行。

Tez并不直接面向最终用户,事实上它允许开发者为最终用户构建性能更快、扩展性更好的应

用程序。Tez项目的目标是支持高度定制化,这样它就能够满足各种用例的需要,让人们不必借助

其他的外部方式就能完成自己的工作,如果 Hive这样的项目使用Tez来代替MapReduce作为其数

据处理的工具,那么将会显著提升它们的响应时间。

⚫ 特点

◼ 灵活的数据流定义

◼ 灵活的输入、输出、运行时模型

◼ 与数据类型无关

◼ 部署方便简洁

◼ 高性能执行:

◼ 最佳资源管理

◼ 计划配置动态更新

◼ 动态物理数据流决策

⚫ 官网:http://tez.apache.org/

94c4bf3b6eb243cdb8f8c06d50065e04.png

Apache Tez未来将替换MapReduce做为默认的Hive执行引擎。Hive3未来的版本将不再支持

MapReduce。Tez通过有向无环图(DAG)和数据传输原语的表达式,在Tez下执行Hive查询可以

提高性能。整体的执行过程如下图所示:

a3c2b2c8837246539040c9e827c89c2d.png

◼ Hive编译查询。

◼ Tez执行查询。

◼ YARN为群集中的应用程序分配资源,并为YARN队列中的Hive作业启用授权。

◼ Hive根据表类型更新HDFS或Hive仓库中的数据。

◼ Hive通过JDBC连接返回查询结果。


1.3 Tez的编译

⚫ 下载

1039ffe87d984fcfb7f6e1c98b8cd849.png

目前Apache官方http://archive.apache.org/dist/tez/最新版本为0.9系列版本,0.9系列版

本为针对Hadoop2.x系列的版本,我们使用的Hadoop为3.x版本,所以我们可以使用GitHub

中已发布的0.10版本的tez。

2152ff17162b4019bd4c36fe089b0d42.png

⚫ 编译

◼ 0.10不是正式版本,针对Hadoop3需要单独手动编译,可以使用我们提前编译好的安装包,

也可以参考以下过程进行编译。

◼ 下载依赖

yum -y install autoconf automake libtool cmake ncurses-devel openssldevel lzo-devel

zlib-devel gcc gcc-c++

◼ 安装Maven

◆ 解压

tar zxvf apache-maven-3.5.4-bin.tar.gz –C /export/server

◆ 配置环境变量:vim /etc/profile

export MAVEN_HOME=/export/server/apache-maven-3.5.4

export MAVEN_OPTS="-Xms4096m -Xmx4096m"

export PATH=:M A V E N H O M E / b i n : MAVEN_HOME/bin:MAVEN

H

OME/bin:PATH

◆ 修改Maven仓库:vim /export/server/apache-maven-3.5.4/conf/settings.xml


<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

◆ 验证

mvn -v

◼ 安装ProtocolBuffer

◆ 解压

tar zxvf protobuf-2.5.0.tar.gz –C /export/server

◆ 编译安装

cd /export/server/protobuf-2.5.0

./configure

make && make install

◆ 验证

protoc --version

f837627d6315467981ee8fd44d1e6170.png

◼ 解压tez-master.zip

unzip tez-master.zip -d /export/server

◼ 修改pom.xml

◆ 修改Hadoop和slf4j的版本

<hadoop.version>3.1.4</hadoop.version>

<slf4j.version>1.7.25</slf4j.version>

◆ 注释tez-ui模块

<modules>
<module>hadoop-shim</module>
<module>tez-api</module>
<module>tez-build-tools</module>
<module>tez-common</module>
<module>tez-runtime-library</module>
<module>tez-runtime-internals</module>
<module>tez-mapreduce</module>
<module>tez-examples</module>
<module>tez-tests</module>
<module>tez-dag</module>
<module>tez-ext-service-tests</module>
<!-- <module>tez-ui</module> -->
<module>tez-plugins</module>
<module>tez-tools</module>
<module>hadoop-shim-impls</module>
<module>tez-dist</module>
<module>docs</module>
</modules>

◆ 指定Maven仓库地址

<repositories>
<repository>
<id>central</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</pluginRepository>
</pluginRepositories>

◼ 编译

cd /export/server/tez-master

mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true -Phadoop28

-P!hadoop27

a045b34be22f421da8e5a3feaf9a7242.png

◼ 提取安装包

ll tez-dist/target/

098cfc49795242cb9b65bb9d66433076.png

◆ tez-0.10.1-SNAPSHOT-minimal.tar.gz:程序安装包

◆ tez-0.10.1-SNAPSHOT.tar.gz:程序依赖包


1.4 Tez的部署

⚫ 安装

◼ 上传编译好的安装包到HiveServer所在的机器的/export/software目录下

◆ tez-0.10.1-SNAPSHOT-minimal.tar.gz:Tez程序安装包

◆ tez-0.10.1-SNAPSHOT.tar.gz:依赖包

◼ 解压程序安装包:

mkdir /export/server/tez

cd /export/software/

tar -zxvf tez-0.10.1-SNAPSHOT-minimal.tar.gz -C /export/server/tez

◼ 上传依赖包到HDFS上

hdfs dfs –mkdir –p /tez

hdfs dfs -put /export/software/tez-0.10.1-SNAPSHOT.tar.gz /tez

⚫ 配置Hadoop关联Tez

◼ 创建tez-site.xml

cd /export/server/hadoop-3.1.4/etc/hadoop

vim tez-site.xml

◼ 添加以下内容配置

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/tez/tez-0.10.1-SNAPSHOT.tar.gz</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<property>
<name>tez.am.resource.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>tez.am.resource.cpu.vcores</name>
<value>1</value>
</property>
<property>
<name>tez.container.max.java.heap.fraction</name>
<value>0.4</value>
</property>
<property>
<name>tez.task.resource.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>tez.task.resource.cpu.vcores</name>
<value>1</value>
</property>
</configuration>

◼ 将tez-site.xml分发给其他Hadoop节点

cd /export/server/hadoop-3.1.4/etc/hadoop

scp tez-site.xml node2:P W D s c p t e z − s i t e . x m l n o d e 3 : PWD scp tez-site.xml node3:PWDscptez−site.xmlnode3:PWD

◼ 配置环境变量

◆ 修改配置文件

cd /export/server/hadoop-3.1.4/etc/hadoop/shellprofile.d

vim example.sh

◆ 文件末尾添加以下内容

hadoop_add_profile tez

function _tez_hadoop_classpath

{hadoop_add_classpath “$HADOOP_HOME/etc/hadoop” after

hadoop_add_classpath “/export/server/tez/" after

hadoop_add_classpath "/export/server/tez/lib/” after

}

⚫ 配置Hive关联Tez

◼ 修改hive-site.xml,添加以下配置

vim $HIVE_HOME/conf/hive-site.xml

◼ 修改hive-env.sh,添加以下配置


<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
<property>
<name>hive.tez.container.size</name>
<value>1024</value>
</property>

◼ 删除Tez中冲突的依赖包

rm -rf /export/server/tez/lib/slf4j-log4j12-1.7.25.jar

◼ Hadoop的core-site.xml中配置LZO压缩

<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
cd /export/server/hadoop-3.1.4/etc/hadoop/
scp -r core-site.xml node2:$PWD
scp -r core-site.xml node3:$PWD

◼ 配置Hive的环境变量:vim /export/server/hive-3.1.2-bin/conf/hive-env.sh

export TEZ_HOME=/export/server/tez

export TEZ_JARS=""

for jar in ls $TEZ_HOME |grep jar; do

export TEZ_JARS=T E Z J A R S : TEZ_JARS:TEZ

J

ARS:TEZ_HOME/$jar

done

for jar in ls $TEZ_HOME/lib; do

export TEZ_JARS=T E Z J A R S : TEZ_JARS:TEZ

J

ARS:TEZ_HOME/lib/j a r d o n e e x p o r t H I V E A U X J A R S P A T H = / e x p o r t / s e r v e r / h a d o o p − 3.1.4 / s h a r e / h a d o o p / c o m m o n / h a d o o p − l z o − 0.4.21 − S N A P S H O T . j a r jar done export HIVE_AUX_JARS_PATH=/export/server/hadoop-3.1.4/share/hadoop/common/hadoo p-lzo-0.4.21-SNAPSHOT.jarjardoneexportHIVE

A

UX

J

ARS

P

ATH=/export/server/hadoop−3.1.4/share/hadoop/common/hadoop−lzo−0.4.21−SNAPSHOT.jarTEZ_JARS

⚫ 重启Hadoopstop-dfs.sh

stop-yarn.sh

start-dfs.sh

start-yarn.sh

⚫ 启动Hive

/export/server/hive-3.1.2-bin/bin/hive --service metastore

/export/server/hive-3.1.2-bin/bin/hive --service hiveserver2

/export/server/hive-3.1.2-bin/bin/hive

目录
相关文章
|
SQL 存储 资源调度
Hive3新特性 2
Hive3新特性
214 0
Hive3新特性 2
|
SQL 存储 缓存
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (1)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (1)
198 0
|
SQL 存储 分布式计算
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (2)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (2)
143 0
|
SQL 分布式计算 Java
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (3)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (3)
160 0
|
SQL HIVE
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (4)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (4)
136 0
|
SQL 分布式计算 Hadoop
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (5)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (5)
129 0
|
SQL 存储 缓存
【阿里云 CDP 公开课】 第九讲:Hive3 新特性
本文整理自 Cloudera 生态资深解决方案工程师王雪峰在 阿里云CDP公开课 上的分享。
【阿里云 CDP 公开课】 第九讲:Hive3 新特性
|
SQL 存储 缓存
CDP中的Hive3系列之Apache Hive3的特性
CDP中采用的是Apache Hive3版本,该版本相比Hive1/2在事务和安全性等方面有重大改进,了解这些版本之间的主要差异对于 SQL 用户至关重要,包括使用 Apache Spark 和 Apache Impala 的用户。
1008 0
|
存储 SQL 分布式计算
|
SQL 关系型数据库 MySQL
HIVE 新特性 ACID 初试
<div class="markdown_views"> <p>在 Hive 0.14 之前,Hive QL 一直不支持insert、update、delete 操作,这显然很不方便,尤其是在构建数据仓库的过程中,一个比较常见的例子是<code>维度表</code>经常需要更新某列,在 Hive 中需要更新历史所有数据,这显然是不合理的。</p> <p>在 Hive 0.14
5008 0