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机制,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)