Hive on Spark 和 Spark sql on Hive,你能分的清楚么
摘要:结构上 Hive On Spark 和 SparkSQL 都是一个翻译层,把一个 SQL 翻译成分布式可执行的 Spark 程序。
本文分享自华为云社区《Hive on Spark和Sparksql on Hive有啥区别?》,作者:dayu_dls 。
结构上 Hive On Spark 和 SparkSQL 都是一个翻译层,把一个 SQL 翻译成分布式可执行的 Spark 程序。Hive 和 SparkSQL 都不负责计算。Hive 的默认执行引擎是 mr,还可以运行在 Spark 和 Tez。Spark 可以连接多种数据源,然后使用 SparkSQL 来执行分布式计算。
Hive On Spark 配置
(1)首先安装包要选择对,否则就没有开始了。
Hive 版本:apache-hive-2.1.1-bin.tar
spark 版本:spark-1.6.3-bin-hadoop2.4-without-hive(不需要把 Hive 编译进去)
(2)假设你已经安装好 Hive(元数据为 Derby)和 spark,那么默认 Hive 走 mr,需要修改以下配置让 Hive 走 spark
(3)配置环境变量及运行时参数
在 hive-site.xml 中配置 SPARK_HOME;
在 hive-site.xml 或者或者 spark-default.conf 或者 spark-env.conf 配置 spark 运行时参数,也可以在 Hive 运行环境中设置临时参数:
将编译好的 Spark 安装包中 lib 目录下的 spark-assembly-*.jar 包添加至 HIVE_HOME/lib 中
(4)启动 Hive
(5)启动 Hive 命令行窗口
(6)开启你的 Hive on spark 之旅
Spark sql on Hive
(1)获取包
Hive 版本:apache-hive-2.1.1-bin.tar
spark 版本:spark-1.6.3-bin-hadoop2.4(需要把 Hive 编译进去)
(2)在 $SPARK_HOME/conf 目录创建 hive-site.xml 文件,内容如下:
(3)如果你使用的元数据库是 mysql,那么请把 mysql 驱动放到 $SPARK_HOME/lib 下,否则跳过。
(4)启动 Hive 元数据服务,待 spark 运行时访问。
(5)执行命令
Sparkthriftserver 启用
spark 提供了 spark-sql 命令可以直接操作 hive 或 impala,可以启用 sparkthriftserver 服务,然后利用 beeline 远程连接 spark,利用 spark sql。sparksql 的诞生其实就是为了代替 hsql。Sparksql 的元数据也是使用 hive 的 metastore 进行管理,所以需要配置 hive.metastore.uris 参数。
这里说下 sparkthriftserver 和 hivethriftserver 的区别,二者的端口一定要区分:
hivethriftserver:hive 服务端的服务,远程通过 jdbc 或者 beeline 连接,使用 hsql 操作 hive。
sparkthriftserver:spark 的服务,远程通过 jdbc 或者 beeline 连接 spark,使用 spark sql 操作 hive。
(1)在 $SPARK_HOME/conf 目录创建 hive-site.xml 文件,内容如下:
(2)启动 sparkthriftserver
启动 sparkthriftserver 后,后台默认会执行 spark-sql 命令,实际上是用 spark-submit 向 yarn 提交一个任务。这样就会在 yarn 的 8088 页面任务栏中起一个常驻任务,用来执行 spark sql。
(3)连接 spark
(4)这里的 sql 可以在 8088 页面看到执行过程。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/3c8212f7584bd605f6f8936b2】。文章转载请联系作者。
评论