`
liyonghui160com
  • 浏览: 774615 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java程序获取hive日志

    博客分类:
  • hive
阅读更多

 

       获取hive日志比较麻烦,通常的做法是执行shell命令获取日志,但是这样有一些问题,比如:输出的结果需要程序解析等,可以改进hive,采用jdbc的方式执行hive sql,并且把输出到控制台的日志保存到redis,其中kill job的命令日志用不同的key缓存到redis,如此可很方便获取查询结果、日志、kill命令。

   具体实现方式如下:

   修改hive-exec-0.12.0的如下几个类:

   1、org.apache.hadoop.hive.ql.Driver

   2、org.apache.hadoop.hive.ql.DriverContext

    3、org.apache.hadoop.hive.ql.exec.mr.ExecDriver

    4、org.apache.hadoop.hive.ql.exec.mr.HadoopJobExecHelper

    5、org.apache.hadoop.hive.ql.exec.mr.MapRedTask

    在Driver的execute()方法开始执行时以sql的MD5值作为key缓存到redis,redis的数据结构采用list,并且在DriverContext中增加一个sqlMD5的属性,通过driver上下文对象在后续的ExecDriver、HadoopJobExecHelper和MapRedTask中实现共享。

   在执行sql和生成的MR过程中参数的日志不断存入到redis,页面可通过ajax的方式每隔1秒从应用服务端获取1次hive日志,应用服务端根据sql的MD5值从redis读取日志信息,读一条删一条。 使用 redisUtils.rpush(key,value);写入,用redisUtils.lpop(key);这样写进去的取出来的时候,redis就清空了
   可通过sql的MD5值加一个后缀的方式单独缓存kill MR job的cmd命令,这样业务应用可以很方便的获取到kill命令,停止hive。
   redis的服务ip配置到hive-site.xml中。
   该方式有一些问题,比如:如果同时多次执行同一个sql,则会导致日志信息相互干扰,有一些应用场景的限制。

分享到:
评论

相关推荐

    java_hive简单查询

    `hive-java`可能是指Hive的Java API或用于运行Hive查询的Java程序的示例代码。在实际项目中,你可能需要构建一个包含Hive查询逻辑的Java类,并将其打包成jar文件,然后在Hadoop集群上运行。 7. **提交Java作业到...

    kerberos认证hive连接代码

    本篇将详细介绍如何在Spring MVC框架中配置Kerberos认证,并通过Java代码与Hive建立安全连接。 首先,`Kerberos认证`是一种基于票据的认证机制,它通过三向握手确保了通信双方的身份,并防止中间人攻击。在Hive中...

    hive jdbc 连接所需要的jar包

    Hive JDBC连接是Java应用程序与Hive数据仓库进行交互的一种方式。它允许程序通过标准的JDBC接口查询和操作Hive中的数据。在使用Hive JDBC进行连接时,需要依赖一系列的jar包来确保所有必要的功能得以实现。下面将...

    dbeaver连接hive2.1.1依赖jar包

    比如`avro.jar`用于Avro数据格式,`zookeeper.jar`用于ZooKeeper服务,`slf4j-api.jar`和`slf4j-log4j12.jar`用于日志记录,以及其他可能的数据库驱动,如`mysql-connector-java.jar`如果Hive配置了MySQL元存储。...

    hive-java-sdk:Hive Java SDK的新改进

    Hive Java SDK是用于与Apache Hive进行交互的一种编程接口,主要服务于Java开发者,它使得在Java应用程序中执行HQL(Hive查询语言)或者管理Hive表变得简单易行。新改进可能涉及到性能优化、功能增强、API简化、错误...

    JDBD连接hive驱动jar包

    当我们需要通过Java程序与Hive交互时,就需要使用JDBC驱动。本文将详细介绍如何使用JDBC连接Hive Thrift Server,并讨论相关的jar包及其重要性。 首先,"JDBC连接hive驱动jar包"指的是在Java应用程序中为了实现与...

    hive-jdbc所需jar(精简可用)

    而Hive JDBC(Java Database Connectivity)是Hive与外部应用交互的重要接口,它允许Java应用程序或者其他支持JDBC的工具连接到Hive服务器,执行Hive查询并获取结果。 标题"hive-jdbc所需jar(精简可用)"表明这个...

    基于Hive的hadoop集群日志的分析及错误排解

    - **创建 Hive 表**:在 `HiveUtil.java` 中,定义合适的 Hive 表结构,以容纳日志数据。表的字段应对应于日志文件中的关键字段,例如时间戳、源 IP、日志级别等。 - **加载数据**:使用 Hive 的 `LOAD DATA` 命令...

    hive连接jdbc的jar包

    Hive JDBC(Java Database Connectivity)是Hive提供的一种接口,使得我们可以使用标准的JDBC驱动程序来连接和操作Hive数据库,从而在各种应用程序中与Hive交互,比如Java应用、Web应用或数据分析工具。现在我们来看...

    hive所需jar包

    JDBC是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,Hive-JDBC使得非Hadoop环境下的应用程序(如DbVisualizer)能够连接到Hive服务器,执行查询并获取结果。 3. **部署步骤**:在DbVisualizer中...

    kettle8.1Hive连接包

    JDBC(Java Database Connectivity)是一种标准接口,使得 Java 应用程序能够连接到各种类型的数据库,包括 Hive。Kettle 使用此驱动建立到 Hive 服务器的连接。 2. **Hive 连接配置**:在 Kettle 中,用户可以通过...

    hive3.0以上连接Datagrip所需要的jar包

    总结一下,要在Datagrip中成功连接Hive 3.0及以上版本,关键在于获取和配置正确的JAR文件集,这包括Hive JDBC驱动程序、Hadoop相关库、Hive Metastore Service的依赖以及其他可能的辅助库。这些JAR文件应与Hive版本...

    快捷删除hive表的工具

    在IT行业中,尤其是在大数据处理领域,Hive是一个广泛使用...这通常涉及设置Hive的连接参数,指定要删除的表的条件,以及运行相应的Java程序或启动GUI。在执行过程中,用户应谨慎操作,遵循最佳实践,以保护数据安全。

    hive-jdbc-uber-2.6.5.0-292.jar驱动

    Hive JDBC Uber 2.6.5.0-292驱动是Apache Hive与Java数据库连接(JDBC)之间的桥梁,允许用户通过编程语言(如Java、Python等)或者数据库管理工具(如Dbeaver)与Hive进行交互。这个驱动程序集成了所有必要的依赖,...

    hive安装

    (1)**下载Hive**:从Apache官方网站获取最新稳定版的Hive源码或二进制包。 (2)**解压并配置Hive**: - 解压缩到指定目录,例如 `/usr/local/hive`。 - 编辑 `conf/hive-env.sh`,设置Hive的环境变量,如...

    Apache-Hive-Cookbook

    - **调试技巧**:利用日志记录、性能监控等手段优化 Hive 应用程序。 8. **使用 Hue** - **准备工作**:安装必要的依赖库。 - **操作步骤**: - 下载并安装 Hue。 - 配置 Hue 支持 Hive。 - 启动 Hue 服务。...

    Cloudera_HiveJDBC_2.5.4.1006.zip

    Cloudera_HiveJDBC_2.5.4.1006.zip 是一个由Cloudera提供的Hive JDBC驱动程序的压缩包,版本号为2.5.4.1006。Hive JDBC(Java Database Connectivity)是Apache Hive项目的一部分,它允许通过Java编程语言或其他支持...

    hive安装文件

    2. **`MySQL-connector-Java-5.0.8-bin.jar`**:这是MySQL数据库的Java连接器,用于在Java应用程序中连接到MySQL服务器。在Hive环境中,如果你选择MySQL作为元数据存储(metadata storage),这个驱动是必需的,因为...

    Cloudera_HiveJDBC41_2.5.15.1040

    Hive JDBC(Java Database Connectivity)驱动是用于Java应用程序与Hive数据仓库进行交互的一种接口。它允许Java应用通过标准JDBC API与Hive进行通信,执行SQL查询、数据读写等操作。 描述中提到的"cloudera集群中...

Global site tag (gtag.js) - Google Analytics