DataHub: A generalized metadata search & discovery tool
Bài tóm tắt LinkedIn 2019 4. Điều chỉnh Độ khó: Trung bình
LinkedIn · 2019 · 4. Điều chỉnh · Độ khó: Trung bình — bài gốc
Bối cảnh
- WhereHows (mở mã nguồn 2016): kho metadata trung tâm cho dataset (schema, owner, lineage, job) kèm search. Khi mở rộng sang nhiều loại metadata, LinkedIn rút ra năm bài học:
- Push tốt hơn pull: đội crawler theo từng loại nguồn do một team trung tâm giữ thành ác mộng; để nguồn tự đẩy qua API hoặc message thì tươi hơn.
- Tổng quát tốt hơn chuyên biệt: model metadata gắn cứng làm một thay đổi nhỏ kéo theo sửa cả stack.
- Online quan trọng như offline: dump vào Hadoop chưa đủ; kiểm soát truy cập, xử lý quyền riêng tư cần query metadata mới nhất.
- Quan hệ là công dân hạng nhất (lineage, owner).
- Nhiều tâm: không chỉ dataset, còn người, team, metric, feature AI, dashboard...
Thay đổi chính
- Khoảng 2018 viết lại từ đầu thành DataHub: tách monolith WhereHows thành UI module hoá (Ember) và backend metadata tổng quát.
- Mô hình hoá bằng Pegasus (ngôn ngữ schema của Rest.li) với phần mở rộng cho quan hệ. Entity có URN; metadata gắn vào entity thành các aspect (Ownership, Profile...) do các team khác nhau sở hữu và tiến hoá độc lập.
- Ingest hai đường: API Rest.li (cần đọc-sau-ghi) hoặc Kafka với Metadata Change Event (schema Avro sinh tự động từ Pegasus; mọi thay đổi schema bắt buộc tương thích ngược, kiểm lúc build). LinkedIn chủ yếu dùng Kafka; một job Samza đơn giản chuyển MCE thành call API. Hàng triệu MCE mỗi ngày.
- Phục vụ bằng nhiều kho: Espresso (document), Galene (full-text), graph DB (quan hệ, join), sau các DAO chung để thay được kho (và mở mã nguồn với kho phổ biến).
- CDC chuẩn hoá: mọi ghi qua DAO phát Metadata Audit Event (ảnh trước/sau của aspect); job Samza xử lý MAE dựng index search và graph, partition theo URN để giữ thứ tự từng entity.
- Năm 2019: 19 loại entity, hàng chục triệu bản ghi; hơn 1.500 nhân viên dùng mỗi tuần; đồ thị metadata gồm hơn 1 triệu dataset, 23 hệ lưu trữ, 25.000 metric, hơn 500 feature AI.
Vì sao
- Metadata cũng là dữ liệu và đến từ nhiều nơi; một team trung tâm không theo kịp nếu phải tự kéo và tự định nghĩa mọi loại.
Bài học cho SWE
- Kho trung tâm nên nhận đẩy từ nguồn qua schema có hợp đồng, không tự đi kéo.
- Chia một entity thành các aspect có chủ riêng cho phép nhiều team cùng mở rộng mô hình.
- Mọi ghi phát change event → index search và graph là dẫn xuất, dựng lại được.
Liên quan
- LinkedIn 2020 (ba thế hệ kiến trúc catalog) · LinkedIn 2013 · LinkedIn 2014 · Lyft 2019 (catalog thế hệ một theo LinkedIn)
- Pipeline dữ liệu và analytics · Event-driven, message queue và Kafka
#Metadata#data catalog#WhereHows → DataHub#push vs pull#Pegasus#metadata aspect#URN#Rest.li#Metadata Change Event (MCE)#Metadata Audit Event (MAE)#Samza#Espresso#Galene#graph DB
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (1)