YARN và MapReduce2
hadoop
11
Big Data
6
Architecture
3
White

Bùi Hồng Hà viết ngày 04/06/2015

Giới thiệu

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).

MapReduce2 (MR2) là mô hình MapReduce được viết lại để chạy như là một ứng dụng trên YARN. Mô hình chạy job vẫn tương tự như MR1, ngoại trừ rằng các job bây giờ chạy ApplicationMaster của riêng chúng. Bản thân ApplicationMaster không được chạy trên NameNode (như mô hình JobTracker cũ nữa) mà sẽ được gửi và chạy trên máy tính toán (DataNode).

Có rất nhiều ứng dụng BigData phổ biến khác như Spark hay H2O cũng chạy trên YARN.

Dù rằng 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. Bài viết này tóm tắt kiến trúc tổng quan của YARN và MR2. Bài viết bắt đầu bằng việc giới thiệu qua về HDFS module mà cả YARN và MR1 đều sử dụng đển quán lý File. Tiếp theo bài viết tìm hiểu lại mô hình MapReduce của hadoop 1. Sau cùng, bài viết sẽ tóm tắt những thay đổi từ YARN và thay đổi trong MR2.

MapReduce 1 (Hadoop đời đầu)

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

  • HDFS
  • JobTracker / TaskTracker

HDFS

alt text

HDFS là một FileSystem phân tán, giúp quản lý dữ liệu trên nhiều máy. HDFS được thiết kế giống như những mô tả trong bài báo về GFS của Googles. HDFS chia dữ liệu thành các block (thường có kích thước 128M) và sao chép các block này ra các máy tính khác nhau. Thông tin metadata về files quản lý bởi HDFS như số block, vị trí block, quyền hạn v.v được quản lý tại một máy tính gọi là NameNode. Các máy tính chứa dữ liệu gọi là DataNode. Khi Datanode bị sự cố, NameNode sẽ dựa vào thông tin metadata đang quản lý để sao chép các block dữ liệu trên Datanode bị sự cố sang các máy khác để đảm bảo tính toàn vẹn của dữ liệu.

JobTracker / TaskTracker

alt text

Trên HDFS, để chạy các thủ tục Map/Reduce, hadoop 1 đặt ra 2 khái niệm JobTracker và TaskTracker. JobTracker làm nhiệm vụ kiểm soát tài nguyên tính toán của toàn cluster và chia việc cho các node tính toán. TaskTracker làm nhiệm vụ thông báo tình trạng tính toán của node trong cluster đồng thời chạy các Task được giao bởi JobTracker. Mỗi Task này có thể là một Mapper hay 1 Reducer. Người dùng giao việc cho cluster bằng cách nói chuyện trực tiếp với JobTracker. Dữ liệu sử dụng bởi các Task được lấy thông qua HDFS API.

Mô hình này có một số vấn đề:

  • Vấn đề mở rộng (scalability)
  • Vấn đề tính sẵn sàng (availibility)
  • Vấn đề về sử dụng tài nguyên

Do chỉ có một máy làm nhiệm vụ quản lý tài nguyên, đồng thời quản lý tình trạng thực hiện Job nên năng lực tính toán của cluster bị phụ thuộc vào năng lực của máy tính chạy JobTracker. Theo tin vỉa hè, kiến trúc này có cluster tối đa là khoảng 5000 máy.

Tính sẵn sàng của hệ thống cũng không cao khi chỉ có một máy tính vừa lo chạy job vừa lo lập lịch. Khi JobTracker trở nên bận rộn, Job queue có thể bị kill khiến cho các job đang thực thi lỗi và không thành công.

Tài nguyên tính toán trong mô hình này là slot. Số lượng Task chạy xong xong trên 1 máy là số lượng cores trên máy đó vì vậy lúc khởi động cluster, người quản trị phải tự tay cài đặt số slot dành cho mapper và reducer. Tuy vào cách sử dụng cluster mà cách cấu hình này nhiều khi không đạt hiệu quả cao. Việc điều chỉnh các slot này bằng tay đòi hỏi kinh nghiệm và nhiều khi không đáp ứng được nhu cầu ngay trước mắt của job. Ngoài ra các tài nguyên như DiskIO hay GPUs v.v không được sử dụng.

Cuối cùng kiến trúc này hạn chế ứng dụng chạy trên cluster!

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

Tổng quan

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.

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:

(hình vẽ copy từ Horton)
hình vẽ copy từ  Horton

Tham khảo thêm: http://wiki.apache.org/hadoop/PoweredByYarn

Chi tiết hơn về YARN

Chạy ứng dụng trên YARN

alt text

Quá trình 1 ứng dụng chạy trên YARN được mô tả bằng sơ đồ trên. Cụ thể các bước khởi động 1 ứng dụng như sau:

  • Client giao 1 task cho Resource Manager
  • Resource Manager tính toán tài nguyên cần thiết theo yêu cầu của ứng dụng và tạo 1 App Master (App Mstr). Application Master được chuyển đến chạy 1 một node tính toán. Application Master sẽ liên lạc với các NodeManager ở các node khác để ra yêu cầu công việc cho node này.
  • Node Manager nhận yêu cầu và chạy các task trên container
  • Các thông tin trạng thái thay vì được gửi đến JobTracker sẽ được gửi đến App Master.

Các ứng dụng khác nhau sẽ có các AppMstr khác nhau và sẽ được khởi động ở các máy trạm khác nhau. Điều này làm việc khi một máy trạm bị lỗi phần cứng và sập, các ứng dụng khác không bị ảnh hưởng, chỉ ứng dụng có AppMstr chạy trên máy đó bị ảnh hưởng.

Lập lịch (schedulers)

Resource Manager dùng một module lập lịch mà có thể tháo lắp tự do. Hiện tại YARN có 2 schedulers là:

  • CapacityScheduler
  • FairScheduler

Scheduler mặc định của YARN là FairScheduler ở đó các Job sẽ được cho vào hàng đợi.

Tài nguyên

Ở YARN, tài nguyên không đơn thuần là CPU cores nữa mà bao gồm cả bộ nhớ, DiskIO, và GPUs... Một ứng dụng khi khởi động sẽ yêu cầu

  • Priority: đặc quyền?
  • Bộ nhớ MB: chương trình ứng dụng dự định sẽ sử dụng bao nhiêu MB bộ nhớ
  • CPU: ứng dụng dự định sử dụng bao nhiêu cores.
  • Số lượng containers.

Containers là số lượng tasks có thể được triển khai song song trên 1 node tính toán. Giới hạn tài nguyên sử dụng bởi 1 containers được thực hiện thông qua tính năng cgroups của Linux kernels.

Kết thúc

Bài viết tóm tắt sơ qua về YARN cũng như những thay đổi về mặt kiến trúc so với MapReduce 1 (Hadoop đời đầu). Bài viết trình bày sơ qua kiến trúc hadoop đời đầu bằng cách giới thiệu mô hình JobTracker / TaskTracker rồi chuyển qua Resource Manager / NodeManager và App Master. Bài viết cũng giới thiệu qua các khái niệm thay đổi trong YARN.

Tham khảo

  1. http://blog.cloudera.com/blog/2012/02/mapreduce-2-0-in-hadoop-0-23/

  2. http://www.cloudera.com/content/cloudera/en/resources/library/recordedwebinar/introduction-to-yarn-and-mapreduce-2-slides.html

  3. http://hadoop.apache.org/docs/current/index.html

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Bùi Hồng Hà

59 bài viết.
297 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
80 8
Bài viết tổng hợp cơ chế hoạt động của https Chút ít về chữ ký điện tử Chữ ký điện tử là cơ chế bao gồm 3 thuật toán: Thuật toán chọn một khóa...
Bùi Hồng Hà viết hơn 3 năm trước
80 8
White
45 7
Giới thiệu Gần đây thấy bản thân chém gió rất nhiều về MapReduce, Hadoop v.v nhưng chưa thấy có bài viết nào tổng hợp + giải thích cụ thể về MapRe...
Bùi Hồng Hà viết gần 3 năm trước
45 7
White
37 0
Giới thiệu Google là một công ty dẫn đầu về phần mềm xử lý Big Data. Hầu hết các phần mềm xử lý dữ liệu như Hadoop đều có nguồn gốc ý tưởng từ Goo...
Bùi Hồng Hà viết gần 3 năm trước
37 0
Bài viết liên quan
White
12 0
Hadoop là cái gì vậy? “Hadoop là một framework nguồn mở viết bằng Java cho phép phát triển các ứng dụng phân tán có cường độ dữ liệu lớn một cách ...
nguyenduyhao1111 viết 2 năm trước
12 0
White
12 0
Trước khi so sánh khác nhau về HDFS và HDFS2. Chúng ta đi tìm hiểu về HDFS là cái gì, kiến trúc thế nào? Vì sao điều này lại quan trọng. Bởi vì đâ...
nguyenduyhao1111 viết 2 năm trước
12 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
59 bài viết.
297 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!