1.hive执行引擎

Hive默认使用MapReduce作为执行引擎,即Hive on mr。实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on Spark。由于MapReduce中间计算均需要写入磁盘,而Spark是放在内存中,所以总体来讲Spark比MapReduce快很多。

默认情况下,Hive on Spark 在YARN模式下支持Spark。

2.前提条件:安装JDK-1.8/hadoop-2.7.2等,参考之前的博文

3.下载hive-2.1.1.src.tar.gz源码解压后,打开pom.xml发现spark版本为1.6.0---官网介绍版本必须对应才能兼容如hive2.1.1-spark1.6.0 

4.下载spark-1.6.0.tgz源码(网上都是带有集成hive的,需要重新编译)

5.上传到Linux服务器,解压

6.源码编译

#cd  spark-1.6.0

#修改make-distribution.sh的MVN路径为/usr/app/maven/bin/mvn    ###查看并安装pom.xml的mvn版本

#./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4,parquet-provided"

#等待一个多小时左右吧,保证联网环境,有可能外网访问不到下载不了依赖项,配置访问外网或配置阿里云仓库,重新编译

7.配置

#vim /etc/hosts     192.168.66.66 xinfang

#解压spark-1.6.0-bin-hadoop2-without-hive.tgz,并命名为spark

#官网下载hive-2.1.1解压  并命令为hive(关于hive详细配置,参考http://blog.csdn.net/xinfang520/article/details/77774522)

#官网下载scala2.10.5解压,并命令为scala

#chmod -R 755 /usr/app/spark  /usr/app/hive   /usr/app/scala

#配置环境变量-vim /etc/profile

#set hive
export HIVE_HOME=/usr/app/hive
export PATH=$PATH:$HIVE_HOME/bin#set spark
export SPARK_HOME=/usr/app/spark
export PATH=$SPARK_HOME/bin:$PATH#set scala
export SCALA_HOME=/usr/app/scala
export PATH=$SCALA_HOME/bin:$PATH

#配置/spark/conf/spark-env.sh

export JAVA_HOME=/usr/app/jdk1.8.0
export SCALA_HOME=/usr/app/scala
export HADOOP_HOME=/usr/app/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
export SPARK_LAUNCH_WITH_SCALA=0
export SPARK_WORKER_MEMORY=512m
export SPARK_DRIVER_MEMORY=512m
export SPARK_MASTER_IP=192.168.66.66
#export SPARK_EXECUTOR_MEMORY=512M
export SPARK_HOME=/usr/app/spark
export SPARK_LIBRARY_PATH=/usr/app/spark/lib
export SPARK_MASTER_WEBUI_PORT=18080
export SPARK_WORKER_DIR=/usr/app/spark/work
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_PORT=7078
export SPARK_LOG_DIR=/usr/app/spark/logs
export SPARK_PID_DIR='/usr/app/spark/run' 

#配置/spark/conf/spark-default.conf

spark.master                     spark://xinfang:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://xinfang:9000/spark-log
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.executor.memory            512m
spark.driver.memory              512m
spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

#修改hive-site.xml(hive详细部署参考http://blog.csdn.net/xinfang520/article/details/77774522)

<configuration>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.66.66:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>1</value>
</property>
<!--<property>
<name>hive.hwi.listen.host</name>
<value>192.168.66.66</value>
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-2.1.1.war</value>
</property>-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/user/hive/log</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>192.168.66.66</value>
</property>
<property>
<name>hive.server2.webui.host</name>
<value>192.168.66.66</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<property>
<name>hive.server2.long.polling.timeout</name>
<value>5000</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateSchema </name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore </name>
<value>true</value>
</property>
<!-- hive on mr-->
<!--
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.66.66:9001</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
-->
<!--hive on spark or spark on yarn -->
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
<property>
<name>spark.home</name>
<value>/usr/app/spark</value>
</property>
<property>
<name>spark.master</name>
<value>spark://xinfang:7077</value>  或者yarn-cluster/yarn-client
</property>
<property>
<name>spark.submit.deployMode</name>
<value>client</value>
</property>
<property>
<name>spark.eventLog.enabled</name>
<value>true</value>
</property>
<property>
<name>spark.eventLog.dir</name>
<value>hdfs://xinfang:9000/spark-log</value>
</property>
<property>
<name>spark.serializer</name>
<value>org.apache.spark.serializer.KryoSerializer</value>
</property>
<property>
<name>spark.executor.memeory</name>
<value>512m</value>
</property>
<property>
<name>spark.driver.memeory</name>
<value>512m</value>
</property>
<property>
<name>spark.executor.extraJavaOptions</name>
<value>-XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"</value>
</property>
</configuration>

#新建目录

hadoop fs  -mkdir  -p   /spark-log
hadoop   fs  -chmod  777  /spark-log
mkdir -p  /usr/app/spark/work  /usr/app/spark/logs  /usr/app/spark/run
mkdir -p /usr/app/hive/logs 

#拷贝hive-site.xml到spark/conf下(这点非常关键)

#hive进入客户端

hive>set hive.execution.engine=spark; (将执行引擎设为Spark,默认是mr,退出hive CLI后,回到默认设置。若想让引擎默认为Spark,需要在hive-site.xml里设置)
hive>create table test(ts BIGINT,line STRING); (创建表)
hive>select count(*) from test;

若整个过程没有报错,并出现正确结果,则Hive on Spark配置成功。

http://192.168.66.66:18080

8.网上转载部分解决方案

第一个坑:要想在Hive中使用Spark执行引擎,最简单的方法是把spark-assembly-1.5.0-hadoop2.4.0.jar包直接拷贝 到$HIVE_HOME/lib目录下。

第二个坑:版本不对,刚开始以为hive 能使用 spark的任何版本,结果发现错了,hive对spark版本有着严格要求,具体对应版本你可以下载hive源码里面,搜索他pom.xml文件里面的spark版本,如果版本不对,启动hive后会报错。具体错误如下:

Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)' FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask

第三个坑:./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4" ,开启spark报错找不到类

解决办法是在spark-env.sh里面添加 :export SPARK_DIST_CLASSPATH=$(hadoop classpath)

#如果启动包日志包重复需要删除
#根据实际修改hive/bin/hive:(根据spark2后的包分散了)
sparkAssemblyPath='ls ${SPARK_HOME}/lib/spark-assembly-*.jar' 
将其修改为:sparkAssemblyPath='ls ${SPARK_HOME}/jars/*.jar'

#spark1 拷贝spark/lib/spark-* 到/usr/app/hive/lib

9.参考文章说明

#参考http://spark.apache.org/docs/latest/building-spark.html

#参考http://www.cnblogs.com/linbingdong/p/5806329.html

#参考http://blog.csdn.net/pucao_cug/article/details/72773564

#参考https://cwiki.apache.org//confluence/display/Hive/Hive+on+Spark:+Getting+Started

转载于:https://www.cnblogs.com/xinfang520/p/7684605.html

Hive记录-Hive on Spark环境部署相关推荐

  1. Hive记录-Hive常用命令操作

    1.hive支持四种数据模型 • external table ---外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该 ...

  2. 轻量级JavaWeb开发环境部署

    本文章是结合轻量级JavaWeb企业级应用实战所写的学习总结记录文章,开发环境部署文章仍然使用的是我的旧文章习惯,在下一章我会使用新的文章书写习惯来更清晰和简便的记录 Tomcat的安装 tomcat ...

  3. hdfs spark mysql环境_Mac上Hadoop, HDFS, Hive, Spark环境的安装和搭建

    安装前准备 jdk安装 java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build ...

  4. Hive记录-配置远程连接(JAVA/beeline)

    1.修改配置hive-site.xml    hadoop core-site.xml限制---参考Hive记录-部署Hive环境 2.启动hadoop #sh /usr/app/hadoop/sbi ...

  5. 深入浅出理解 Spark:环境部署与工作原理

    一.Spark 概述 Spark 是 UC Berkeley AMP Lab 开源的通用分布式并行计算框架,目前已成为 Apache 软件基金会的顶级开源项目.Spark 支持多种编程语言,包括 Ja ...

  6. 大数据平台安装实验: ZooKeeper、Kafka、Hadoop、Hbase、Hive、Scala、Spark、Storm

    文章目录 实验1:Hadoop大数据平台安装实验 1. 实验目的 2. 实验环境 3. 实验过程 3.1 虚拟机的搭建 3.1.1 安装虚拟机 3.1.2 基本linux命令 3.2 准备工作 3.2 ...

  7. kafka 基础知识梳理及集群环境部署记录

    一.kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特 ...

  8. Hive相关(概述、环境搭建、命令、API、JDBC、HBase整合等)

    Hive Apache Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的类sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优 ...

  9. SQL数据分析概览——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid

    转自infoQ! 根据 O'Reilly 2016年数据科学薪资调查显示,SQL 是数据科学领域使用最广泛的语言.大部分项目都需要一些SQL 操作,甚至有一些只需要SQL. 本文涵盖了6个开源领导者: ...

最新文章

  1. WebForm页面生命周期及asp.net运行机制
  2. 聚类时需要标准化吗_打球时意外受伤,同伴需要担责吗?
  3. python2的idle打不开了
  4. IE浏览器url中带中文报错的问题;以及各种兼容以及浏览器问题总结
  5. CarMaker中关于交通目标行人横穿的问题
  6. 软件开发中的资源管理
  7. c# 火狐浏览器怎么嵌入窗体中_.net winform程序下使用firefox作为Web浏览器
  8. 苹果手机突然没信号无服务器,iPhone突然没信号?3个方法让你迅速解决断线问题!...
  9. DRP项目知识点一: 数据库连接-封装Connection
  10. 双向链表学生管理系统(0723)
  11. weADMIN的搭建 for Debian
  12. Codeforces Round #444 (Div. 2)-贪心尺取-Ratings and Reality Shows
  13. No debugging symbols found in a.out
  14. 中年危机也许只是个幻觉
  15. 产品周报第27期|会员新增拉黑用户权益;CSDN APP V5.1.0版本发布……
  16. 好听的音乐---飛魚樂園音樂專輯(Orchid Island)
  17. 【Python】阿里云对象存储OSS图床上传图片
  18. 微信公众号测试账号总结
  19. table 添加表行的底部边框、定制表格边框
  20. Winetricks最新版本安装

热门文章

  1. 深度揭秘“蚂蚁双链通” 1
  2. web前端技术基础课程讲解之浅谈对soket的理解
  3. 浏览器滚动的详细解释 Vue 固定滚动位置的实现
  4. Rancher助力美国农业部的容器实践之路
  5. 使用NSURLProtocol实现UIWebView的离线缓存
  6. 朴素的UNIX之-Linux CFS一个注释
  7. eclipse调试的时候查看变量出现com.sun.jdi.InvocationException occurred invoking method.
  8. sql中 in 、not in 、exists、not exists 用法和差别
  9. WCF在安全性方面的支持(1):一些概念
  10. Spring MVC初见面