
CDH初始提供的权限组件就是Apache Sentry,经典的RBAC模型可以很好的支撑server、database、table等在用户的role和group之间的权限管控,打通了Hive和HDFS,也支持impala的权限识别,基本能满足一个公司70%的使用场景。
但是,
Spark不属于CDH提供的组件之一,也没办法使用原生Sentry进行权限管控。
对于uri的权限存在缺陷,不能直接同步到HDFS上,同时对View的权限也不支持。
于是为了解决这些事,我开始梳理Sentry的设计逻辑,以期满足剩下30%的使用需求。
今天,就从数据库设计开始吧!
以下表述来自Sentry 1.5版本
这是一篇平平无奇的纯干货
Sentry的设计逻辑虽然是RBAC的模型,但是为了支撑大数据权限,从内容上,它可以将表大体分为两类:Path和Perm。
Path
即与路径相关,也就是与HDFS路径相关,其相关的表当发生新建、修改、删除路径时会有数据变化
Perm
即与权限相关,涉及Hive、Impala和HDFS等组件的权限,当权限发生变化(只能从Hive端或Impala端进行权限调整)时相关表数据会有变化
接下来,先说下每一张表的结构内涵
SEQUENCE_TABLE,不过Sentry在这里做了很完善的兼容,如果max(PATH_ID)比SEQUENCE_TABLE中的记录大,那么就直接取max(PATH_ID) + 1,并修改SEQUENCE_TABLE的值。AUTHZ_PATHS_MAPPING的主键,用于关联,详细解释可以看下面。OBJ
SEQUENCE_TABLE
AUTHZ_PATHS_SNAPSHOT_ID的主键。这是整个Sentry一致性保证的核心,详情以后会详述。SEQUENCE_TABLE
SENTRY_DB_PRIVILEGE模型是典型的为Hadoop生态定制的,支持权限实体层级从Server开始细化到Column,还能支持Uri,但很明显,这样的体系结构在其他引擎中并非通用。GM就是为了适配更常用的实体模型而设计的,更符合RBAC的设计理念。他的主要设计就是预定义resource0-3,代表实体的四个层级,(在sentry1.5版本最多支持4个层级)。当然这样的设计在现在看来还有优化空间,但是对于其他引擎的对接,这样的设计使用还是够的。NOTIFICATION_ID的hash结果,反正也是唯一值,从实际上来看既没有被用作校验,也没有被用作实际权限内容,甚至可以直接用Java的UUID来代替。只要在表里是唯一的就行。Notification_id会被按照一种格式(类似于json,但是要复杂很多)组装到这里;Sentry Plugin从这里取到后,解析出来,翻译成HDFS的POXIS权限保存在NAMENODE的内存中,用于路径使用的权限控制。有空单独写一篇文章梳理一下这个结构。SENTRY_PATH_CHANGE表核心逻辑是一样的。当权限相关的信息存在修改时,例如授权,或者回收权限等,这里都会新增一条记录。SENTRY_DB_PRIVILEGE的主键。SENTRY_DB_PRIVILEGE的主键。org.apache.sentry.provider.db.service.model.MPath对应的是AUTH_PATH表的主键打算认真写一些文章了,纯原创,转载需标注哦~
掘金号:无糖薄荷
【保姆级】Python最新版开发环境搭建,看这一篇就够了(适用于Python3.11.2安装)文章目录【保姆级】Python最新版开发环境搭建,看这一篇就够了(适用于Python3.11.2安装)一、Python解释器安装Windows安装步骤环境变量配置(非必要)MacOS安装步骤Linux安装步骤二、PyCharm安装三、创建Python工程工欲善其事必先利其器,在使用Python开发程序之前,在计算机上搭建Python开发环境是必不可少的环节,目前Python最新稳定版本是3.11.1,且支持到2027年,如下图所示本文手把手带你从0到1搭建Python最新版3.11.1开发环境,堪称保
1、接口的概念系统与系统之间,组件与组件之间,数据传递交互的通道2、接口的类型按协议划分:http、tcp、IP按语言划分:C++、java、PHP……按范围划分:系统之间多个内部系统之间内部系统与外部系统之间程序之间方法与方法之间、函数与函数之间、模块与模块之间3、接口测试的概念对系统或组件之间的接口进行测试,校验传递的数据正确性和逻辑依赖关系的正确行。4、接口测试的原理主要针对服务器,模拟客户端向服务器发送请求,通过工具或者代码来测试服务器针对客户端请求回发的响应数据是否与预期结果一致。5、接口测试的特点符合质量控制前移的理念可以发现一些页面操作发现不了的问题接口测试低成本高效益接口测试是
作为一个10年老运维,在开始这篇文章之前,先送给大家一句话:干啥不好,非要做运维,听人劝,吃饱饭,趁年轻,换行吧!好了,不开玩笑了,回到正文中来。当谈到运维职业发展情况时,很多人都会说运维做不长久,然后劝人做两年就赶快转研发吧!总之是全面唱衰运维!但作为一个老运维,我想说的是:运维转开发确实是一个不错的选择,但运维做不长久则完全是对运维的偏见了!很多人有运维做不长久的偏见的原因其实和运维职业的特性有关,运维有三个老生常谈的特点:打杂,背锅,睡的少!说运维打杂,是说运维工作比较宽泛,运维职业门槛不高,什么都得会一点。公司里但凡跟计算机有关的事,可能都会找到运维,这就导致了运维工作比较杂!至于背黑
趁着寒假期间稍微尝试跑了一下yolov5和yolov7的代码,由于自己用的笔记本没有独显,台式机虽有独显但用起来并不顺利,所以选择了租云服务器的方式,选择的平台是矩池云(价格合理,操作便捷)需要特别指出的是,如果需要用pycharm链接云服务器训练,必须要使用pycharm的专业版而不是社区版,专业版可以使用SSH服务连接云服务器。关于专业版的获取,据我所知一是可以买,二是如果你是在校大学生,可以用学生证向JetBrain申请专业版使用权,我就是通过这种方式激活专业版账户的,我记得当时两三天官方就发激活邮件了,还是很人性化的,使用期一年。下面开始正题本教程只涉及将yolov5及yolov7跑通
看完这篇,我不允许你还不会用Allegro显示PCB的3D模式Allegro可以显示PCB的3D效果,利于查看和检查,如下图具体操作如下选择Set-up-userpreferences选择Display
目录一、cmake安装二、使用cmake来配合程序的编译一、只有一个源文件的程序编译二、同一目录下多个源文件三、同一目录下很多源文件四、头文件在别的文件夹五、头文件源文件分离,并含有多个文件夹六、生成动态库和静态库七、链接库文件 八、CMake其他功能一、添加编译选项操作系统:CentOS7GUNmake版本:3.82gcc版本:8.3.1参考:CMakeLists.txt基础操作一、cmake安装1、在官网下载cmake的安装包,这里我下载的是v3.26wgethttps://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cma
前言说到面向对象,大家都不陌生。在python中,一切皆对象,我们使用类来表示具有相同属性和方法的对象的集合。而继承则是一种创建新类的方式,这个新类可以使用被继承类的属性。今天就来说说python中的继承。继承的概念继承用于类的创建上,新创建的叫子类,而被继承的叫做父类。子类可以使用父类属性,继承是描述类与类之间的关系。为什么要用继承呢?因为继承可以减少代码的冗余以及提高代码的重用性。我们在工作中,用到继承的地方很多。继承的种类python里继承总共有单继承、多继承和多层继承。单继承单继承指的是子类只继承一个父类。示例:classA():def__init__(self):self.a='a'
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🦾🦾🦾目录前言1.造成线程不安全的原因有哪些呢?1.1什么是原子性1.2什么是内存可见性1.3共享变量可见性实现的原理 1.4什么是指令重排序2.解决线程安全问题2.1引入关键字synchronized解决线程不安全问题(1) synchronized的使用方法(锁)(2)synchronized的作用 (3)优化后的代码(加锁后)2.2.关于锁/同步监视器的总结(重点掌握):总结1:认识同步监视器(锁) ----- synchronized(同步监视器){}总结2:同步代码块的执行过程(重点理解)总结
文章目录视频教程1.LinuxCentOS安装cpolar2.创建TCP隧道3.随机地址公网远程连接4.固定TCP地址5.使用固定公网TCP地址SSH远程转载自内网穿透工具的文章:无公网IP,SSH远程连接LinuxCentOS服务器【内网穿透】本次教程我们来实现如何在外公网环境下,SSH远程连接家里/公司的LinuxCentOS服务器,无需公网IP,也不需要设置路由器。视频教程公网SSH远程LinuxCentOS服务器【内网穿透】1.LinuxCentOS安装cpolarcpolar官网:https://www.cpolar.com/cpolar支持一键自动安装脚本cpolar安装(国内使用
从零开始的计网学习——第2章物理层(考研人福利)今天开始步入CS,今天干了一万字的学习笔记!!!物理层的方方面面,今天必须安排到位,GOGOGOGO!!!🌟前言Wassupguys,我是上火不找我😎今天是从零开始的计网学习!Let’sgetit!文章目录从零开始的计网学习——第2章物理层(考研人福利)前言2.1、物理层的基本概念2.1.1、物理层的四个特性2.2、数据通信的基础知识2.2.1数据通讯的相关术语:数据、信号、信源、信宿、信道2.2.2编码与调制2.2.3奈氏准则和香农定理2.2.4传输方式2.3、传输介质及物理设备2.3.1.思维导图2.3.2.传输介质及其分类2.3.3.导向性