Big Data đang trở thành một quan trọng và là tài sản to lớn của mỗi doanh nghiệp, trong đó Hadoop là công nghệ cốt lõi cho việc lưu trữ và truy cập dữ liệu lớn.

Hệ sinh thái Hadoop là gì?

Hadoop là một Apache framework mã nguồn mở cho phép phát triển các ứng dụng phân tán (distributed processing) để lưu trữ và quản lý các tập dữ liệu lớn.

Ưu điểm của Hadoop ngoài khả năng lưu trữ data và đảm bảo ứng dụng hoạt động 24/7 là khả năng tích hợp với rất nhiều các kiến trúc và công cụ dữ liệu khai thác dữ liệu lớn cho doanh nghiệp.

Kiến trúc lõi của Hadoop dựa trên 02 thành phần xử lý chính là HDFS và MapReduce. Hai thành phần này có chức năng để lưu trữ và xử lý lượng dữ liệu lớn. Giải pháp tích hợp giữa Hadoop và MapReduce là sự kết hợp hoàn hảo mang đến tính năng mạnh mẽ cho người dùng. Trong đó mô hình MapReduce là mô hình mà ứng dụng sẽ được chia nhỏ ra thành nhiều phân đoạn khác nhau được chạy song song trên nhiều node khác nhau.

Hadoop được viết bằng Java tuy nhiên vẫn hỗ trợ C++, Python, Perl bằng cơ chế streaming.

Bài viết này sẽ mô tả thành phần kiến trúc chính của Hadoop cho phép các bạn hiểu sâu hơn về nền tảng này.

Các thành phần chính của Hadoop

Apache Hadoop có nguồn gốc là để quản lý và truy cập dữ liệu, và chỉ bao gồm 2 thành phần là: Hadoop Distributed File System (HDFS) và MapReduce, một khuôn khổ xử lý cho dữ liệu lưu trữ trong HDFS. Theo thời gian, nền tảng Hadoop mở rộng kết hợp với một loạt các dự án khác để thành một nền tảng hoàn chỉnh. Nền tảng này chia thành 5 loại sau: data access, data management, security, operations và governance.

Core Hadoop

Hadoop gồm 4 module:

  • Hadoop Common: Đây là các thư viện và tiện ích cần thiết của Java để các module khác sử dụng. Những thư viện này cung cấp hệ thống file và lớp OS trừu tượng, đồng thời chứa các mã lệnh Java để khởi động Hadoop.
  • Hadoop YARN: Đây là framework để quản lý lập lịch các job và tài nguyên các node.
  • Hadoop Distributed File System (HDFS): Đây là hệ thống lưu trữ và quản lý file phân tán, đồng thời cung cấp truy cập thông lượng cao cho ứng dụng khai thác dữ liệu.
  • Hadoop MapReduce: Đây là hệ thống dựa trên YARN dùng để xử lý song song các tập dữ liệu lớn.

Hiện nay Hadoop đang ngày càng được mở rộng cũng như được nhiều framework khác hỗ trợ như Hive, Hbase, Pig. Tùy vào mục đích sử dụng mà ta sẽ áp dụng framework phù hợp để nâng cao hiệu quả xử lý dữ liệu của Hadoop.

Hadoop Distributed File System (HDFS)

HDFS là hệ thống quản lý dữ liệu phân tán dựa trên nền tảng Java cung cấp giải pháp lưu trữ tin cậy, ổn định, truy cập nhanh chóng. Với mục đích này thì cách thức “wrice once, read many” được sử dụng, cho phép dữ liệu thường được ghi một lần mỗi HDFS, sau đó sẽ được đọc nhiều lần. Do vậy việc sửa đổi dữ liệu sau khi ghi thường rất hạn chế.

Ngoài ra, để lưu trữ dữ liệu phân tán, dữ liệu sẽ được chia thành các block (64/128 MB) và được phân phối tới các node xử lý. Mỗi block đồn thời sẽ được sao chép đến các server khác trong cụm cluster để đảm bảo tính toàn vẹn của dữ liệu.

Chức năng của các thành phần:

  • Namenode: Là thành phần xử lý trung tâm của master node và quản lý toàn bộ meta data của các data node. Với chức năng như vậy thì Namenode sẽ quản lý vị trí của các block và file như là các journal file để phản hồi request thông tin file bất kỳ thời điểm nào.
  • Data node: là slave node đảm nhậm nhiệm vụ lưu trữ Data.
  • The Secondary Name Node: theo tên gọi là để backup cho Name node nhưng thực tế không phải vậy. Nó chỉ là thành phần trợ giúp tá vụ kết hợp block map và journal log của Name Node.

YARN

YARN là viết tắt của cụm từ “Yet-Another-Resource-Negotiator” là một framework hỗ trợ phát triển ứng dụng phân tán. YARN cung cấp daemons và APIs cần thiết cho việc phát triển ứng dụng phân tán, đồng thời xử lý và lập lịch sử dụng tài nguyên tính toán (CPU hay memory) cũng như giám sát quá trình thực thi các ứng dụng đó. YARN tổng quát hơn MapReduce thế hệ đầu tiên (gồm mô hình JobTracker / TaskTracker).

MapReduce

Google là công ty phát minh ra MapReduce nhưng phổ biến framework này đến business và bắt đầu buzzword BigData là Hadoop. Do vậy việc hiểu kiến trúc của Hadoop và YARN là điều không thể thiếu với những người làm BigData. 

Ta còn có thể gọi phương pháp này là Phân tán dữ liệu vì nó tách hết tập hợp các dữ liệu ban đầu thành các dữ liệu nhỏ và sắp xếp lại chúng để dễ dàng tìm kiếm và truy xuất hơn, đặc biệt là việc truy xuất các dữ liệu tương đồng.

Hiện tại có rất nhiều ứng dụng BigData được port chạy trên YARN, trong đó có một số ứng dụng nổi tiếng như Spark.

Các phiên bản Hadoop và MapReduce

MapReduce 1 (Hadoop đời đầu)

Hadoop đời đầu tiên có thể chia ra làm 2 modules:

  • HDFS
  • JobTracker / TaskTracker (Map Reduce 1)

MapReduce2 (NextGen, hay là YARN Yet-Another-Resource-Negotiator)

Kiến trúc mới chia 2 chức năng chính của JobTracker – quản lý tài nguyên và quản lý job thành 2 components riêng biệt:

  • Resource Manager (RM): quản lý toàn bộ tài nguyên tính toán của cluster.
  • Application Master (AM): đơn vị là trên 1 ứng dụng và quản lý vòng đời của Job.

Do vậy đối với YARN, MapReduce sẽ là 1 ứng dụng chạy trên YARN, sử dụng tài nguyên do RM cấp phát. Các node tính toán trong cluster bây giờ sẽ chạy NodeManager quản lý các tiến trình chạy trên máy đó. Resource Manager và Node Manager trở thành xương sống của tính toán phân tán trong YARN. Việc mỗi ứng dụng được tách ra riêng cho phép các process chạy lâu (long running process) cũng có thể được khởi động trên YARN.

ApplicationMaster trên 1 ứng dụng là một thư viện cho phép yêu càu tài nguyên từ Resource Manager và giao tiếp với Node Manager để chạy và thực thi các tasks. Trong YARN, MapReduce2 là thay vì là linh hồn của hadoop như ở hadoop 1 thì chỉ là một ứng dụng. Application Master cho phép xây dựng các ứng dụng khác MR chạy trên YARN.

Kiến trúc Map Reduce

MapReduce bao gồm 02 pha là map và reduce.

  • Hàm map: sẽ quét qua toàn bộ dữ liệu và phân tán chúng ra thành các dữ liệu con. Các xử lý một cặp (key, value) để sinh ra một cặp (key, value) – key và value trung gian. Dữ liệu này input vào hàm Reduce.
  • Hàm Reduce: sẽ thu thập các dữ liệu con lại và sắp xếp lại chúng. Tiếp nhận các (key, value) và trộn các cặp (key, value) trung gian , lấy ra các valueI có cùng key.

Hiện tại có rất nhiều ứng dụng BigData được port chạy trên YARN, trong đó có một số ứng dụng nổi tiếng như Spark. Cụ thể bạn có thể tham khảo hình dưới đây:

Thành phần ứng dụng trong YARN

  • Zookeeper (vườn thú): là dịch vụ tập trung để duy trì thông tin cấu hình, đặt tên, đồng bộ hóa và phân tán cho các nhóm.
  • Hbase: một CSDL cấu trúc phi quan hệ (NoSQL) dạng cột
  • Hive: Data Warehouse cung cấp khả năng truy vấn dữ liệu lưu trữ bằng Hadoop dạng SQL
  • Pig: Pig là ngôn ngữ kịch bản cấp cao được sử dụng với Apache Hadoop. Pig cho phép các nhà phân tích dữ liệu viết các phép biến đổi dữ liệu phức tạp mà không cần biết Java. 

Tham khảo

https://mapr.com/why-hadoop/why-mapr/architecture-matters/

https://www.supinfo.com/articles/single/5234-introduction-to-hadoop-part-3-of-3

https://kipalog.com/posts/YARN-va-MapReduce2