Code Monkey home page Code Monkey logo

hive-jdbc-proxy's Introduction

引言

Hive-JDBC-Proxy是一个高性能的HiveServer2和Spark ThriftServer的代理服务,具备负载均衡、基于规则转发Hive JDBC的请求给到HiveServer2和Spark ThriftServer的能力。

Hive-JDBC-Proxy甚至可以根据SQL的复杂度和执行性能,实现为用户智能选择是提交给Spark ThriftServer还是HiveServer2。

如下图:

架构图


核心特点

  • 支持分组,组内可以配置多个目标HiveServer2或Spark ThriftServer,支持基于规则和负载均衡的方式代理到其中的任意目标服务。

  • 支持复杂的规则限制(以下规则都支持用户自定义处理规则),如:

    1. 同一个IP下,只允许一个Session。

    2. 同一个用户,只允许一个Session。

    3. 复杂的登录校验。

    4. 支持复杂的处理规则,如检查用户SQL是否合法、修改用户提交的SQL等。

    5. 支持statistics统计,统计用户的SQL执行时长和执行频率。

    6. 支持自定义负载均衡的规则。

  • 高并发的处理能力。

  • 支持动态加载分组。


Running in your IDE

推荐使用IntelliJ IDEA.

  1. clone到本地,打开IntelliJ IDEA加载Hive-JDBC-Proxy

  2. 修改src/main/resources

    # login.properties的修改
    # 允许指定多个,username和password指Hive JDBC Client端到Proxy的用户密码认证
    username=password

    # thrift.xml
    # 修改thrift的server,指定实际代理给的目标端HiveServer2服务或Spark ThriftServer服务
    # 允许指定多个server,当存在多个server时,会自动负载均衡
    <server name="" username="hadoop" password="123" valid="true" host="目标HiveServer2的IP" port="目标HiveServer2的Port" maxThread="5" loginTimeout="2h" />
    
  1. 启动Hive-JDBC-Proxy

MainClass: com.enjoyyin.hive.proxy.jdbc.server.JDBCProxyServer

  1. 启动测试类

test模块提供了测试类,可以直接访问Proxy服务。

MainClass: com.enjoyyin.hive.proxy.jdbc.test.ThriftServerTest

QuickUse

  1. clone Hive-JDBC-Proxy
 git clone https://github.com/wushengyeyouya/Hive-JDBC-Proxy.git
  1. 打包
    cd Hive-JDBC-Proxy/assembly
    mvn clean package
    
  1. 解压部署
    tar -zxvf hive-jdbc-proxy-assembly-1.0.0-dist.tar.gz

RoadMap

  1. 支持基于规则,智能选择提交给Spark ThriftServer还是HiveServer2。

  2. 对接Apache Calcite,能自动识别Bad SQL,实现基于行和列的权限控制


Contributing

欢迎参与贡献。


Communication

欢迎给Hive-JDBC-Proxy提issue,我将尽快响应。

如您有任何建议,也欢迎给Hive-JDBC-Proxy提issue。

hive-jdbc-proxy's People

Contributors

wushengyeyouya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

hive-jdbc-proxy's Issues

apache ranger有行列的权限控制

apache ranger有行列的权限控制 ,它有自己的管理后台用来配置策略和用户控制,我觉得对接ranger会更好,很期待你对接ranger

关于路由hive的问题

你好,支持这种模型吗?比如:hive-jdbc-proxy 连接 两个hive数据源,然后客户端连接hive-proxy,根据客户端不同的账户和密码路由到我指定的hive数据源,有这个功能吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.