Hive是一个Sql解析引擎,其不具备计算能力,Hive将Sql解析为物理执行计划,将物理执行计划转换为计算任务,交由计算引擎执行,默认的引擎是MapReduce,但MapReduce执行速度慢,随着Spark的崛起,Hive支持Spark作为计算引擎,这就是HiveOnSpark
2,SparkonHive比较容易混淆,二者差距还是很大的,SparkOnHive只是使用了Hive的元数据服务,Sql解析由Spark完成、计算也由Spark完成。
二,整合步骤1,安装hadoop,主要是yarn和hdfs,配置环境变量2,安装spark,配置spark环境变量3,安装hive,配置环境变量 三,安装hadoop
1,将Hadoop的压缩包上传到服务器,解压
2,配置core-site.xml,其中最重要的两个配置如下
fs.defaultFS hdfs://node1:8080 hadoop.tmp.dir /export/atguigu/soft/hadoop-3.1.3/data
3,配置hdfs-site.xml文件
配置hdfs web服务的服务器和访问端口
配置副本数
dfs.namenode.http-address node1:9870 dfs.replication 3 dfs.namenode.secondary.http-address node3:9686
4,配置yarn-site.xml
配置ResourceManager的位置
配置日志聚合
yarn.resourcemanager.hostname node2 yarn.log.server.url http://node2:19888/jobhistory/logs mapreduce.log-aggregation.retain-seconds 604800
5,/etc/profile中配置Hadoop的环境变量
export HADOOP_HOME=/export/soft/hadoop-3.1.3
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
6,将hadoop根目录和环境变量在hadoop集群所有节点上按如上步骤配置,可以通过scp分发的方式快速完成。
四,Spark安装1,上传、解压Spark3.0.0安装包
2,配置spark环境变量
export SPARK_HOME=/export/soft/spark-3.0.0-bin-hadoop3.2/ export PATH=:$PATH:$SPARK_HOME/bin
PS:spark的作用是提供spark任务的执行环境,Hive会通过spark-submit提交spark任务,spark将任务分发到spark集群各个节点。
3,在集群所有节点上安装spark,配置环境变量。
五,安装Hive1,上传、解压Hive安装包
2,配置环境变量:
export SPARK_HOME=/opt/module/spark export PATH=$PATH:$SPARK_HOME/bin
3,hive安装目录下,创建如下文件
hive/conf/spark-defaults.conf
内容如下,指定提交spark任务的各种参数:
spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://node1:8080/spark-history spark.executor.memory 1g spark.driver.memory 1g
4,创建上一步配置中的hdfs文件夹,存储历史日志
hadoop fs -mkdir /spark-history
5,将纯净版的spark3.0.0的jar上传到hdfs,所谓纯净版,就是没有掺杂hadoop和hive的jar包。主要原因是spark3.0.0默认支持的hadoop和hive都是2.x.x,hive3在将物理执行计划转换为spark任务时会使用到spark的jar包,如果这里的jar包含了hive2的jar包,会出现冲突,所以不适用集群上安装的spark自带的jar包,而是将纯净版的sparkjar包上传到hdfs上,作为hive的专用包。
先创建hdfs文件夹:
hadoop fs -mkdir /spark-jars
6,上传纯净版spark jar到hdfs
hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars
7,hive配置文件指定使用spark引擎和spark jar包位置
vim /opt/module/hive/conf/hive-site.xml
六,测试spark.yarn.jars hdfs://hadoop102:8020/spark-jars/* hive.execution.engine spark
启动hive客户端
bin/hive
创建一张测试表
hive (default)> create table student(id int, name string);
通过insert测试效果
hive (default)> insert into table student values(1,'abc');
出现如下界面表示整合成功:



