Apache Tez

搭建Hive3.x并整合MySQL8.x存储元数据

て烟熏妆下的殇ゞ 提交于 2020-10-27 12:01:56
Hive 简介 Hive 官方文档: https://cwiki.apache.org/confluence/display/Hive Hive 产生的背景: 在使用MapReduce进行编程的时候,会发现实现一个简单的功能例如WordCount都需要编写不少的代码,可想而知如果实现一个复杂点的应用所需的开发和维护成本就会非常高,为了解决MapReduce编程的不便性,Hive才得以诞生。 另外一点就是HDFS上的文件缺少Schema,没法通过SQL去对HDFS上的数据去进行查询,只能通过MapReduce去操作。因此以往可以通过SQL完成的数据统计就没法在HDFS上完成,这会导致上手门槛高。 Hive是什么: 由Facebook开源,最初用于解决海量结构化的日志数据统计问题 是一个构建在Hadoop之上的数据仓库,可以对已经在存储(HDFS)中的数据进行结构化的映射。并提供了一个命令行工具和JDBC驱动程序来连接并操作Hive Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同),使用SQL方便了分布式存储中大型数据集的读取、写入和管理 通常用于进行离线数据处理,早期底层采用MapReduce,现在底层支持多种不同的执行引擎 支持多种不同的压缩格式(gzip、lzo、snappy、bzip2等)、存储格式(TextFile、SequenceFile、RCFile

0808-7.1.1-如何在CDP7.1.1指定Hive SQL的资源池队列

荒凉一梦 提交于 2020-10-10 08:40:07
文档编写目的 Fayson在CDP7.1.1 的使用过程中,发现在使用Hive SQL 中默认无法修改Hive 的资源池,只能提交到defalut 或者 root.hive 队列下,而且显示的提交用户都是hive。这对于一个生产环境中的资源池管理是致命的缺陷,本文主要介绍在CDP7.1.1中如何配置用户的Hive SQL 的资源池队列 测试环境 1.操作系统Redhat7.6 2.CDP DC7.1.1 操作步骤 Fayson使用test用户进行验证,创建了一个root.test 的资源池,设置放置规则test 用户放置到root.test 池下进行验证,具体操作如下: 1、首先确保你集群中的YARN Queue Manager是正常工作的,然后点击群集>动态资源池,在Yarn 创建资源池创建root.test 资源池,root.test资源池配置这里比例为10%,可根据资源情况自行调整 2、设置队列放置规则 Fayson 这里只针对test 用户,设置将test 用户的队列放置到root.test 资源池下 然后执行pyspark 命令验证已经生效。 3、进入beeline 命令或者在hue 中创建一个测试表,并插入一条数据验证 kinit test create table test (s1 string ,s2 string ); insert into test

[源码解析]Oozie来龙去脉之内部执行

微笑、不失礼 提交于 2020-08-14 03:20:30
[源码解析]Oozie来龙去脉之内部执行 目录 [源码解析]Oozie来龙去脉之内部执行 0x00 摘要 0x01 Oozie阶段 1.1 ActionStartXCommand 1.2 HiveActionExecutor 0x2 旧版本LauncherMapper 0x3 新版本Yarn Application Master 3. 1 YARN简介 3.2 ApplicationMaster 3.3 LauncherAM 0x4 Hive on Yarn 0x5 Tez计算框架 5.1 DAGAppMaster 5.2 与Resource Manager交互 0x6 Java on Yarn 0x7 Yarn job 执行结束 7.1 检查任务机制 7.2 回调机制 7.3 异步执行 7.3.1 CallableQueueService 7.3.3 PriorityDelayQueue 7.3.3 PollablePriorityDelayQueue 7.4 跳转下一个操作 0xFF 参考 0x00 摘要 Oozie由Cloudera公司贡献给Apache的基于工作流引擎的开源框架,是用于Hadoop平台的开源的工作流调度引擎,用来管理Hadoop作业,进行。本文是系列的第二篇,介绍Oozie的内部执行阶段。 前文 [源码解析]Oozie的来龙去脉 --- (1)提交任务阶段

[Hive on Tez] Input path does not exists error

自古美人都是妖i 提交于 2020-08-05 00:07:07
Issue hive metadata有分区信息 partition=x, hdfs路径不存在分区目录partition=x时。执行一些hive sql就会报错: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: 见 issue: https://issues.apache.org/jira/browse/HIVE-13781 影响:Hive on Tez. Hive3 解决方案 在执行hive sql执行保证hdfs目录和hive metadata的一致性 回退hive on mr 执行msck repair table修复全表 来源: oschina 链接: https://my.oschina.net/u/3534184/blog/4321187

HIVE架构

穿精又带淫゛_ 提交于 2020-07-28 10:34:39
UI: 用于提交查询的客户端,hive自带有CLI(command line),现在推荐使用beeline DRIVER: 1.用于接收客户端提交的SQL,并实现了session控制 2.并提供了jdbc/odbc的fetch和execute功能 COMPILER: 编译器,负责解析SQL,并从METASTORE那里获取元数据生成执行计划,然后发给DRIVER 执行计划就是一个DAG(有向无环图) 组件: 1.Parser:将查询语句转变成一个parse tree 2.Semantic Analyser:将parse tree变成一个内部的查询表示(依然是基于查询块,而不是operator tree)。同时在这一步也会做语法检查,类型检查和类型隐式转换 3.Logical Plan Generator:将内部的查询表示转变成一个逻辑计划(包含一个operator tree),一些operator是关系代数的filter,join等,另一些是hive特定的,用于将逻辑计划变成一系列的map/reduce job,比如reduceSink operator(出现在map-reduce边界);这一步Optimizer也会对查询进行优化,比如map端聚合等 4.Query Plan Genertor:将逻辑计划转换成一系列的map-reduce tasks.做法是,通过对operator

入门大数据---Hive计算引擎Tez简介和使用

我的未来我决定 提交于 2020-07-28 08:26:43
一、前言 Hive默认计算引擎时MR,为了提高计算速度,我们可以改为Tez引擎。至于为什么提高了计算速度,可以参考下图: 用Hive直接编写MR程序,假设有四个有依赖关系的MR作业,上图中,绿色是Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到HDFS。 Tez可以将多个有依赖的作业转换为一个作业,这样只需写一次HDFS,且中间节点较少,从而大大提升作业的计算性能。 二、安装包准备 1)下载tez的依赖包: http://tez.apache.org 2)拷贝apache-tez-0.9.1-bin.tar.gz到hadoop102的/opt/module目录 [root@hadoop102 module]$ ls apache-tez-0.9.1-bin.tar.gz 3)解压缩apache-tez-0.9.1-bin.tar.gz [root@hadoop102 module]$ tar -zxvf apache-tez-0.9.1-bin.tar.gz 4)修改名称 [root@hadoop102 module]$ mv apache-tez-0.9.1-bin/ tez-0.9.1 三、在Hive中配置Tez 1)进入到Hive的配置目录:/opt/module/hive/conf [root@hadoop102 conf]$ pwd /opt/module

如何找到Hive提交的SQL相对应的Yarn程序的applicationId

柔情痞子 提交于 2020-05-05 13:11:44
最近的工作是利用Hive做数据仓库的ETL转换,大致方式是将ETL转换逻辑写在一个hsql文件中,脚本当中都是简单的SQL语句,不包含判断、循环等存储过程中才有的写法,仅仅支持一些简单的变量替换,比如当前账期等。然后通过一个通用的shell脚本来执行hsql文件。该脚本是主要是调用了hive -f <hsql文件>来执行hsql文件中的SQL语句的,当然hive命令会通过--hivevar选项定义变量将当前账期等数值传进去供SQL使用。 简单说下环境信息,目前使用的大数据平台版本是HDP 3.1.0.0-78,Hive版本是3.1.0,而Tez版本是0.9.1。Hive 3.X系列的新特性主要包括: 1. 执行引擎不再支持mr,取而代之的是tez或者spark(在HDP平台默认是tez); 2. 不再支持胖客户端Hive CLI,被beeline取代(目前通过hive命令执行sql实际还是调用的beeline去连接hiveserver2服务); 3. 默认建表支持ACID语义; 4. 支持LLAP,即Live Long and Process,相当于内存计算,极大地优化了性能(该特性实际从Hive 2.X开始支持); 言归正传,回到本文的主题,比如Hive在运行过程中报错了,我们需要在Yarn上找到对应的application的日志以便定位问题

如何找到Hive提交的SQL相对应的Yarn程序的applicationId

£可爱£侵袭症+ 提交于 2020-05-05 12:38:30
最近的工作是利用Hive做数据仓库的ETL转换,大致方式是将ETL转换逻辑写在一个hsql文件中,脚本当中都是简单的SQL语句,不包含判断、循环等存储过程中才有的写法,仅仅支持一些简单的变量替换,比如当前账期等。然后通过一个通用的shell脚本来执行hsql文件。该脚本是主要是调用了hive -f <hsql文件>来执行hsql文件中的SQL语句的,当然hive命令会通过--hivevar选项定义变量将当前账期等数值传进去供SQL使用。 简单说下环境信息,目前使用的大数据平台版本是HDP 3.1.0.0-78,Hive版本是3.1.0,而Tez版本是0.9.1。Hive 3.X系列的新特性主要包括: 1. 执行引擎不再支持mr,取而代之的是tez或者spark(在HDP平台默认是tez); 2. 不再支持胖客户端Hive CLI,被beeline取代(目前通过hive命令执行sql实际还是调用的beeline去连接hiveserver2服务); 3. 默认建表支持ACID语义; 4. 支持LLAP,即Live Long and Process,相当于内存计算,极大地优化了性能(该特性实际从Hive 2.X开始支持); 言归正传,回到本文的主题,比如Hive在运行过程中报错了,我们需要在Yarn上找到对应的application的日志以便定位问题

搭建hadoop+spark+hive环境(centos极速安装和配置hive)

て烟熏妆下的殇ゞ 提交于 2020-04-24 03:08:17
总共分为三步: 第一步安装配置hadoop: 搭建hadoop+spark+hive环境(centos全远程hadoop极速安装及配置) 第二步安装配置spark: 搭建hadoop+spark+hive环境(centos极速安装和配置spark) 第三步安装配置hive: 搭建hadoop+spark+hive环境(centos极速安装和配置hive) I、下载并且解压hive #下载hive wget http: // apache.claz.org/hive/hive-2.3.6/apache-hive-2.3.6-bin.tar.gz #解压 tar zxf apache-hive- 2.3 . 6 -bin. tar .gz #移动到hadoop文件夹中 mv apache-hive- 2.3 . 6 -bin /usr/local/hadoop/hive- 2.1 . 1 #配置系统环境变量 vim /etc/profile #添加下面三行 export HIVE_HOME=/usr/local/hadoop/hive export HIVE_CONF_DIR=$HIVE_HOME/conf export PATH=$PATH:$HIVE_HOME/bin II、安装其他依赖包 1、mysql-connector驱动 #下载mysql- connector 驱动

Hive运行Tez引擎任务出现always pending

て烟熏妆下的殇ゞ 提交于 2019-12-07 11:03:22
问题描述 在Hive中使用Tez计算引擎执行SQL任务时,Map和Reduce都处于Pending状态。 解决思路 查看任务的ApplicationMaster的container日志如下: 2016-09-13 17:14:52,103 [INFO] [DelayedContainerManager] |rm.YarnTaskSchedulerService|: Releasing held container as either there are pending but unmatched requests or this is not a session, containerId=container_e14_1473755328049_0004_01_000002, pendingTasks=1, isSession=true. isNew=true 2016-09-13 17:14:52,350 [WARN] [AMRM Callback Handler Thread] |rm.YarnTaskSchedulerService|: Held container expected to be not null for a non-AM-released container 2016-09-13 17:14:52,351 [INFO] [AMRM Callback