使用spark引擎查询hive有以下几种方式:
1>使用spark-sql(spark sql cli)
2>使用spark-thrift提交查询sql
3>使用hive on spark(即hive本身设置执行引擎为spark)
针对第一种情况:
1>ambari 已经支持,不需要特殊配置;
2>cdh不支持spark sql cli,原因是cdh自带的spark,spark-sql和spark-R是阉割版本的,如果需要使用
spark sql cli,需要下载原生的编译好的spark包替换cdh自带的包

针对第二种情况:

1>cdh 上手动启动/opt/cloudera/parcels/SPARK2-2.0.0.cloudera.beta1-1.cdh5.7.0.p0.108015/lib/spark2/sbin/start-thriftserver.sh 
然后通过beeline连接即可(由于hive-site.xml配置的和hive thrift一样,没有单独配置,所以应在hiveserver2之外的其他节点启动start-thriftserver.sh,这个服务看看能不能添加到spark2管理界面中 ),目前已经调试通过
注:131上spark/conf/yarn-conf/hive-site.xml这个文件不存在,手动拷贝的,50上是有的
2>ambari支持,且sparkthrift服务也启动正常,但是在通过beeline连接的时候报错:
原因是:自启动的hive默认配置不完全,需要手动在spark的配置下找到hive-site的配置添加缺少项;

hive.server2.enable.doAs=true
hive.server2.thrift.port=10016与hive的区别开
hive.server2.transport.mode=binary
spark.yarn.queue=ada.spark
hive.metastore.warehouse.dir=/apps/hive/warehouse,否则找不到会使用执行命令所在目录作为仓库

针对第三种情况:hive on spark要求hive和spark要严格的版本匹配,目前无论是ambari或者cm都不能保证这两个组件版本是匹配的,单独升级某个组件有可能存在隐患,目前还不支持

 

hive on spark:
目前已经在cm上测试通过,具体配置方法如下:
1.将cm上所有节点的hive升级到hive2.2,便于使用cm自带的spark1.6.x;
2.修改所有节点/opt/cloudera/parcels/CDH/lib/hive/bin/hive脚本,在spark_home环境变量下添加如下代码:
CLASSPATH=${CLASSPATH}:${SPARK_HOME}/lib/spark-assembly.jar,重启hive所有的服务;

3.使用 beeline -u jdbc:hive2://10.8.4.46:10000 -n root或者hive命令直接登录,登陆进去之后,执行:

set hive.execution.engine=spark;
set spark.master=yarn-cluster;
set mapreduce.job.queuename=ada.spark;

4.验证是否设置成功:

在hive库中随便找一张有数据的表,执行select count(*) from xxxx(表名),能成功查询即可验证设置成功

设置过程中遇到的问题及解决办法:
1.org.apache.hive.com.esotericsoftware.kryo.KryoException:Encountered unregistered class ID:109
错误原因:
这个问题主要是由于hive不同版本的包导致的,hive 服务启动时会加载/opt/cloudera/parcels/CDH下jars目录下的包,这个目录中残留的有hive1.1版本的包,所以冲突了
解决方法:
删掉hive servers服务和yarn服务所在节点的冲突包,即:
删除yarn节点和hive所在节点下/opt/cloudera/parcels/CDH下jars中有hive1.1的包

2.任务启动后不能提交的问题:
Starting Spark Job = b6f7dd9e-3ffc-4c1c-99a3-7fe4f99c25ac
Job hasn't been submitted after 61s. Aborting it.
Possible reasons include network issues, errors in remote driver or the cluster has no available resources, etc.
Please check YARN or Spark driver's logs for further information.
Status: SENT
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.spark.SparkTask?
错误原因:这个问题主要是默认设置为spark-client,hive服务启动时不知道什么原因没有加载到yarn集群的信息;
解决方法:修改将spark.master=spark-client改为spark.master=yarn-cluster,问题得到解决;

3.snappy错误:
java.lang.UnsatisfiedLinkError?: org.xerial.snappy.SnappyNative?.maxCompressedLength(I)I

at org.xerial.snappy.SnappyNative?.maxCompressedLength(Native Method)

错误原因:spark-assembly已经包含了snappy类,版本与集群提供的不一致;
解决方法:

1.在46上找到/lib/spark/conf/classpath.txt ,打开文件删除snappy相关依赖包,保存;
2.在yarn节点和hive所在节点下执行:

mv /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/spark/conf/classpath.txt /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/spark/conf/classpath.txt_bak;scp 10.8.4.46:/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/spark/conf/classpath.txt /opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/spark/conf

参考链接:
​https://cwiki.apache.org//confluence/display/Hive/Hive+on+Spark:+Getting+Started
​https://blog.csdn.net/pucao_cug/article/category/6941532
​http://mirror.bit.edu.cn/apache/spark/

hive使用spark引擎的几种情况的更多相关文章

  1. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

  2. 伪分布式Spark + Hive on Spark搭建

    Spark大数据平台有使用一段时间了,但大部分都是用于实验而搭建起来用的,搭建过Spark完全分布式,也搭建过用于测试的伪分布式.现在是写一遍随笔,记录一下曾经搭建过的环境,免得以后自己忘记了.也给和 ...

  3. Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化

    转自:http://blog.csdn.net/wh_springer/article/details/51842496 近十年来,随着Hadoop生态系统的不断完善,Hadoop早已成为大数据事实上 ...

  4. 数仓Hive和分布式计算引擎Spark多整合方式实战和调优方向

    @ 目录 概述 Spark on Hive Hive on Spark 概述 编译Spark源码 配置 调优思路 编程方向 分组聚合优化 join优化 数据倾斜 任务并行度 小文件合并 CBO 谓词下 ...

  5. 大数据技术生态圈形象比喻(Hadoop、Hive、Spark 关系)

    [摘要] 知乎上一篇很不错的科普文章,介绍大数据技术生态圈(Hadoop.Hive.Spark )的关系. 链接地址:https://www.zhihu.com/question/27974418 [ ...

  6. SparkSQL与Hive on Spark的比较

    简要介绍了SparkSQL与Hive on Spark的区别与联系 一.关于Spark 简介 在Hadoop的整个生态系统中,Spark和MapReduce在同一个层级,即主要解决分布式计算框架的问题 ...

  7. Spark SQL与Hive on Spark的比较

    简要介绍了SparkSQL与Hive on Spark的区别与联系 一.关于Spark 简介 在Hadoop的整个生态系统中,Spark和MapReduce在同一个层级,即主要解决分布式计算框架的问题 ...

  8. 一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了

    一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了 转载: 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它 ...

  9. Hive、Spark SQL、Impala比较

    Hive.Spark SQL.Impala比较        Hive.Spark SQL和Impala三种分布式SQL查询引擎都是SQL-on-Hadoop解决方案,但又各有特点.前面已经讨论了Hi ...

随机推荐

  1. imageNamed和dataWithContentsOfFile的区别(1)

    imageNamed和dataWithContentsOfFile的区别 imagecacheuiviewextensionprocessingxcode 最近老是受iphone内存问题的困扰,找了些 ...

  2. NHibernate参考文档、下载地址

    没有中文版哦,在线NHibernate参考文档:http://nhforge.org/doc/nh/en/获取地址:http://sourceforge.net/projects/nhibernate ...

  3. 课时56.marquee标签(理解)

    这个标签是比较特殊的,不是html5中的新增标签 在W3C官方文档中找不到这个标签,也就是说不是官方推荐的标签 但是各大浏览器对这个标签的支持也非常不错,而且效果也非常不错 1.什么是marquee标 ...

  4. delect 删除

    delete ---整表数据删除 (慎用) delete  * from 表名; ---条件删除 delete  * from  表名  where  限制条件;

  5. DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描

    DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描 liuyuhang原创,未经允许禁止转载    系列目录连接 DB数据源之Spr ...

  6. RCF的简单使用教程以及什么是回调函数

    RCF的使用教程 RCF(Remote Call Framework)是一个使用C++编写的RPC框架,在底层RCF支持多种传输实现方式(transport implementations). 包括T ...

  7. day 14 内置函数二

    1.昨日的补充 reversed    翻转, 将一个序列翻转,返回翻转序列的迭代器 lst = ["河南话", "四川话", "东北", ...

  8. Invoice Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using Microsoft.Crm.Sdk.Messag ...

  9. rails应用中各数据平台的对接

    1.mongo #Gemfile添加如下两个gem包gem 'mongoid', '~> 5.1.0' gem 'mongo', '~> 2.4’ @client = Mongo::Cli ...

  10. IA64与x86-64的区别

    win7 sp1下载地址:https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/wind ...