如何进行Hive debug

如何进行Hive debug,第1张

打开hive

debug日志

这个比较基本,也很容易 *** 作。出问题时先打开,兴许有些有用的信息。另外我们自己的udf或serde里也可以输出些debug日志,方便定位问题:

hive

-hiveconf

hive.root.logger=debug,console

explain

即在hql前加上explain,比如

explain

select

*

from

...

不过这个在查错误的时候用处不大,我还没用它定位到什么bug。不过在查一些性能问题,或者查看下hive到mr任务的执行过程时会用得着

查看plan.xml

先得说下hive的执行过程。大体上是这样的:

hive

客户端(一般是hive

cli,入口类为clidriver)把hql翻译成mr执行计划(operator树)并序列化到

plan.xml

plan.xml

上传到hdfs上

hive

客户端新起一进程,提交mapreduce程序,其入口类为execdriver,execdriver的mapper会在setup阶段读取plan.xml,反序列化成operator树结构,然后执行。

所以plan.xml精确的描述了mr程序具体的执行过程,而且xml文件层次清楚,比explain输出更丰富的信息,也很易读。mr执行计划很少出问题,但我们可以借助plan.xml排除一些怀疑会出问题的点,比如确认是翻译阶段的问题,还是mr执行阶段的问题。

曾经有一次定位udf使用的bug,最开始怀疑是hive生成mr执行计划出错了,但通过查看plan.xml,我们确认翻译阶段没问题。进而开始使用终极手段来看问题:ide远程debug,单步跟踪,这个我们稍后说。

查看plan.xml的方法,有点trick。hive

cli在生成

plan.xml时,会打印日志:

generating

plan

file

/plan.xml

但hive

任务执行完毕时,会把它删掉。所以你得手快,或者想办法让hql跑的时间长点,比如sleep一下之类。如果有什么参数可以让hive不删plan文件,留言给我,

先行谢过。

1、hive命令行模式,直接输入/hive/bin/hive的执行程序,或者输入hive--servicecli用于linux平台命令行查询,查询语句基本跟mysql查询语句类似2、hiveweb界面的(端口号9999)启动方式hive–servicehwi&用于通过浏览器来访问hive,

Hive是基于Hadoop平台的数仓工具,具有海量数据存储、水平可扩展、离线批量处理的优点,解决了传统关系型数仓不能支持海量数据存储、水平可扩展性差等问题,但是由于Hive数据存储和数据处理是依赖于HDFS和MapReduce,因此在Hive进行数据离线批量处理时,需将查询语言先转换成MR任务,由MR批量处理返回结果,所以Hive没法满足数据实时查询分析的需求。

Hive是由FaceBook研发并开源,当时FaceBook使用Oracle作为数仓,由于数据量越来越大,Oracle数仓性能越来越差,没法实现海量数据的离线批量分析,因此基于Hadoop研发Hive,并开源给Apacha。

由于Hive不能实现数据实时查询交互,Hbase可提供实时在线查询能力,因此Hive和Hbase形成了良性互补。Hbase因为其海量数据存储、水平扩展、批量数据处理等优点,也得到了广泛应用。

Pig与HIVE工具类似,都可以用类sql语言对数据进行处理。但是他们应用场景有区别,Pig用于数据仓库数据的ETL,HIVE用于数仓数据分析。

从架构图当中,可看出Hive并没有完成数据的存储和处理,它是由HDFS完成数据存储,MR完成数据处理,其只是提供了用户查询语言的能力。Hive支持类sql语言,这种SQL称为Hivesql。用户可用Hivesql语言查询,其驱动可将Hivesql语言转换成MR任务,完成数据处理。

【Hive的访问接口】

CLI:是hive提供的命令行工具

HWI:是Hive的web访问接口

JDBC/ODBC:是两种的标准的应用程序编程访问接口

Thrift Server:提供异构语言,进行远程RPC调用Hive的能力。

因此Hiv具备丰富的访问接口能力,几乎能满足各种开发应用场景需求。

【Driver】

是HIVE比较核心的驱动模块,包含编译器、优化器、执行器,职责为把用户输入的Hivesql转换成MR数据处理任务

【Metastore】

是HIVE的元数据存储模块,数据的访问和查找,必须要先访问元数据。Hive中的元数据一般使用单独的关系型数据库存储,常用的是Mysql,为了确保高可用,Mysql元数据库还需主备部署。

架构图上面Karmasphere、Hue、Qubole也是访问HIVE的工具,其中Qubole可远程访问HIVE,相当于HIVE作为一种公有云服务,用户可通过互联网访问Hive服务。

Hive在使用过程中出现了一些不稳定问题,由此发展出了Hive HA机制,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7975175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存