Vấn đề cơ bản để viết ứng dụng MapReduce

Vấn đề cơ bản để viết ứng dụng MapReduce

Để viết 1 ứng dụng MapReduce chạy trên Hadoop, điều quan trọng nhất là chuẩn bị 2 hàm số Map và Reduce, tuy nhiên cũng còn nhiều thành phần khác cần phải biết. Để dễ hiểu, có thể tóm tắt đường đi của dữ liệu trong ứng dụng MapReduce như hình sau:

Và quá trình thực thi ứng dụng như sau:

Chúng ta sẽ lần lượt tìm hiểu từng thành phần một.

Input Files : thường lưu trên HDFS, kiểu tập tin không cố định và dung lượng thường rất lớn, có thể đến vài GB.

InputFormat: định nghĩa InputSplits để cắt nhỏ file input chia cho các nhiệm vụ và RecordReader để đọc những mảnh nhỏ đó (split) vào map. Tất cả các hàm InputFormat đều kế thừa tính năng và đặc tính của lớp trừu tượng FileInputFormat. Khi một nhiệm vụ Hadoop được khởi động, thư mục chứa file input sẽ được nhập vào đối tượng FileInputFormat. FileInputFormat sẽ đọc tất cả các file có trong thu mục đó, và sau đó nó sẽ phân các file này thành nhiều InputSplit. Có thể dùng đối tượng JobCof để thiết lập định dạng file input (bằng lệnh JobCof.setInputFormat). Các định dạng bao gồm:

Trong đó, TextInputFormat là dạng mặc định còn KeyValueInputFormat là mặc định OutputFormat, có thể dùng cho kết quả trung gian.

InputSplit: định nghĩa dữ liệu nhập vào nhiệm vụ Map. InputSplit phân 1 file thành các split 64MB, nhưng cũng có thể thiết lập bằng tham số mapred.min.split.size

RecordReader: định nghĩa cách chuyển đổi split thành cặp key-value và truyền vào Mapper. TextInputFormat cung cấp LineRecordReader.

Mỗi Mapper sinh ra một Java process, có tham số OutputCollector để thu thập kết quả trung gian và Reporter để báo cáo trạng thái hiện tại.

Patitioner qui định kết quả trung gian key-value nào được truyền cho Reducer nào. Quá trình truyền này gọi là Shuffle. Khi 1 hàm Reduce nhận được các cặp key-value từ nhiều hàm Map truyền tới (các cặp key-value có cùng key được truyền về cùng 1 hàm reduce), đồng thời sẽ sắp xếp để các cặp có cùng key nằm cạnh nhau. Đây là quá trình Sort. Sort và Shuffle được tiến hành song song.

Mỗi Reducer dùng đối tượng OutputFormat (được thừa kế từ FileOutputFormat) để viết vào thư mục (chung cho tất cả các Reducer của ứng dụng đó) trong HDFS một file có tên là part-nnnnn, trong đó nnnnn là số partition id của Reducer. Dùng lệnh FileOutputFormat.setOutputPath() để chỉ định thư mục xuất ra và JobConf.setOutputFormat() để chỉ định đối tượng OutputFormat. Các loại OutputFormat gồm:

Tương tự lúc nhập, OutputFormat cũng có RecordWriter để hướng dẫn viết vào file output như thế nào.

Như đã nói ở phần trước Combiner cũng rất quan trọng trong việc giảm tải lượng dữ liệu truyền từ Map về Reduce. Combiner nằm trước Partitioner:

Vấn đề cơ bản để viết ứng dụng MapReduce

Có thể dùng JobCof.setCombinerClass() để chỉ định lớp Combiner này.

Với kiến thức cơ bản trên đây, bạn hãy đối chiếu và phân tích ví dụ wordcount để hiểu rõ hơn.

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Tìm kiếm bất động sản

 

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Adobe đưa Flash lên “Ice Cream Sandwich” vào cuối năm

Adobe đưa Flash lên “Ice Cream Sandwich” vào cuối năm

Kế hoạch ngừng phát triển Flash Player di động của Adobe sẽ phải đợi lâu hơn một chút, khi công ty tiếp tục đưa Flash lên Android 4.0 “Ice Cream Sandwich”.

Nexus 7 - Thế lực mới của Android tablet

Nexus 7 - Thế lực mới của Android tablet

Trước đây, máy tính bảng vốn là một sản phẩm công nghệ cao cấp với mức giá không hề rẻ một chút nào. Mở đầu với iPad rồi lần lượt là các thế hệ máy tính bảng sử dụng nền tảng Android rồi đến webOS của HP vẫn luôn khiến người dùng nghĩ rằng đây là một sản phẩm xa xỉ.

Tạo mới một node với Node Option Premium.module

Tạo mới một node với Node Option Premium.module

Node Option Premium lets you show a content teaser to the public but show the full content only to people who are logged in and have a certain role. This is typical of the strategy used by many newspapers and magazines with their paywall.

Công ty diệt chuột T&C

 

Diet con trung