hive on spark 和 spark on hive
当前组件版本
hive 2.3.7
hadoop 2.7.2
spark 2.4.3
因为之前本地的环境为 spark 为 2.3.4 ,本次 spark 只是进行单独的升级和配置 spark on hive
Spark on hive
官方文档 spark on hive
Spark 通过 Spark-SQL 使用 hive 语句,操作 hive,底层运行的还是 spark rdd。
(1)就是通过 sparksql,加载 hive 的配置文件,获取到 hive 的元数据信息
(2)spark sql 获取到 hive 的元数据信息之后就可以拿到 hive 的所有表的数据
(3)接下来就可以通过 spark sql 来操作 hive 表中的数据
NOTE : 此时的客户端是 SparkSQL,Hive 目前的角色只是 Catalog 元数据的支持组件
Spark 有一个内置的 MateStore,使用 Derby 嵌入式数据库保存数据,但是这种方式不适合生产环境,因为这种模式同一时间只能有一个 SparkSession 使用,所以生产环境更推荐使用 Hive 的 MetaStore。
SparkSQL 整合 Hive 的 MetaStore 主要思路就是要通过配置能够访问它, 并且能够使用 HDFS 保存 WareHouse,所以可以直接拷贝 Hadoop 和 Hive 的配置文件到 Spark 的配置目录
安装配置
进入到 shell 窗口,执行以下命令
将 hive 目录下的 hive-site.xml 拷贝至 spark 安装目录下
将 hadoop 安装目录下的 core-site.xml 和 hdfs-site.xml 拷贝至 spark 安装目录下
此时,可以在 spark-shell 中尝试链接 hive
示例代码为:
关于 Explain 参数详解
simple 只展示物理执行计划
extended 展示物理执行计划和逻辑执行计划
codegen 展示要 Codegen 生成的可执行 Java 代码
cost 展示优化后的逻辑执行计划以及相关的统计
formatted 以分隔的方式输出,它会输出更易读的物理执行计划,并展示每个节点的详细信息
Hive on spark
官方文档 hive on spark
是把 hive 查询从 mapreduce 的 mr (Hadoop 计算引擎)操作替换为 spark rdd(spark 执行引擎) 操作。相对于 spark on hive,这个的实现起来必须重新编译你的 spark 和导入 jar 包。
NOTE: 此时的客户端是 Hive Cli,SPark 只是作为计算引擎
Hive 查询流程及原理
执行 HQL 时,先到 MySQL 元数据库中查找描述信息,然后解析 HQL 并根据描述信息生成 MR 任务
Hive 将 SQL 转成 MapReduce 执行速度慢
使用 SparkSQL 整合 Hive 其实就是让 SparkSQL 去加载 Hive 的元数据库,然后通过 SparkSQL 执行引擎去操作 Hive 表内的数据
首先需要开启 Hive 的元数据库服务,让 SparkSQL 能够加载元数据。
安装配置
提交 hive sql 使用 spark 引擎进行执行
获取 spark 的源码,根据相对应的 hadoop 版本进行相关的编译,获取对应版本
Hive on Spark 官网详情:https://cwiki.apache.org//confluence/display/Hive/Hive+on+Spark:+Getting+Started
Hive&spark 版本
具体安装参考:Hive(一)【基本概念、安装】
安装和 Spark 对应版本一起编译的 Hive,当前官网推荐的版本关系如下:
Hive on spark 配置
一 、配置 Spark on Yarn
在 Hive 所在机器安装 Spark,配置 Spark on Yarn 模式。
安装的 spark,必须是一个不包含 hive 的 jar 包的版本。
但是一般 spark 发行版都是有 hive 依赖的,所以要手动编译源码来获得不包含 hive 相关 jar 的 spark 二进制包。
spark 源码包下载地址:http://archive.apache.org/dist/spark/
不同版本编译源码包的方式:
Spark 2.0.0 前
从 Spark 2.0.0 开始
从 Spark 2.3.0 开始
编译完成后,在目录下会出现 spark-2.4.3-bin-hadoop2-without-hive.gz。
将包解压即可。
可以将 spark 的日志,集成到 Yarn 上
二 、配置 Spark 的环境变量。
具体安装参考:spark 配置
三、向 HDFS 上传 Spark 纯净版 jar 包
使用不带 hadoop 的 spark 的包:spark-2.4.3-bin-hadoop2-without-hive.tgz
①解压
②上传只 HDFS 的/spark-jars 目录,该目录在下面需要配置
四.修改 hive-site.xml 文件
五 测试
①启动 hive 的 metstore 服务和 hive 客户端
②创建一张测试表
③通过 insert 测试效果
运行结果如图
版权声明: 本文为 InfoQ 作者【飞哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/267d08cdd9a4c57d2df66ed97】。文章转载请联系作者。
评论