Hive On Spark概述
Hive现有支持的执行引擎有mr和tez,默认的执行引擎是mr,Hive On Spark的目的是添加一个spark的执行引擎,让hive能跑在spark之上;
在执行hive ql脚本之前指定执行引擎、spark.home、spark.master
set hive.execution.engine=spark;
set spark.home=/home/spark/app/spark-1.3.-bin-spark-without-hive;
set spark.master=yarn;
Hive On Spark与Spark SQL/Shark的区别:
Spark SQL/Shark:
1、将sql语义翻译成Spark RDD在Spark上执行;
2、Spark SQL是基于hive snapshot版本,虽然能够兼容hive,但是使用的版本早于当前hive的release版本,最新的一些特性则无法使用;
3、Spark SQL使用Spark的transformation和action替换Hive sql的构建; 将会丢失一些hive自身构建实现的特性;
Hive on Spark:
1、将hql语义翻译成MapReduce在Spark上执行;
2、Hive On Spark则是与hive共同演化;
3、Hive On Spark使用的是Hive的构建,将包含Hive所有的特性,Spark仅仅是一个通用的执行引擎而已;
为Hive添加一个spark执行引擎涉及到如下方面:
1、查询计划
将Hive的逻辑执行计划进一步翻译成Spark能够执行的Spark计划;
2、查询执行
得到的Spark计划真正在Spark集群中运行;
3、监控、计数器、统计等
查询计划:
当hive接收到一个sql语句时,使用Hive的语法解析器解析成一个操作计划;
对于On Spark引擎,引入了SparkComplier,类似于MapReduceCompiler和TezCompiler;
SparkComplier:
将从Hive中得到的逻辑执行计划转成在Spark上能运行的计划;
在产生Spark计划的时候做一些物理执行计划的优化;
SparkTask:在Spark集群中执行的一个job
SparkWork:SparkTask的计划,可以通过explain查看
SparkComplier: 将Hive的执行计划转化成一个SparkWork
查询执行:
SparkTask.execute()在SparkWork之外产出rdd以及相应的方法,通过Spark Client提交给Spark集群执行;一旦SparkTask提交给了Spark集群,Spark Client将监控job的执行情况;
通过SparkJobMonitor来处理打印任务的执行状态和最终的执行结果;Spark Job的提交是通过SparkContext对象完成的;当SparkTask被hive执行时,就会为当前用户session创建一个SparkContext;
Hive表相关的RDD将会被创建;MapFunction、ReduceFunction将会被SparkWork创建并且作用在RDD上;当在RDD上执行foreach方法时该RDD上的job就会被触发执行。
监控、计数器、统计等:
监控:
Spark在每个SparkContext运行时提供了WebUI,当时该UI中只能展现出运行时的Application信息;
为了在Application运行完后也能重新渲染UI信息,需要在启动Application之前设置spark.eventLog.enabled为true;
Standalone模式运行时可以通过WebUI展示,YARN/Mesos模式运行时,可以通过Spark History Server来展现;
计数器/统计:
在Spark中提供了accumulator实现计数器,使用Metrics实现统计;
Hive On Spark概述的更多相关文章
- 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序
第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...
- Spark概述及集群部署
Spark概述 什么是Spark (官网:http://spark.apache.org) Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010 ...
- Spark入门:第1节 Spark概述:1 - 4
2.spark概述 2.1 什么是spark Apache Spark™ is a unified analytics engine for large-scale data processing. ...
- 1 Spark概述
第1章 Spark概述 1.1 什么是Spark Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵 ...
- Hive和Spark分区策略
1.概述 离线数据处理生态系统包含许多关键任务,最大限度的提高数据管道基础设施的稳定性和效率是至关重要的.这边博客将分享Hive和Spark分区的各种策略,以最大限度的提高数据工程生态系统的稳定性和效 ...
- Hive on Spark安装配置详解(都是坑啊)
个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...
- Hive On Spark环境搭建
Spark源码编译与环境搭建 Note that you must have a version of Spark which does not include the Hive jars; Spar ...
- Apache Spark源码走读之12 -- Hive on Spark运行环境搭建
欢迎转载,转载请注明出处,徽沪一郎. 楔子 Hive是基于Hadoop的开源数据仓库工具,提供了类似于SQL的HiveQL语言,使得上层的数据分析人员不用知道太多MapReduce的知识就能对存储于H ...
- Hive on Spark运行环境搭建
Hive是基于Hadoop的开源数据仓库工具,提供了类似于SQL的HiveQL语言,使得上层的数据分析人员不用知道太多MapReduce的知识就能对存储于Hdfs中的海量数据进行分析.由于这一特性而收 ...
随机推荐
- C#中as用法
在程序中,进行类型转换时常见的事,C#支持基本的强制类型转换方法,例如 Object obj1 = new NewType();NewType newValue = (NewType)obj1;这样强 ...
- storyboard tabbarcontroller设置tab的图片
在storyboard里逐项设置了图片,咦,怎么是颜色?别急,慢慢来 找到你的tabbarcontroller指向的viewcontroller,在viewdidload里做如下事,搞定 - (voi ...
- 让xterm更舒服的设置
转自:http://codespider.is-programmer.com/posts/25247.html X11相关的配置位于/etc/X11下. xterm的配置是/etc/X11/app-d ...
- spring data mongodb 配置遇到的几个问题
一. mongodb 2.2版本以上的配置 spring.data.mongodb.uri = mongodb://newlook:newlook@192.168.0.109:27017/admin ...
- spring logback 配置
<appender name="DubboInfo" class="ch.qos.logback.core.rolling.RollingFileAppender& ...
- Codeforces Round #169 (Div. 2)
A. Lunch Rush 模拟. B. Little Girl and Game 因为可以打乱顺序,所以只关心每种数字打奇偶性. 若一开始就是回文,即奇数字母为0或1种,则先手获胜. 若奇数字母大于 ...
- uva1262
/* 解码 _________________________________________________________________________________ #include < ...
- 如何用css3实现一个图片的抖动或者弹跳
<li onmouseout="this.className='off'"><a href=""><img src=". ...
- Fiddler (HTTP抓包)简介
1.什么是Fiddler? Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一.它能够记录客户端和服务器之间的所有HTTP请求,可以针对特定的HTTP请求,分析请 ...
- Android应用开发-网络编程(二)(重制版)
Apache HttpClient框架 GET方式请求提交数据 1. 创建一个HttpClient HttpClient hc = new DefaultHttpClient(); 2. 创建一个Ht ...