HiveOnSpark集成

Hive On Spark 集成

大多数情况下Hive On Spark 是无法使用Spark官方版本给定的编译成功的包的,因为里面对应的hadoop版本与生产环境的版本是无法匹配的,这就需要对spark源码进行重新编译。

使用版本

  • spark-2.3
  • hive-3.12
  • hadoop-3.2

spark下载下来的源码包的目录结构如下:

在这里插入图片描述

下面进行编译的步骤

更改打包文件

spark 的打包主要依赖dev/make-distribution.sh 这个文件,打开后首先更改其maven地址,当然这一步只是建议,不更改的话这个脚本会自动进行安装maven,最好将其设置为本地自己安装的maven,然后为本地安装的maven设置国内比较快的镜像源,比如阿里云。

在这里插入图片描述

打开过后将MVN指向本地的maven即可

更改根目录下的pom文件

在这里插入图片描述

因为牵涉到haoop版本,所以需要对其pom文件进行修改,当然如果存在则不需要修改,直接使用即可。

在这里的profile里面加上对应的hadoop版本,大概在2650行。

比如在spark官方包里面是没有hadoop-3.2版本的,在里面加入以下代码即可:

<profile>
  <id>hadoop-3.2</id>
  <properties>
    <hadoop.version>3.2.0</hadoop.version>
    <curator.version>2.13.0</curator.version>
  </properties>
</profile>

同理,scala等也一样。

开始编译

编译时,因为是Hive On Spark ,所以不要启用hive的profile。(maven编译时通过-P指定用哪个profile,即-Phadoop-3.2即将全局的hadoop.version更改为3.2.0,-Pyarn将当前模块打包)

打包命令为:

dev/make-distribution.sh --name spark3.0withouthive -Pyarn -Pscala-2.11 -Phadoop-3.2

然后就进入漫长的打包过程了

打包完成后根目录下的dist即为编译过后的成果了,然后将其分发到对应的saprk根目录下。

scp -r ./dist/* spark@node1:/app/spark-2.3.0/

配置hive

修改hive-site.xml配置

<property>
        <name>hive.execution.engine</name>
        <value>spark</value>
</property>
<property>
  <name>spark.yarn.jars</name>
  <value>hdfs://hadoop-cluster:8020/spark_jars/*</value>
</property>

<property>
  <name>spark.home</name>
  <value>/app/spark</value>
</property>
<property>
  <name>spark.master</name>
  <value>yarn</value>
</property>

然后将hive-site.xml复制到 SPARK_HOME/conf/下,再将hadoop的core-site.xml,hdfs-site.xml的配置文件也复制到$SPARK_HOME/conf下即可。

配置spark

spark的配置文件主要有两个 spark-defaults.conf,spark-env.sh

spark-defaults.conf



spark.master=yarn

spark.driver.memory=2g
spark.executor-memory=5g

spark.yarn.jars=hdfs://hadoop-cluster:8020/spark_jars/*

spark.master指定saprk的master地址,这里主要是spark on yarn,所以只要指定是yarn即可,如果是spark集群,则指定saprk master的地址即可

spark.yarn.jars指定的是spark在yarn运行时的jar的地址

spark-env.sh


export JAVA_HOME=/app/java
export SPARK_CLASSPATH=/app/spark/jars/mysql-connector-java-8.0.16.jar
export HADOOP_HOME=/app/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

这里主要设置一些环境变量

上传jar到hdfs

将spark on yarn 所需要的jar上传到hdfs

hdfs dfs -put $SPARK_HOME/jars/* /spark_jars/

拷贝jar

这里需要将spark 的包复制到$HIVE_HOME/lib 中

主要是 scala-compiler-2.11.8.jar,scala-library-2.11.8.jar,spark-core_2.11-2.3.5-SNAPSHOT.jar,spark-network-common_2.11-2.3.5-SNAPSHOT.jar

此时已经配置完毕,即可运行hive了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值