hive 高可用安装教程spark hive on spark 部署

admin2024-06-06  22

Hive On Spark 集成

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

使用版本

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

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

hive 高可用安装教程spark hive on spark 部署,hive 高可用安装教程spark hive on spark 部署_hadoop,第1张

下面进行编译的步骤

更改打包文件

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

hive 高可用安装教程spark hive on spark 部署,hive 高可用安装教程spark hive on spark 部署_spark_02,第2张

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

更改根目录下的pom文件

hive 高可用安装教程spark hive on spark 部署,hive 高可用安装教程spark hive on spark 部署_hive 高可用安装教程spark_03,第3张

因为牵涉到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了


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!