你好,游客 登录
背景:
阅读新闻

Scala+Spark大数据编程入门教程(006)-Hive on spark:java.nio.file.NoSuchFileException,Hive是否需要部署到每个节点

[日期:2018-09-14] 来源:www.bigdatastudy.net  作者:艾叔 [字体: ]

Hive on Spark提交Job时,报下面的错误。

java.nio.file.NoSuchFileException: /home/user/apache-hive-2.3.3-bin/lib/hive-exec-2.3.3.jar

1. 什么是hive-exec-2.3.3.jar?它有什么用?

hive-exec-2.3.3.jarHive提供的,与Hive进行交互的函数库,Hive on Spark在底层使用Saprk作为执行引擎,Spark程序执行时,需要和Hive进行交互,就是通过hive-exec-*.jar来完成的。

2.为什么会报NoSuchFileExceptionhive-exec-2.3.3.jar

检查Hive所在机器,Hive的安装目录是/home/user/apache-hive-2.3.3-bin,使用ls查看, /home/user/apache-hive-2.3.3-bin/lib/hive-exec-2.3.3.jar是存在的,那为什么还会报,没有��������jar包呢?

分析一下,我们使用的Hive版本:apache-hive-2.3.3-binSpark版本Spark2.3.0Spark程序提交到Standalone上运行。

Hive提交Spark Job,和我们使用spark-submit提交Spark Job是一样的,Spark程序提交后启动DriverDriver端又分ClientCluster两种部署模式,这里Hive使用的是Cluster模式,也就是Driver端和Spark程序提交端两个程序分离,在不同的节点上:Spark程序提交端在运行Hive命令的节点上,而Driver端则不见得在这个节点,理论上,只要满足资源要求的集群内节点都可以,因此Driver端很可能会调度到其它节点,而Driver端是需要和Hive交互的,它需要hive-exec-2.3.3.jar,此时,这个节点上并没有部署Hive,就导致以上错误发生。

3. Hive是否需要部署到集群的每个节点?

如上这种情况,Hive需要部署到每个节点,也仅仅解压即可,都不需要配置,因为只是需要Hive中的一个jar包。

Hive不部署到每个节点,应该也是可以的,这个需要从运行Hive命令端进行配置,在提交Spark程序时,将hive-exec-2.3.3.jar带过去。

因此,总的来说,从Hive的架构来说,它只有一个服务端,负责将SQL转换成执行引擎的动作,它并不是分布式处理的,真正分布式处理的是下面的执行引擎。因此,即使Hive部署到多个节点,也只是为了提供Hive的客户端,使之能与Hive服务端进行交互。具体需要这样做,就因具体情况而定了。

 

原创文章,转载请注明: 转载自大数据学习网,作者:艾叔

本文链接地址

 

艾叔:Scala+Spark大数据编程入门教程(001-ScalaJava比较、Scala对于初学者的缺点?

艾叔:Scala+Spark大数据编程入门教程(002-ScalaSpark的关系、Spark为什么用Scala来开发?

艾叔:Scala+Spark大数据编程入门教程(003-Scala常用数据类型、范围、及范围查看方法

艾叔:Scala+Spark大数据编程入门教程(004-ScalaSpark经典入门书籍推荐

艾叔:Scala+Spark大数据编程入门教程(005-神奇的Scala隐式转换

艾叔:Scala+Spark大数据编程入门教程(006-Hive on sparkjava.nio.file.NoSuchFileExceptionHive是否需要部署到每个节点

 

 

 

 

收藏 推荐 打印 | 阅读: