Thứ Ba, 21 tháng 10, 2025

LinkedIn đã vận hành 1 Exabyte dữ liệu trên HDFS như thế nào?

Hôm nay tôi lượm được một bài khá hay của anh em Linkedin, chia sẻ về cách họ scale cái hệ thống HDFS (Hadoop Distributed File System) lên tới 1 Exabyte dữ liệu. Một con số quá khủng khiếp

Trong bài này, chúng ta sẽ cùng mổ xẻ vài thứ hay ho mà họ đã làm:

  • Làm sao để scale HDFS lên 1 Exabyte dữ liệu?
  • Cách họ replica các server NameNode để tăng tính high availability.
  • Tinh chỉnh Java heap size để hệ thống garbage collection hiệu quả.
  • Làm sao để đọc dữ liệu nhất quán cao từ các Standby NameNode để giảm tải cho Active NameNode.
0198f0c2-01f0-73ef-89f3-ab61c9ca2e69

Hành trình của Linkedin scale HDFS lên 1 Exabyte dữ liệu

Chắc không ai lạ gì Linkedin, mạng xã hội nghề nghiệp lớn nhất hành tinh với hơn 800 triệu người dùng. Để xử lý và phân tích khối dữ liệu khổng lồ do người dùng tạo ra, Linkedin phụ thuộc rất nhiều vào Hadoop, cụ thể là HDFS để lưu trữ.

Trong 5 năm qua, hạ tầng của họ phình to theo cấp số nhân. Đến 2021, họ chạm mốc lưu trữ 1 exabyte dữ liệu trên tất cả các cluster Hadoop. Riêng cái cluster lớn nhất đã chứa 500 petabytes dữ liệu, chạy trên 10,000 node. Đây chắc chắn là một trong những cluster Hadoop lớn nhất thế giới rồi.

Điều đáng nể là dù quy mô cực lớn, độ trễ trung bình cho các RPCs (remote procedure calls) tới cluster vẫn dưới 10 mili giây.

Vậy họ đã làm những gì để HDFS có thể “gánh” được mức tải này?

1. Replica NameNode

Với HDFS, metadata của hệ thống file (tên file, cây thư mục, file nào nằm ở block nào…) được tách riêng khỏi dữ liệu thực tế.

  • DataNode: Là các server chịu trách nhiệm lưu trữ dữ liệu thật. Client đọc/ghi dữ liệu sẽ giao tiếp trực tiếp với mấy con này.
  • NameNode: Là “bộ não” của hệ thống, quản lý toàn bộ metadata. Client muốn tìm file nào thì phải hỏi nó trước.
0198f0e3-605b-7c8c-ba47-8b58f34ba1ab

Vấn đề là, con NameNode này là một single point of failure. Nếu nó mà “tạch” thì thôi rồi, cả cái cluster toang. Với một cluster hàng trăm petabyte, việc restart lại NameNode có thể mất hơn một tiếng, và trong thời gian đó thì mọi job đều phải tạm dừng.

Rất may là từ Hadoop 2 đã có tính năng High Availability. Thay vì một NameNode, giờ đây ta có thể có một cluster:

  • Một Active NameNode duy nhất xử lý mọi request từ client.
  • Nhiều Standby NameNode chạy dự phòng.

Active NameNode sẽ ghi lại mọi giao dịch của nó vào một Journal Service, và các con Standby sẽ đọc từ đó để cập nhật trạng thái của mình. Nhờ vậy, chúng luôn sẵn sàng để tiếp quản ngay khi con Active gặp sự cố. Việc nâng cấp hệ thống (rolling update) cũng dễ thở hơn nhiều, chỉ cần nâng cấp từng con Standby một, sau đó chuyển failover con Active qua rồi nâng cấp nốt là xong.

2. Java Tuning

Vì toàn bộ metadata của HDFS được NameNode lưu trong RAM để truy cập cho nhanh, nên khi hệ thống phình to, RAM cho NameNode cũng phải tăng theo. Con NameNode lớn nhất của Linkedin được set tới 380 GB heap để quản lý 1.1 tỷ object. Để duy trì một cái heap khổng lồ như vậy, việc tuning là bắt buộc. Trong Java, heap thường được chia làm 2 vùng:

  • Young generation: Nơi các object mới tạo ra, thường bị dọn rác (GC) sớm và nhanh.
  • Tenured (Old) generation: Nơi chứa object “sống dai”, tồn tại lâu và được chuyển từ Young gen sau nhiều lần GC.

Khi workload tăng, lượng object tạm thời ở vùng Young tăng lên. Khi hệ thống file lớn lên, vùng Old cũng tăng theo. Anh em ở Linkedin cố gắng giữ tỷ lệ dung lượng giữa vùng Young và Old ở mức 1:4.

Bằng cách này, họ có thể né được hoàn toàn các đợt full garbage collection (dọn dẹp cả 2 vùng), thứ có thể khiến NameNode tạm dừng vài phút liền.

3. Các tối ưu hóa khác

  • Satellite Clusters: HDFS được tối ưu cho file lớn. Nếu lưu quá nhiều file nhỏ, metadata sẽ phình to rất nhanh và trở thành nút thắt cổ chai cho NameNode. Để giải quyết, Linkedin tạo ra các satellite cluster chuyên để xử lý các file nhỏ này.
  • Consistent Reads từ Standby NameNodes: Vì đã có nhiều Standby NameNode, họ tận dụng luôn mấy con này để phục vụ các request chỉ đọc metadata. Nhờ vậy, con Active NameNode chính chỉ cần tập trung xử lý các request ghi, giảm tải cực kỳ hiệu quả.
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master