1. 版本兼容
Hive on Spark仅使用特定版本的Spark进行测试,因此只能确保给定版本的Hive与特定版本的Spark一起使用。其他版本的Spark可能与给定版本的Hive一起使用,但这不能保证。下面是Hive版本列表及其相应的兼容Spark版本。
Hive Version | Spark Version |
---|---|
master | 2.3.0 |
3.0.x | 2.3.0 |
2.3.x | 2.0.0 |
2.2.x | 1.6.0 |
2.1.x | 1.6.0 |
2.0.x | 1.5.0 |
1.2.x | 1.3.1 |
1.1.x | 1.2.0 |
2. 安装Spark
2.1 环境配置
- java 1.8.0+
- hadoop 2.7.0+
- hive 2.3.0
- spark 2.0.2
- scala 2.11.12
2.2 编译安装
-
安装/构建兼容版本。从上诉版本中选择适合的Spark版本进行编译安装.
-
安装/构建兼容的分发版。每个版本的Spark都有几个发行版,对应不同版本的Hadoop。
-
注意,必须拥有不包含Hive jar 的Spark版本 。Spark的发行版本为了兼顾Spark SQL都会包含有Hive相关的jar,所以我们需要通过源码重新编译,去重相关的jar.
在Spark 2.0.0之前:
./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4,parquet-provided"
自Spark 2.0.0起:
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"
自Spark 2.3.0起:
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided,orc-provided"
3. 配置Hive
3.1 拷贝spark下的jar包到hive的lib下
- cp scala-library-2.11.8.jar /usr/share/hive-2.3.0/lib/
- cp spark-core_2.11-2.0.2.jar /usr/share/hive-2.3.0/lib/
- cp spark-network-common_2.11-2.0.2.jar /usr/share/hive-2.3.0/lib/
3.2 配置Hive执行引擎以使用Spark
在hive-site.xml
文件中添加:
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
4. 允许Yarn在节点上缓存必要的spark依赖关系jar,这样每次应用程序运行时都不需要分发它。
-
在Hive 2.2.0之前,将spark-assembly jar上传到hdfs文件(例如:hdfs:// xxxx:8020 / spark-assembly.jar)并在hive-site.xml中添加以下内容
<property> <name>spark.yarn.jar</name> <value>hdfs://xxxx:8020/spark-assembly.jar</value> </property>
-
Hive 2.2.0,将$ SPARK_HOME / jars中的所有jar上传到hdfs文件夹(例如:hdfs:/// xxxx:8020 / spark-jars)并在hive-site.xml中添加以下内容
<property> <name>spark.yarn.jars</name> <value>hdfs://xxxx:8020/spark-jars/*</value> </property>
网友评论