设为首页 加入收藏

TOP

hive on spark(yarn)安装部署
2019-04-11 01:20:00 】 浏览:255
Tags:hive spark yarn 安装 部署

〇、说明
HDFS+spark+hive的测试环境之前单独搭建成功了,后来需要使用hive on spark才发现需要重新配置。查看了很多参考文章,包括官网上的教程,一路摸索着,总算是成功了。
0.参考文章
Hive on Spark: Getting Started
Running Spark on YARN
Building Spark
Spark Configuration
Hive on Spark安装配置详解
Hive记录-Hive on Spark环境部署
hive集群配置 hive on spark
Hive on Spark 搭建&踩坑

1.版本兼容
这个问题很重要,官网的解释是hive on spark属于test,所以并不是各种版本都可以混搭,所以有两种做法:
①查看一下各个组件的pom.xml文件(源码下载后解压,位于根目录)
这个方法我尝试了一下,发现各个组件对彼此的要求不同,比如说hive3.1.1对hadoop的要求是3.1.0,对spark的要求是2.3.0;但是spark2.3.0对hadoop要求是2.6.5,对hive要求的要求是1.2.1(这个我有点不理解);
查看官网说明
自己之前安装的是hive3.1.1,spark2.4.1,结合官网说明,最后选择了将spark2.3.0,出发点:hive是基于spark的,必须严格要求spark版本,若spark版本太高,可能会出现不匹配;但是hive版本高的话,它应该是兼容之前的版本的,同时也一定会兼容它要求的spark版本;
关于hadoop,按照上面的逻辑,应该选择2.6.5,但是我猜测hadoop与spark、hive没有那么大的关联耦合(别问为啥,我就是猜的),所以hadoop没改(主要是改起来重新部署太麻烦了);
还有就是scala版本都要求2.11.8,以及maven的版本,maven比较扯淡,官网推荐使用3.5.4之上版本,但是我使用了3.6.0和3.5.4都不能成功编译,最后看到某个小角落有人提到尝试将maven版本回退到3.2.9——我了个去,竟然真的成功了,此处省略一万字。
事实证明,我运气比较好,猜对了。
最终的版本是hadoop3.2.0+spark2.3.0+hive3.1.1+scala2.11.8+maven(3.2.5)

2.官网下载的spark版本都是包含hive支持的,所以不能用(这一点我没去求证,鉴于很多博客都这么说,以及官网的差不多也这么做,我没去找核心原因,期待以后学习的过程中找补回来)。于是,我们要做的关键一步就是编译自己的spark。

一、基本环境

Ubuntu16.04
Hadoop3.2.0
Scala2.11.8
maven3.2.5(还可以其他方式)
说明:scala安装就是下载安装包(清华源或者官网,推荐清华源——快),然后修改环境变量即可。

二、maven安装

1.下载
2.解压
3.配置阿里云镜像

sudo vim maven3.2.5/conf/setting.xml
#添加以下配置
<mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </mirror>

4.配置环境变量

sudo vi  ~/.bashrc
#文件最后添加以下内容
# maven 
export MAVEN_HOME=/home/hadoop/local/maven-3.2.5
export PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"

三、spark源码编译

1.下载spark2.3.0源码
2.解压

tar -zxvf  spark-2.3.0.tgz ../local/

3.进入saprk2.3.0目录,编译

#①
./build/mvn -Pyarn -Phadoop-3.2 -Dhadoop.version=3.2.0 -DskipTests clean package
#②进入dev/
./make-distribution.sh --name 3.2.0-hive --tgz -Pyarn -Phadoop-2.7 -Dhadoop.version=3.2.0 

这里的几个参数:
–name 3.2.0-without hive 是编译文件的名字参数
-Pyarn 是支持yarn
-Phadoop-2.7 是支持的hadoop版本,一开始使用的是3.2后来提示hadoop3.2不存在,只好改成2.7,编译成功
-Dhadoop.version=3.2.0 运行环境
编译完成后,生成安装包会出现在spark2.3.0目录下,就是这样:
在这里插入图片描述
另外,编译的命令根据版本有所不同,大致如下(参考):

Prior to Spark 2.0.0: ./make-distribution.sh --name
“hadoop2-without-hive” --tgz
“-Pyarn,hadoop-provided,hadoop-2.4,parquet-provided” Since Spark
2.0.0: ./dev/make-distribution.sh --name “hadoop2-without-hive” --tgz “-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided” Since Spark
2.3.0: ./dev/make-distribution.sh --name “hadoop2-without-hive” --tgz “-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided,orc-provided”

四、配置hive on spark
1.hive基本配置
2.spark配置
①修改环境变量 vim /etc/profile并source

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop  
export SPARK_DIST_CLASSPATH=~/local/hadoop-3.2.0/bin/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop 

②spark配置yarn模式
解压spark编译包后进入目录

cd conf/
cp spark-env.sh.template spark-env.sh
sudo vi spark-env.sh
#加入以下配置
export HADOOP_CONF_DIR=~/local/hadoop-3.2.0/etc/hadoop
export SPARK_DIST_CLASSPATH=~/local/hadoop-3.2.0/bin/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
#修改spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf
sudo vim spark-defaults.conf
#加入以下配置,很容易理解,不懂可以官网,根据自己需求
spark.master                     yarn
 hive.execution.engine		  spark
 spark.eventLog.enabled           true
 spark.eventLog.dir               hdfs://master:8021/spark/logs
 spark.serializer                 org.apache.spark.serializer.KryoSerializer
 spark.executor.memory		  8g
 spark.executor.cores             2
 spark.driver.memory              8g
 spark.driver.cores		  2
 spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
 spark.yarn.jars		  hdfs://master:8021/spark/jars
 spark.executor.instances 	 32

3.hive 配置
①拷贝 spark-defaults.conf到{hive-home}/conf目录下
②拷贝spark/jars的三个包到{hive-home}/lib:

  • scala-library
  • spark-core
  • spark-network-common
    ③将spark的jars目录中的jar文件传到hdfs对应目录下(对应spark中配置)
#创建hdfs目录
hadoop fs -mkdir /spark
#上传/spark/jars文件夹到hdfs的/spark目录
hadoop fs -put /application/spark/jars/ /spark/

④配置hive-site.xml

#基本与spark-default.conf对应
 <property>
    <name>yarn.resourcemanager.scheduler.class</name>    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
  </property>
<property>
  <name>spark.yarn.jars</name>
  <value>hdfs://master:8020/spark/jars/*</value>
</property>
<property>
<name>spark.home</name>
<value>/home/hadoop/local/spark</value>
</property>
<property>
<name>spark.master</name>
<value>yarn</value>
</property>
<property>
<name>spark.executor.memory</name>
<value>8g</value>
</property>
 <property>
<name>spark.executor.cores</name>
<value>2</value>
</property>
<property>
<name>spark.executor.instances</name>
<value>32</value>
</property> 
<property>
<name>spark.driver.memory</name>
<value>8g</value>
</property>
 <property>
<name>spark.driver.cores</name>
<value>2</value>
</property>
<property>
<name>spark.serializer</name>
<value>org.apache.spark.serializer.KryoSerializer</value>
</property>

四、验证

命令行输入 hive,进入hive CLI
set hive.execution.engine=spark; #默认是mr,在hive-site.xml里设置spark后,这一步可以不要
create table test(ts BIGINT,line STRING); #创建表
select count(*) from test;#若整个过程没有报错,并出现正确结果,则Hive on Spark配置成功。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇spark IDE:   System memory.. 下一篇Spark之   Spark Streaming..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目