02七件家什:机房里的家伙什目录
七件家什认不全,后面每一步都是在猜:这栋楼谁管地基、谁管水电、谁管总闸,各有各的位置。
盖一栋楼不是先搬砖,是先打地基、再拉水电、再装机台、最后装总闸和水表。数据中台也是这么盖的:先有能落文件的地基(HDFS),再有分水电的调度(YARN),再有干活的机器(Spark),再有记台账的活页本(Hudi / Hive),最后所有 SQL 只从一道总闸进来(Kyuubi)。

一、先说人话

HDFS、YARN、Spark、Hudi、Kyuubi、Ranger、Datasophon 这七个名字,不是七个能分开买的产品,是同一栋楼里的七个工种。它们有上下顺序,顺序错了,活就干不成。

找谁办什么事,按问题对号入座就行:文件落在哪问 HDFS;谁先干、给多少资源问 YARN;怎么算问 Spark;表叫什么、字段叫什么问 Metastore;能不能改一行问 Hudi;从哪连进来问 Kyuubi;谁能看问 Ranger。

这一关不讲怎么加工数据,只把家什摆清楚。摆清楚了,后面几关你说"跑个 Spark"的时候,心里知道它在跟谁要资源、结果又落到谁身上。

二、拆开看:七件主家什 + 两件查病的

下面每张卡都是四拍:像什么、其实是什么、真名、坏了会怎样。真名那一行是可以直接抄进配置的东西,别只看个热闹。

先看这张分层图:从下往上是地基 → 调度和机器 → 账本 → 总闸,右边那根虚线竖条是门禁。你写的任何一条 SQL,都得从最上面那道闸进来,再一层层往下走到硬盘。

Kyuubi(总水闸) jdbc:kyuubi://…:10009 办公 .50 / .236 VPN .100 Hudi(活页账本)+ Hive(户口本) type='cow' · primaryKey · preCombineField YARN(水电调度) 分 vcore 与内存 Spark 3.x(机器) ETL 全是 Spark SQL HDFS(水泥地基) 2,763 / 3,027 张表的物理文件都在这 Ranger 门禁 · Kerberos 越往上越靠近你写的 SQL,越往下越靠近硬盘。
🧱 1/7 HDFS(水泥地基)

像什么:盖楼先浇的水泥地基。楼上面怎么装修都行,地基一塌,整栋楼一起塌。

其实是什么:存海量文件的分布式文件系统,所有表的文件本体就物理落在这上面。你在总闸里看到的"库、表",只是这些文件的另一个门牌号。

真名
HDFS
门牌
湖里按层分库:dwi_gk_hudi / dwr_gk_hudi / dm_gk_hudi;仓里是 dm_gk_dws

坏了会怎样:地基塌,全厂停摆。生产 dm_gk_hudi 2,763 张表、落地库 dm_gk_hudi_sit 3,027 张表,一张都读不出来,页面全空。

🧰 2/7 YARN(水电调度室)

像什么:工地上的水电调度室。谁先用、用几度电、用几吨水,都由它排;排不上的就在门口站着等。

其实是什么:集群的资源管家。每个 Spark 任务要多少 vcore、多少内存,得它点头;它不点头,任务就一直在队列里排队。

真名
YARN
在哪
http://yarn.sinopharmholding.com:10001/cluster

坏了会怎样:机器全在转,就是没人分到活。真实情况:单项目 756 个任务分在 10 台 worker 上,其中 10.160.10.26 一台承接 218 个、排队 3.8 分钟,其余 9 台基本空闲——活不是不够,是分得不均。

🔧 3/7 Spark 3.x + Hive Metastore(机器 + 户口本)

像什么:一台加工机器,加一本挂在墙上的户口本。机器负责把料加工成件;户口本记着楼里有哪几户、每户叫什么名。

其实是什么:Spark 3.x 是真正干活的引擎,ETL 全部是 Spark SQL;Hive Metastore 只管元数据——有哪张表、字段叫什么、分区是什么,一个字节的数据都不存。

真名
Spark 3.x + Hive Metastore
表属性
Hive 表是 type='parquet';要能改一行就换 Hudi

坏了会怎样:机器还在响,你一查就"查无此表"。数据文件明明躺在 HDFS 上,可户口本没了,没人知道它叫什么、有哪些字段。

📒 4/7 Hudi(能改字的活页账本)

像什么:一本活页账本。普通账本写错了只能划掉重抄一本;活页账本能抽掉一页换新的,还能翻回上周那页,看当时到底写了什么。

其实是什么:湖里的主表格式(COW)。比普通 Hive 表多三件事:能 upsert(改一行)、能增量读(只看新改的)、能回看历史版本(时间旅行)。

真名
Hudi(表格式,不是数据库)
建表 1
type='cow'
建表 2
primaryKey='system_code,biz_id'(必须存在,可多字段)
建表 3
preCombineField='hoodie_event_time'(只能 Date/Timestamp)

增量读的真写法,一行 SQL:

call copy_to_temp_view(table=>'库.表', view_name=>'v', query_type=>'incremental', begin_instance_time=>…, end_instance_time=>…)

坏了会怎样:建表漏了 primaryKey,账本就从一本变成一摞散页——改一行改不动,只能整表重刷一遍,跑几小时换一行数。

🚰 5/7 Kyuubi(总水闸 / 统一插座)

像什么:整栋楼的总水闸,外加一排统一插座。不管你在几楼、哪个屋,水都从这一个闸进来,插头都只有这一种。

其实是什么:SQL 网关。湖内所有层的写和查都从它进,不直连 Spark。换了机器、换了人,地址都是这一个。

真名
jdbc:kyuubi://…:10009
办公室
10.160.4.50 和 10.160.4.236,办公网里直连,不用挂 VPN
VPN
10.160.4.100:10009,在家或外网走这条,注意防火墙和 TLS
DEV 必带
kyuubi.engine.share.level.subdomain=<子域>

坏了会怎样:闸一乱,全厂的 SQL 都进不来;或者一群人挤进同一个引擎,互相把对方的会话踩掉。最要命的一条——DEV 账号必须带 subdomain tag(这是平台准入要求,不带会不会被 KILL 我们没证到)——放在第四节,连"怎么糊过去"一起讲清楚。

🪪 6/7 Ranger + Kerberos(门禁 + 工牌)

像什么:楼门口的刷卡门禁,加每人兜里一张工牌。楼里每间屋你都看得见,但不是每间都推得开。

其实是什么:Kerberos 认"你是谁",Ranger 定"你能进哪间、能看哪几列"。两层配合,管到表、管到字段。

真名
Kerberos + Ranger
管什么
HDFS / Hive / Spark 的细粒度授权

坏了会怎样:两种极端都会出事:门禁松了,经营数据谁都能捞;门禁紧了、工牌过期,整条链路清一色 403,任务从第一步就挂。

🧑‍🔧 7/7 Datasophon(常驻装修队)

像什么:常驻工地的装修队。水电、门禁、通风这些活,他们照图纸一次装齐;哪根线松了,也是他们上门。

其实是什么:大数据组件的一键部署与运维平台。HDFS、YARN、Spark、Hudi、Kyuubi 这一整套,靠它装起来、升上去。

真名
Datasophon

坏了会怎样:装不了新组件,也升不了版本,只能一台台手改配置。十台机器改漏一台,就是一个谁都说不清的怪故障。

🩺 附一 Compass(听诊器)

像什么:医生的听诊器。楼里哪根管子有异响,贴上听一听,就知道响在哪一层。

其实是什么:集群与任务的诊断工具。任务卡住、节点异常,先上这儿看,不用一头扎进日志里。

真名
Compass

坏了会怎样:任务卡住只能靠猜,一层层翻日志,几个小时就耗进去了。

📟 附二 Prometheus + Grafana(水电表 + 仪表盘)

像什么:楼道里那排水电表和仪表盘。不用拆墙,看表就知道这栋楼还正不正常。

其实是什么:Prometheus 收指标,Grafana 把指标画成面板。Doris 生产集群健不健康,看一张面板就够。

真名
Prometheus + Grafana
面板
http://10.160.4.111:8182/d/1fFiWJ4mz/doris-prod-cluster

坏了会怎样:供数层悄悄变慢,页面转半天圈,等你发现的时候,已经是业务在群里问了。

🚪 另有四件:这一关只点名

像什么:另外四件家什——进料口、出料口、值班表、货架。

其实是什么:DataX 管入湖,SeaTunnel 管出湖入仓,DolphinScheduler 管编排,Doris 管对外供数。这四件后面各自单独开一关,这里先记住站位:谁在进水那一头,谁在出水那一头。

真名
DataX / SeaTunnel / DolphinScheduler / Doris

搞错会怎样:这四件现在不用深究,但记住一点——接错头就是"入湖的管子接去供数",数据在中间那一层原地打转,谁都拿不到结果。

一张表收着:家什、比喻、职责、症状

家什名比喻职责出问题的症状
HDFS水泥地基存文件全厂读不出
YARN水电调度分资源排队218 个挤一台,排 3.8 分钟
Spark、Hive机器+户口干活、记表名查无此表
Hudi活页账本改行、增量读改不动,整表重刷
Kyuubi总水闸SQL 唯一入口不带 tag(必须带)
Ranger、Kerberos门禁+工牌细粒度授权该看的 403
Datasophon装修队一键装运维装不上升不动
Compass听诊器诊断任务卡住只能猜
Prometheus、Grafana仪表盘指标与面板慢了才发现
DataX、SeaTunnel、海豚、Doris另开一关入湖出湖编排供数先记站位

三、串起来:一次完整的流程

光认家什没用,得知道一次请求怎么穿过这栋楼。下面从你按下回车那一下开始,走到文件落到硬盘为止。

  1. 连总闸。客户端连 jdbc:kyuubi://…:10009。办公网走 10.160.4.50 或 10.160.4.236,在家走 VPN 的 10.160.4.100:10009。DEV 账号在连接串里带上 kyuubi.engine.share.level.subdomain=<子域>,这条是硬要求。
  2. 要资源。SQL 进来后要起 Spark 应用,YARN 按队列入账,分给它 vcore 和内存。分不到就排队,排多久可以去 http://yarn.sinopharmholding.com:10001/cluster 看。
  3. 干活。Spark 3.x 跑 Spark SQL,读上面的 Hudi / Hive 表,按 SDI → DWI → DWR 的层一层层往上加工。
  4. 对户口。写之前先确认 Metastore 里这张表的户口在:叫什么、什么字段、什么分区。要能改一行,就得是 Hudi 表,按 type='cow'、primaryKey、preCombineField 建好。
  5. 落盘。结果文件写进 HDFS,库按层放:dwi_gk_hudi、dwr_gk_hudi、dm_gk_hudi。
  6. 过门禁。每一步读写都要过 Kerberos 工牌和 Ranger 授权。没权限当场拦,不会给你"先跑了再说"。
  7. 查问题分两头。任务卡住看 YARN 那个入口;供数慢、页面卡,看 http://10.160.4.111:8182/d/1fFiWJ4mz/doris-prod-cluster。

四、搞错了会怎样

这一层踩的坑,多数不是"写错 SQL",是"家什用错了位置":该走总闸的绕过去、该带 tag 的没带、该能改的建成不能改的。

三个最常见的,按后果轻重排:不带 subdomain tag(直接被杀)、Hudi 建表漏硬约束(改不动一行)、HDFS 上公开放权限(数据裸奔)。

会出事DEV 账号不带 kyuubi.engine.share.level.subdomain=<子域>,这是平台明写的准入要求。但“不带就会被 KILL”这个因果,我们没有证据——2026-10-24 两次 Read timed out / Lock wait timeout 也可能只是 Hive Metastore 行锁。所以别把它当已证实结论去汇报,规矩照做就对了。两种偏方也别用:SQL 里写注释冒充 tag、连上之后 SET 一把,平台都不认。
注意Hudi 建表三件事别漏:primaryKey 必须存在(可多字段)、preCombineField 只能是 Date/Timestamp、建表 SQL 不能带 Location(必须是管理表),字段名不能以 _ 开头。另外 23:00 之后停 Hudi 的写与查,别跨日续跑。
小窍门连上之后花 20 秒自检三件事:一看连接串里的 IP——10.160.4.50 / 10.160.4.236 是办公室,10.160.4.100 是 VPN,走错线连不上很正常;二看连接串里有没有 kyuubi.engine.share.level.subdomain=,没有就先补上再连,别等被杀;三跑一句 show databases,能看见 dwi_gk_hudi / dwr_gk_hudi / dm_gk_hudi,说明闸对了、权限也通了。

五、一句话记住

做对了地基是 HDFS,水电是 YARN,机器是 Spark,账本是 Hudi,户口是 Metastore,总闸是 Kyuubi,门禁是 Ranger。七件认全,后面几关才看得懂;认不全,每一关都像在黑箱上敲。

哪天拿不准某件家什管什么,回到第一节那张对照表,只问一句:它站在第几层?站在地上的管存,站在中间的管算,站在楼顶的管进。

下一关就从这个总闸开始,把河水引进厂:清单驱动、六道关卡,DataX / CDM / CDL 三条进水管各接一头。

HDFSYARNSpark 3.xHive MetastoreHudi COWKyuubiRanger + KerberosDatasophon