HBase
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> HBase

Hadoop RecordReader Giới thiệu, Làm việc &Các loại

Trong blog trước của chúng tôi, chúng tôi đã nghiên cứu về Hadoop Bộ đếm chi tiết. Bây giờ trong hướng dẫn này, chúng ta sẽ thảo luận về RecordReader trong Hadoop.

Ở đây chúng ta sẽ giới thiệu về Hadoop RecordReader, hoạt động của RecordReader. Chúng ta cũng sẽ thảo luận về các loại RecordReader trong MapReduce, kích thước của một Record trong Hadoop MapReduce trong Hướng dẫn MapReduce này.

RecordReader trong MapReduce là gì?

RecordReader chuyển đổi chế độ xem hướng byte của đầu vào thành chế độ xem hướng bản ghi cho Người lập bản đồ Hộp giảm tốc nhiệm vụ để xử lý.

Để hiểu Hadoop RecordReader, chúng ta cần hiểu MapReduce Dataflow. Hãy để chúng tôi tìm hiểu cách thức của luồng dữ liệu:

MapReduce là một mô hình xử lý dữ liệu đơn giản. Đầu vào và đầu ra cho bản đồ và chức năng thu gọn là cặp khóa-giá trị . Sau đây là hình thức chung của bản đồ và các chức năng thu nhỏ:

  • Bản đồ: (K1, V1) → danh sách (K2, V2)
  • Giảm: (K2, danh sách (V2)) → danh sách (K3, V3)

Bây giờ trước khi bắt đầu xử lý, nó cần biết dữ liệu nào cần xử lý. Vì vậy, InputFormat lớp giúp đạt được điều này. Lớp này chọn tệp từ HDFS đó là đầu vào cho chức năng bản đồ. Nó cũng chịu trách nhiệm tạo các phân chia đầu vào.

Ngoài ra, hãy chia chúng thành các bản ghi. Nó chia dữ liệu thành số lượng phân chia (thường là 64 / 128mb) trong HDFS. Điều này được gọi là InputSplit. InputSplit là biểu diễn logic của dữ liệu. Trong một công việc MapReduce, số lượng thực thi của các tác vụ bản đồ bằng số lượng Đầu vào.

Bằng cách gọi ‘getSplit ()’ khách hàng tính toán sự phân chia cho công việc. Sau đó, nó được gửi đến ứng dụng chủ. Nó sử dụng vị trí lưu trữ của chúng để lập lịch các tác vụ bản đồ sẽ xử lý chúng trên cụm.

Sau khi tác vụ bản đồ đó chuyển phần tách cho createRecordReader () phương pháp. Từ đó, nó nhận được RecordReader cho quá trình phân tách. RecordReader tạo bản ghi (cặp khóa-giá trị). Sau đó, nó chuyển đến chức năng bản đồ.

Hadoop RecordReader trong thực thi công việc MapReduce sử dụng dữ liệu trong các ranh giới được tạo bởi inputsplit. Và sau đó, nó tạo ra các cặp Khóa-giá trị cho trình ánh xạ. “Bắt đầu” là vị trí byte trong tệp.

Tại Start, Hadoop RecordReader bắt đầu tạo các cặp khóa / giá trị. “Kết thúc” là nơi RecorReader ngừng đọc các bản ghi. Trong RecordReader, dữ liệu được tải từ nguồn của nó.

Sau đó, dữ liệu được chuyển đổi thành các cặp khóa-giá trị phù hợp để Người lập bản đồ đọc. Nó giao tiếp với inputsplit cho đến khi quá trình đọc tệp không hoàn tất.

RecorReader hoạt động như thế nào trong Hadoop?

Nó không chỉ là trình lặp qua các bản ghi. Nhiệm vụ bản đồ sử dụng một bản ghi để tạo cặp khóa-giá trị mà nó chuyển đến chức năng bản đồ. Chúng tôi cũng có thể thấy điều này bằng cách sử dụng chức năng chạy của người lập bản đồ được cung cấp bên dưới:

public void run(Context context ) throws IOException, InterruptedException{
setup(context);
while(context.nextKeyValue())
{
map(context.setCurrentKey(),context.getCurrentValue(),context)
}
cleanup(context);
}

Mặc dù RecordReader không bắt buộc phải ở giữa các ranh giới được tạo bởi inputsplit để tạo ra các cặp khóa-giá trị, nó thường ở lại. Ngoài ra, triển khai tùy chỉnh thậm chí có thể đọc nhiều dữ liệu hơn bên ngoài inputsplit.

Sau đó, sau khi chạy setup () , nextKeyValue () sẽ lặp lại trên ngữ cảnh. Điều này điền các đối tượng khóa và giá trị cho trình ánh xạ. Theo ngữ cảnh, khung công tác lấy khóa-giá trị từ trình đọc bản ghi. Sau đó chuyển đến bản đồ () phương pháp để thực hiện công việc của nó.

Do đó, đầu vào (khóa-giá trị) cho chức năng bản đồ xử lý theo logic được đề cập trong mã bản đồ. Khi bản ghi đến cuối bản ghi, nextKeyValue () phương thức trả về false.

Các loại Hadoop RecordReader

InputFormat xác định thể hiện RecordReader, trong Hadoop. Theo mặc định, bằng cách sử dụng TextInputFormat ReordReader sẽ chuyển đổi dữ liệu thành các cặp khóa-giá trị. TextInputFormat cũng cung cấp 2 loại RecordReaders như sau:

1. LineRecordReader

Nó là RecordReader mặc định. TextInputFormat cung cấp RecordReader này. Nó cũng coi mỗi dòng của tệp đầu vào là giá trị mới. Sau đó, khóa liên quan là byte offset. Nó luôn bỏ qua dòng đầu tiên trong phần tách (hoặc một phần của nó), nếu nó không phải là phần tách đầu tiên.

Nó luôn đọc một dòng sau ranh giới của sự phân chia cuối cùng (nếu dữ liệu có sẵn, vì vậy nó không phải là lần phân tách cuối cùng).

2. SequenceFileRecordReader

Hadoop RecorReader này đọc dữ liệu được chỉ định bởi tiêu đề của tệp trình tự.

Kích thước tối đa của một bản ghi

Bằng cách sử dụng tham số dưới đây, chúng tôi đặt giá trị lớn nhất.

conf.setInt("mapred.linerecordreader.maxlength", Integer.MAX_VALUE);

Kết luận

Kết luận, Hadoop RecorReader tạo đầu vào (khóa-giá trị) cho Mapper. Nó cũng sử dụng TextInputFormat để chuyển đổi dữ liệu thành cặp khóa-giá trị.

Tôi hy vọng bạn đã thích blog này nếu bạn có bất kỳ câu hỏi nào liên quan đến Hadoop RecordReader, hãy chia sẻ với chúng tôi. Chúng tôi sẽ rất vui khi giải quyết chúng.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách thực hiện:Thêm Tìm kiếm Cloudera vào Cụm của bạn bằng Trình quản lý Cloudera

  2. tạo nhanh một bảng hbase mẫu

  3. Giới thiệu về Apache HBase Snapshots

  4. Hướng dẫn HDFS - Giới thiệu đầy đủ về HDFS cho người mới bắt đầu

  5. Cách thực hiện:Sử dụng Giao diện Apache HBase REST, Phần 1