1、产品概述
Hive作为大数据时代的数据仓库工具,使我们分析处理海量结构化数据成为可能。越来越多的公司和机构都将Hive作为应对大数据分析的强有力工具。但使用中,比较明显的问题便是当存在多个应用同时使用同一Hive的时候,如何有效控制彼此的数据安全,如何更方便使用Hive UDF的扩展机制。
当然,作为大数据平台开发过程中也同样遇到这些问题。整个公司不同业务方的数据汇聚到数据平台后,对数据的隔离访问尤为重要。在参考Cloudera Sentry项目的基础上,我们结合自身平台需求,开发了Hamza这一Hive计算中间层,兼具权限控制和UDF函数扩展作用。
大致的架构如上图所示。Hamza Core是整个Hamza的核心,主要包括权限信息表的操作、Hook函数的实现、UDF扩展函数的实现及其他公用类;Hamza Client是对Hive JDBC模块的简单扩展,支持传递用户名、密码和客户端IP,业务方使用将用其代替原有Hive JDBC包;Hamza Auth是开放的权限信息维护接口及对应Web界面,便于管理员和普通Hive用户查看自己的库表,及被授权的权限信息等。
2、编译开发
项目结构如上图所示。hamza-auth是web模块,依赖hamza-core;hamza-client是jar形式的,也依赖hamza-core;hamza-dist是打包编译用,会将工程打成发布包。相关全局配置参数在总控pom.xml中修改,其他地方的属性文件不需要修改。
当这些配置完成后,将hive源码导入eclipse, 同时hamza也已被导入eclipse,工程都置为打开状态。然后以调试模式启动hive(命令行形式直接执行hive --debug,jdbc形式执行hive --debug --service HiveServer2 &),这样hive便在8000端口监听等待远程调试连接了。
然后在hive源码及hamza源码自己关心的代码处打上断点。接着新建一个Remote Java Application,IP填写hive的机器IP,端口填写8000,最后点击“debug”按钮。
3、版本使用
的库表。
资源:
http://archive-primary.cloudera.com/cdh5/cdh/5/
https://blogs.apache.org/sentry/