当前位置:   article > 正文

Hive3.1.2整合Spark3.0.0-HiveOnSpark_apache-hive-3.1.2 spark

apache-hive-3.1.2 spark

一,整合原理

1,HiveOnSpark

Hive是一个Sql解析引擎,其不具备计算能力,Hive将Sql解析为物理执行计划,将物理执行计划转换为计算任务,交由计算引擎执行,默认的引擎是MapReduce,但MapReduce执行速度慢,随着Spark的崛起,Hive支持Spark作为计算引擎,这就是HiveOnSpark

2,SparkOnHive

比较容易混淆,二者差距还是很大的,SparkOnHive只是使用了Hive的元数据服务,Sql解析由Spark完成、计算也由Spark完成。

3,Hive 3.1.2与spark 3的兼容性问题

Hive3.1.2默认支持Spark2.3.0,默认支持的意思是Hive在调用Spark的Api时,使用的是2.3.0版本的Api,这些Api在Spark3时可能已经被移除了,或者签名变了。如果Hive运行在Spark3的环境中,必然出现ClassNotFound或者NoMethodDef之类的异常。

解决办法是修改Hive源码。

二,整合步骤

  • 1,安装hadoop,主要是yarn和hdfs,配置环境变量
  • 2,安装spark,配置spark环境变量
  • 3,安装hive,配置环境变量

三,安装hadoop

1,将Hadoop的压缩包上传到服务器,解压
2,配置core-site.xml,其中最重要的两个配置如下

<property>
   <!-- namenode的端口,对hdfs的访问要通过该端口进行 -->
    <name>fs.defaultFS</name>
    <value>hdfs://node1:8080</value>
  </property>
  
  <!-- hdfs文件在本地磁盘的存储位置 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/export/atguigu/soft/hadoop-3.1.3/data</value>
  </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3,配置hdfs-site.xml文件

配置hdfs web服务的服务器和访问端口
配置副本数

<property>
    <name>dfs.namenode.http-address</name>
    <value>node1:9870</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node3:9686</value>
  </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4,配置yarn-site.xml

配置ResourceManager的位置
配置日志聚合

<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>node2</value>
 </property>
 <property>
   <name>yarn.log.server.url</name>
   <value>http://node2:19888/jobhistory/logs</value>
 </property>
 <property>
   <name>mapreduce.log-aggregation.retain-seconds</name>
   <value>604800</value>
 </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

5,/etc/profile中配置Hadoop的环境变量

export HADOOP_HOME=/export/soft/hadoop-3.1.3
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
  • 1
  • 2
  • 3
  • 4

6,将hadoop根目录和环境变量在hadoop集群所有节点上按如上步骤配置,可以通过scp分发的方式快速完成。

四,Spark安装

1,上传、解压Spark3.0.0安装包
2,配置spark环境变量

export SPARK_HOME=/export/soft/spark-3.0.0-bin-hadoop3.2/
export PATH=:$PATH:$SPARK_HOME/bin
  • 1
  • 2

PS:spark的作用是提供spark任务的执行环境,Hive会通过spark-submit提交spark任务,spark将任务分发到spark集群各个节点。

3,在集群所有节点上安装spark,配置环境变量。

五,安装Hive

1,上传、解压Hive安装包
2,配置环境变量:

export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
  • 1
  • 2

3,hive安装目录下,创建如下文件

hive/conf/spark-defaults.conf
  • 1

内容如下,指定提交spark任务的各种参数:

spark.master                               yarn
spark.eventLog.enabled                   true
spark.eventLog.dir                        hdfs://node1:8080/spark-history
spark.executor.memory                    1g
spark.driver.memory					   1g
  • 1
  • 2
  • 3
  • 4
  • 5

4,创建上一步配置中的hdfs文件夹,存储历史日志

hadoop fs -mkdir /spark-history
  • 1

5,将纯净版的spark3.0.0的jar上传到hdfs,所谓纯净版,就是没有掺杂hadoop和hive的jar包。主要原因是spark3.0.0默认支持的hadoop和hive都是2.x.x,hive3在将物理执行计划转换为spark任务时会使用到spark的jar包,如果这里的jar包含了hive2的jar包,会出现冲突,所以不适用集群上安装的spark自带的jar包,而是将纯净版的sparkjar包上传到hdfs上,作为hive的专用包。

先创建hdfs文件夹:

hadoop fs -mkdir /spark-jars
  • 1

6,上传纯净版spark jar到hdfs

hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars
  • 1

7,hive配置文件指定使用spark引擎和spark jar包位置

vim /opt/module/hive/conf/hive-site.xml
  • 1

<property>
    <name>spark.yarn.jars</name>
    <value>hdfs://hadoop102:8020/spark-jars/*</value>
</property>
  
<property>
    <name>hive.execution.engine</name>
    <value>spark</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

六,测试

  • 启动hive客户端
 bin/hive
  • 1
  • 创建一张测试表
hive (default)> create table student(id int, name string);
  • 1
  • 通过insert测试效果
hive (default)> insert into table student values(1,'abc');
  • 1

出现如下界面表示整合成功:

在这里插入图片描述

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

闽ICP备14008679号