Apache Sentry,看这篇就够啦!(三)

sentry-logo.png

接连上篇。

上篇文章中,你可以清晰的了解到Sentry的组合拳(一堆plugins)是如何打通Hive和HDFS端的权限,并做统一管理的。正向信息流是完整的,那逆向的呢?中间涉及的模块如此之多,有任何一个模块出了问题,Sentry是怎么快速恢复权限的呢?这篇文章将为你解答。

异常情况恢复

很有意思的是,Sentry做了详尽的异常情况恢复的逻辑设计

涉及模块

书接上回,本次讲解的相关组成结构主要为:(为了方便理解,我们改变了下顺序)

  1. Hive(HMS)
  2. Sentry Server(HMS Follower的启停)
  3. Hadoop NameNode(NN Plugin的插拔)

接下来,我们一个一个看

Hive挂掉啦

Hive挂掉是最好理解的情况,从一个流程的开头开始停掉后,后续的流程肯定是走不动了的。在Hive挂掉时,相关Path信息已然同步到了HMS中,如果有事件正好没有同步到Sentry,Sentry的HMS Follower也是实时监听HMS的情况,不管Hive(包括HiveServer2还是HMS Service)的进程是否存在,都能从HMS直接拉数据同步到Sentry Store中,直到所有事件被处理完。

简而言之,Hive进程挂掉不影响已有信息的同步,也不涉及异常情况的恢复,只是新的建表(新建Path)和权限操作无法处理罢了。

Sentry Server挂掉啦

Sentry Server挂掉,对于权限而言是一个很大的问题。因为这个时候,从Hive侧进行Path的创建,抑或是权限的操作,都无法通过HMS Follower及时同步到Sentry Store,以及Hadoop NameNode等其他组件中。

这个时候的异常恢复,咱们在第一篇讲的快照(SNAPSHOT_ID)就派上用场了。

  1. Sentry Server重新启动,开始正常服务。
  2. Sentry Server在Sentry Store中的AUTH_PATHS_SNAPSHOT_ID表中新增一位,就是之前的最大值+1,作为新的快照id。
  3. Sentry Server从HMS中获取全部Path信息(还记得么,就是库/表与HDFS Location之间的映射关系),以最新的快照id,存储进入AUTH_PATHS_MAPPINGAUTH_PATH等Path相关的表中。光从表的数据量来看,这两张表以及其他相关表的数据量直接翻了一倍。
  4. Sentry Server正常开始提供服务。

这里有几个细节需要关注:

  1. 异常恢复的只有Path相关数据,毕竟可以从完备的HMS中获得。Perm权限相关数据就直接丢失了。因为如果是Sentry承接权限校验,HMS中是不会存储权限相关信息的。这个时候,如果从Hive上执行手动授权之类的操作,会报错。
  2. 快照的存在是为了记录每一次HMS的元数据信息,因为每次都是全量同步,多来几次,HMS的数据量再大些,Sentry Store会有性能瓶颈。千万不要没事儿尝试着玩哦。
  3. 很特别的是,如果你手动修改SENTRY_HMS_NOTIFICATION_ID中的记录,无端的增加一个id,不管是否连续,在Sentry Server校验后发现与HMS中的事件id匹配不上后,也会当做是出现与Sentry Server挂掉的同等异常,立刻新增快照id,以及全量同步元数据。当然,我没研究过这块的代码,很有可能Sentry Server的重启,也会检测SENTRY_HMS_NOTIFICATION_ID的值,也是很可能的。

Hadoop NameNode挂掉啦

Hadoop NameNode挂掉的效果和NN Plugin的插拔(配置配上还是删掉)是一样的,本质都是NN Plugin的线程启动了没有。

每一次NN Plugin的线程启动后,都会去SENTRY_PATH_CHANGESENTRY_PERM_CHANGE两个表中取最新的change_id放在内存中,作为基础。而后每当扫描到新的change_id出现,就同步这两个“事件表”的数据。一条数据里面直接写明了操作和具体的Path或者Perm信息,这也是为什么不去做元数据表扫描的原因,毕竟相比而言,后者扫描的表更多信息更杂些。

我们都知道,NameNode的元数据是存在内存中的,为了提升速度,但是确实有OOM的风险。NN Plugin的权限信息也是存储在内存中的。如果出现上述异常情况,那一旦NN Plugin恢复后,就会立刻去Sentry Store中同步全量的元数据信息。因为是全量的,上述两个“事件表”的信息就不那么合适了。NN Plugin会直接去AUTH_PATH等Path表,和SENTRY_DB_PRIVILEGE等Perm表中直接拉取所有的信息,按照第二篇文章说的映射结构进行内存存储。

所以就可以看出来,其实第一篇讲的数据库结构,在NN Plugin的使用上可以分为两类:

  1. “事件表”:一条记录是一个事件,包含相应的操作,操作对象,与操作人等。这些事件“阅后即焚”,Sentry Store中也有线程定时清理,不会存很久的时间,毕竟不会重复读取。
  2. “元数据表”:结构清晰,拆分有序,全量保存,就是为了防止这类情况需要重复读取的。
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容