搭建Hive On Spark

随着Hadoop的深入学习,渐渐用到了Hadoop相关的家族成员Hive、Spark、Sqoop等,其中Hive主要是为了使我们在进行大数据开发的时候更加快捷高效,而且又因为它的类SQL的特性使我们很容易上手;而Spark这个工具是极为高效的大数据的处理引擎,据说是可以达到Hadoop的MapReduce处理速度的几十倍,但是由于它不像Hive使用类SQL的语法,因此学习的成本要高很多,因此在Hadoop社区中开发人员开发引进了基于Spark数据处理引擎的Hive,称为Hive On  Spark。下面我们来学习下如何把Spark作为数据处理引擎集成到Hive中。

1、源码编译Spark

Spark源码下载地址:http://spark.apache.org/downloads.html

在官方网站上我们可以下载任意版本的Spark源码,在这里我们选择Spark-1.3.1.

wget http://www.apache.org/dyn/closer.lua/spark/spark-1.3.1/spark-1.3.1.tgz
tar -zxvf spark-1.3.1.tgz
cd spark-1.3.1

文件目录结构大致为


目录下有一个pom.xml的文件,这个文件中包含了我们在编译源码时所需要的依赖和条件,我们需要根据自己的条件来修改这个文件


修改完毕后保存

然后,执行以下命令

./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.2,parquet-provided"
注意,这里是编译不含hive 相关jar包的spark安装包,在编译期间一定要处于联网的情况下并且最好是把防火墙关掉。

编译成功后



源码目录下就多了这样一个二进制文件了,并且在assembly/target/scale-2.10文件夹下就多了spark-assembly-1.3.1-hadoop2.2.0.jar 这个文件

2、安装Spark

解压安装包

tar -zxvf spark-1.3.1-bin-hadoop2-without-hive.tgz
mv spark-1.3.1-bin-hadoop2-without-hive spark-1.3.1
配置环境变量

SPARK_HOME=/mnt/sdd/spark-1.3.1
export PATH=$SPARK_HOME/bin:$PATH
export SPARK_HOME=$SPARK_HOME
编辑配置文件

vim spark-env.sh
增加以下配置

export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export SPARK_LOCAL_IP=master
安装测试

cd /mnt/sdd/spark-1.3.1
./bin/run-example SparkPi 10

出现上面的内容且无报错,则证明安装成功!

3、配置Hive On Spark

Hive On Spark 是指把Hive默认的数据处理引擎改为Spark,我们这里使用的是Hive-1.2.1版本的Spark,但是在配置过程中发现只有Spark-1.3.1才能与之集成成功,其他版本的Spark均失败了。可能是应为版本兼容性的问题吧。

cp spark-1.3.1/conf/spark-defaults.conf hive-1.2.1/conf/
vim spark-defaults.conf
配置spark-defaults.conf

spark.home			 /mnt/sdd/spark-1.3.1
spark.master                     spark://master:7077
spark.eventLog.enabled           true
spark.eventLog.dir               /mnt/sdd/hive-1.2.1/sparkLog
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              512m
spark.executor.memory		 512m
spark.executor.cores		 1
spark.yarn.app.name		 "Spark 1.3.1"
spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

注意:设置的spark.driver.memory和spark.executor.memory的值要小于当前内存可用大小,否则执行动作不会执行

4、安装测试

测试是否加载spark-assembly-1.3.1-hadoop2.2.0.jar

如果出现上图则证明已经加载成功,注意我们是在第二步中配置的SPARK_HOME的安装目录/lib/

测试运行成功


OK,配置完成。

加群:397706991,共同学习

相关文章
相关标签/搜索