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中的海量数据进行分析.由于这一特性而收 ...
随机推荐
- LoadRunner迭代与并发的理解
---恢复内容开始--- 四车道的马路,如果只有四辆车并排走过就是并发: 如果四辆车排成一纵队走过就是迭代: 如果有100辆车排成25行依次走过就是并发加迭代. 在以上说法中,只有并排的车是我们 ...
- PHP Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用php实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...
- jquery的dom操作
DOM操作 $("p").appendTo("div");把p标签追加到div标签--中--后 $("p").prependTo(" ...
- JS 设计模式
1.单例模式:产生一个类的唯一实例 例如:我们在页面中添加遮罩层,每次只能有一个遮罩层存在,因此为单例模式. 在创建遮罩层之前判断是否已经存在,若没有存在,则创建. 这里使用闭包,将是mask变量封装 ...
- java播放背景音乐的几种方式
大四第一学期快结束了,准备找实习单位的时候,用了一周的时间去投简历去面试,结果没有一家有反馈要不就是面试没通过,拿着iOS的项目(在老师工作室的外包项目)去面试java开发,结果全部碰壁. 第一种,直 ...
- java 运算符使表达式结果类型自动提升
1.表达式中的自动类型提升: 表达式求值时,Java自动的隐含的将每个byte.short或char操作数提升为int类型,这些类型的包装类型也是可以的. 例如:short s1 = 1; s1 = ...
- 备忘DES带向量的加密和解密与DES简单加密与解密
package com.ego.util; import java.security.Key; import java.security.SecureRandom; import java.secur ...
- 基于android平台的出题软件---- 每日30题
本app共编写了3个activity,1.Mainactivity作为主界面.2.surface,用来显示随机出的题.3.showresult,用来打印所有做过的题(含结果),一个类function用 ...
- 修改 C:\Users\[account name] 目录名称
起因: 修改了用户名(第二个用户,标准用户,从 控制面板——用户账户 修改),后来发现 C:\Users\ 下的文件夹名称未变. 修改了 3 处: 1. 计算机——管理——本地用户和组——用户 2. ...
- js判断浏览器,包括Edge浏览器
/* * 描述:判断浏览器信息 * 编写:LittleQiang_w * 日期:2016.1.5 * 版本:V1.1 */ //判断当前浏览类型 function BrowserType() { va ...