2012-10-02 38 views
5

Tôi đang cố gắng xây dựng một bản đồ giảm công việc.Làm cách nào để gỡ lỗi bản đồ Hadoop giảm

nó chạy để hoàn thành nhưng xuất hiện dữ liệu lạ ở cuối.

khi tôi cố gắng gỡ lỗi bằng cách sử dụng system.out.println ("dữ liệu gỡ lỗi") nó không hiển thị trên màn hình.

sử dụng API java để tạo ra một tập tin đăng nhập bên ngoài, cố gắng để in ra màn hình sử dụng log.severe ("đăng nhập dữ liệu") hoặc sử dụng phương pháp log4j logger log.info (đăng nhập dữ liệu) sẽ không làm việc, hoặc/

không có gì hoạt động chỉ thời gian tôi thấy thông báo gỡ lỗi của tôi là khi có một ngoại lệ trong bản đồ giảm công việc.

cách khắc phục sự cố để tôi có thể xem thông báo gỡ lỗi của mình trên tệp hoặc trên màn hình?

+2

Sử dụng println không gỡ lỗi. Đó là truy tìm. – maba

+1

Có thể bạn chưa đăng nhập đủ (http://stackoverflow.com/questions/4821134/hadoop-enable-logging)? Ngay cả System.out.println() có thể được chuyển hướng –

Trả lời

3

This answer có thể hữu ích. Hadoop chụp System.out cho hệ thống ghi nhật ký theo dõi công việc của riêng nó.

+0

thx mà có vẻ là đủ hy vọng bây giờ bệnh quản lý để tìm ra vấn đề –

0

Tôi phát triển mã bản đồ/giảm của mình trong Eclipse bằng cách sử dụng maven để xây dựng jar thời gian chạy và quản lý các phụ thuộc. Khi tôi đã cài đặt và chạy trên máy của mình để hỗ trợ HDFS, tôi có thể chạy và gỡ lỗi mã của tôi trong Eclipse. Điều đó có nghĩa là sử dụng các điểm ngắt và mọi thứ khác trong phối cảnh gỡ lỗi Eclipse.

1

Vì bạn đang xử lý dữ liệu lớn, kích thước của thông điệp truy tìm của bạn có thể rất lớn, do đó, nó có thể gây ra sự cố. Nó rất hữu ích để xem xét lựa chọn thay thế để "System.out.println" phong cách khai thác gỗ:

  • đếm sử dụng (here là một ví dụ đơn giản)
  • ghi log để HDFS sử dụng MultipleOutputs

Điều tốt nhất về Bộ đếm và MultipleOutputs - bạn có thể lập trình truy cập chúng, trong trường hợp MultipleOutputs bạn thậm chí có thể chạy tác vụ map/reduce để trích xuất một số thống kê từ nhật ký.

Một giải pháp thay thế khác để gỡ lỗi trên môi trường sản xuất là kiểm tra đơn vị, MiniMRCluster sẽ giúp bạn kiểm tra công việc giảm bản đồ trong khi kiểm tra đơn vị.

3

Bạn có thể thử Jumbune

Từ hướng dẫn của họ:

Debugger cung cấp thống kê kiểm soát dòng chảy cấp mã thực hiện công việc MapReduce. Người dùng có thể áp dụng xác thực regex hoặc các lớp xác thực do người dùng xác định. Theo xác thực được áp dụng, Trình gỡ lỗi luồng kiểm tra luồng dữ liệu đầu vào tuple về cơ bản ghép nối dữ liệu cho từng công cụ lập bản đồ và giảm tốc trong công việc đã gửi.

Jumbune cung cấp chế độ xem bảng/biểu đồ toàn diện mô tả luồng bản ghi đầu vào thông qua công việc. Luồng là được hiển thị ở cấp công việc, cấp MapReduce và cấp độ thể hiện. Các khóa/giá trị chưa khớp khớp đại diện cho số lượng dữ liệu khóa/giá trị bất ngờ thông qua công việc. Trình gỡ lỗi đi sâu vào mã để kiểm tra luồng dữ liệu cho các bộ đếm khác nhau như vòng lặp và điều kiện nếu có, v.v.

Các vấn đề liên quan