当前位置:   article > 正文

Hive on Spark配置_hive1.1.0配置spark2.2.0

hive1.1.0配置spark2.2.0

项目中用hive处理数据,但是hive默认处理引擎是MR,速度比较拉垮。

在此记录分享一下hive on spark的配置。

1. Hive on Spark

基于Spark的Hive,实质上是将Hive默认的计算引擎MapReduce替换成Spark。

hive on spark简介可查看:https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark

2. 配置

2.1 版本兼容性

hive和spark版本兼容。这个版本兼容不是强制的,但是它给的这个是肯定可以跑的。

Hive VersionSpark Version
master2.3.0
3.0.x2.3.0
2.3.x2.0.0
2.2.x1.6.0
2.1.x1.6.0
2.0.x1.5.0
1.2.x1.3.1
1.1.x1.2.0

2.2 安装Spark

安装的spark,必须是一个不包含hive的jar包的版本。

但是一般spark发行版都是有hive依赖的,所以要手动编译源码来获得不包含hive相关jar的spark二进制包。

spark源码包下载地址:http://archive.apache.org/dist/spark/

不同版本编译源码包的方式:
  • Spark 2.0.0前
./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4,parquet-provided"
  • 1
  • 从Spark 2.0.0开始
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"
  • 1
  • 从Spark 2.3.0开始
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"
  • 1

编译完成后,在目录下会出现spark-1.5.1-bin-hadoop2-without-hive.gz

将包解压即可。

2.3 配置Yarn

yarn必须使用公平调度机制。

使用yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler来配置

2.4 配置Hive

1. 添加spark的依赖到hive
  • Hive 2.2.0之前,将spark-assembly jar放到HIVE_HOME/lib
  • Hive 2.2.0之后,没有了spark-assembly jar。在Yarn模式运行时,需要将以下三个包放在HIVE_HOME/lib下 :scala-library、spark-core、spark-network-common。
2. 在hive中设置使用spark引擎

这个可以在hive-site.xml中配置,也可以直接通过set hive.execution.engine=spark;来指定。

3. 在hive中配置spark

可以将spark-defaults.conf放在hive classpath下,也可以在hive-site.xml中配置。

set spark.home=/usr/spark
set spark.master=<Spark Master URL>
set spark.eventLog.enabled=true;
set spark.eventLog.dir=<Spark event log folder (must exist)>
set spark.executor.memory=512m;             
set spark.serializer=org.apache.spark.serializer.KryoSerializer;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
4. 允许yarn缓存spark的依赖在节点中,而不用每次提交任务都分发jar包
  • Hive 2.2.0之前的版本,将spark-assembly jar上传到hdfs中,并在hive-site.xml中添加如下内容:

    <property>
      <name>spark.yarn.jar</name>
      <value>hdfs://xxxx:8020/spark-assembly.jar</value>
    </property>
    
    • 1
    • 2
    • 3
    • 4
  • Hive 2.2.0之后的版本,上传$SPARK_HOME/jars下的jar包到hdfs的文件夹中,并在hive-site.xml中配置:

    <property>
      <name>spark.yarn.jars</name>
      <value>hdfs://xxxx:8020/spark-jars/*</value>
    </property>
    
    • 1
    • 2
    • 3
    • 4

3. 使用

set hive.execution.engine=spark;

执行sql,就会转换为spark的task来执行。
  • 1
  • 2
  • 3

4. 参考

https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark:+Getting+Started#HiveonSpark:GettingStarted-VersionCompatibility

https://blog.csdn.net/weixin_43860247/article/details/89184081

https://www.cnblogs.com/linbingdong/p/5806329.html

https://blog.csdn.net/mycafe_/article/details/79132727

https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/634583
推荐阅读
相关标签
  

闽ICP备14008679号