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

 
HP: tablet webOS sẽ trở lại vào năm 2013

HP: tablet webOS sẽ trở lại vào năm 2013

Giám đốc điều hành của HP Meg Whitman cuối cùng cũng chính thức cho công bố số phận của hệ điều hành webOS sau khi công ty công bố ngừng phát triển smartphone và tablet chạy nền tảng webOS trước đó.

Google sắp tung ra dịch vụ lưu trữ trực tuyến

Google sắp tung ra dịch vụ lưu trữ trực tuyến

Theo thông tin của một tờ báo uy tín, Google sẽ sớm tung ra một dịch vụ lưu trữ đám mây, cạnh tranh trực tiếp với Dropbox hay Box.net.

Bài viết này mô tả các phím tắt trong Microsoft Office Word 2010

Bài viết này mô tả các phím tắt trong Microsoft Office Word 2010

Bài viết này mô tả các phím tắt có sẵn trong Microsoft Office Word 2010

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

 

Diet con trung