Có thể có nhiều đầu vào với nhiều trình ánh xạ khác nhau trong Hadoop MapReduce không? Mỗi lớp bản đồ hoạt động trên một bộ đầu vào khác nhau, nhưng tất cả chúng sẽ phát ra các cặp khóa-giá trị được tiêu thụ bởi cùng một bộ giảm tốc. Lưu ý rằng tôi không nói về những người lập bản đồ chuỗi ở đây, tôi đang nói về việc chạy các trình lập bản đồ khác nhau song song, không phải tuần tự.Có thể có nhiều đầu vào với nhiều trình ánh xạ khác nhau trong Hadoop MapReduce không?
Trả lời
Đây được gọi là tham gia.
Bạn muốn sử dụng các trình lập bản đồ và bộ giảm tốc trong gói bản đồ. * (Cũ hơn nhưng vẫn được hỗ trợ). Các gói mới hơn (mapreduce. *) Chỉ cho phép nhập một bản đồ. Với các gói có bản đồ, bạn sử dụng lớp MultipleInputs để xác định tham gia:
MultipleInputs.addInputPath(jobConf,
new Path(countsSource),
SequenceFileInputFormat.class,
CountMapper.class);
MultipleInputs.addInputPath(jobConf,
new Path(dictionarySource),
SomeOtherInputFormat.class,
TranslateMapper.class);
jobConf.setJarByClass(ReportJob.class);
jobConf.setReducerClass(WriteTextReducer.class);
jobConf.setMapOutputKeyClass(Text.class);
jobConf.setMapOutputValueClass(WordInfo.class);
jobConf.setOutputKeyClass(Text.class);
jobConf.setOutputValueClass(Text.class);
Tôi sẽ trả lời câu hỏi của bạn bằng câu hỏi, 2 câu trả lời và đề xuất chống đề xuất.
Câu hỏi đặt ra là: bạn thấy lợi ích gì khi chạy các công việc bản đồ không đồng nhất song song, ngược lại với việc chạy chúng trong hàng loạt, xuất ra các kết quả đồng nhất có thể xáo trộn đúng cách? Ý tưởng để tránh đi qua cùng một hồ sơ hai lần, một lần với một bản đồ nhận dạng? Câu trả lời đầu tiên là lên lịch cả hai công việc chỉ dành cho người lập bản đồ, mỗi nửa số hạm đội của bạn (hoặc bất kỳ tỷ lệ nào phù hợp nhất với kích thước dữ liệu đầu vào), xuất ra kết quả đồng nhất, tiếp theo là công việc giảm tốc thực hiện phép nối.
Câu trả lời thứ hai là tạo một InputFormat tùy chỉnh có thể nhận biết và chuyển đổi cả hai hương vị của đầu vào không đồng nhất. Điều này cực kỳ xấu xí, nhưng nó sẽ cho phép bạn tránh được bản đồ nhận dạng không cần thiết của đề xuất đầu tiên.
Đề xuất chống là không sử dụng API Hadoop không được chấp nhận từ câu trả lời của Chris. Hadoop là rất trẻ, nhưng các API đang ổn định xung quanh hương vị "mới". Bạn sẽ đến phiên bản cuối cùng.
Lý do để chạy nhiều người vẽ bản đồ là bạn có thể thực hiện một hoạt động phẳng như được đưa ra trong giấy FlumeJava. Đầu ra từ những người lập bản đồ khác nhau có thể tham gia vào cùng một hoạt động trộn. – tibbe
- 1. Hadoop MapReduce file nhiều Input
- 2. Cách lấy tên tệp đầu vào trong trình ánh xạ trong chương trình Hadoop?
- 3. Bắt đầu với MapReduce/Hadoop
- 4. Nhiều đầu vào hadoop không thành công với ClassCastException
- 5. phương pháp thiết lập và dọn dẹp của Trình ánh xạ/Giảm tốc trong Hadoop MapReduce
- 6. Chaining nhiều nhiệm vụ mapreduce trong Hadoop streaming
- 7. Ánh xạ nhiều lớp vào bảng trong Hibernate, không có cột DTYPE
- 8. Nhiều tệp như đầu vào trên Amazon Elastic MapReduce
- 9. Hadoop MapReduce - một tệp đầu ra cho mỗi đầu vào
- 10. Làm thế nào để có nhiều thực thể ánh xạ với một bảng?
- 11. Trình ánh xạ và giảm cho K có nghĩa là thuật toán trong Hadoop trong Java
- 12. Hadoop MapReduce: Kích thước tệp đầu vào phù hợp?
- 13. Hadoop MapReduce cung cấp các thư mục lồng nhau như đầu vào công việc
- 14. Ý tưởng dự án với Hadoop MapReduce
- 15. Có thể ánh xạ nhiều đối tượng DTO tới một ViewModel bằng Automapper không?
- 16. Excel VBA gọi phụ từ một phụ khác với nhiều đầu vào, đầu ra có kích thước khác nhau
- 17. CXF và nhiều ánh xạ servlet
- 18. ánh xạ nhiều bảng vào một lớp thực thể duy nhất trong khung thực thể
- 19. Chạy Hadoop MapReduce, có thể gọi các tệp thi hành bên ngoài HDFS
- 20. Làm cách nào để có thể ánh xạ nhiều ngữ cảnh vào cùng một tệp chiến tranh trong Jetty?
- 21. Làm thế nào tôi có thể ánh xạ nhiều ngữ cảnh vào cùng một tệp chiến tranh trong Tomcat?
- 22. \ Không thể ánh xạ thực thể vào bảng nếu một thực thể khác có cùng tên với bảng
- 23. Trình biên dịch nhiều đầu vào, nhiều đầu ra với Shake
- 24. NHibernate 3.2 nhiều đến nhiều ánh xạ theo mã
- 25. Nhiều đầu vào với MRJob
- 26. Sails.js - Ánh xạ một đến nhiều
- 27. Có thể có nhiều hoạt động của trình chạy không?
- 28. Có thể xem nhiều chuỗi ghi trên một ByteBuffer được ánh xạ trực tiếp trong Java không?
- 29. Có thể gỡ lỗi nhiều luồng trong nhật thực trong các cửa sổ khác nhau không?
- 30. Có sự khác biệt nào giữa tệp iostream được ánh xạ và tăng tệp ánh xạ interprocess không?
Apis mới hơn ('mapreduce' không' mapred') có 'MultipleInputs': http://hadoop.apache.org/common/docs/r1.0.3/api/org/apache/hadoop/mapreduce/lib /input/MultipleInputs.html –
@Donald Miner: Hoàn toàn đúng. –
@DonaldMiner Một số phiên bản có, nhưng có vẻ như ít nhất 0.20.x không, ví dụ: lưu ý việc thiếu MultipleInputs tại đây: http://hadoop.apache.org/docs/r0.20.205.0/api/org/apache/hadoop/mapreduce/lib/input/ – kabuko