2012-10-25 36 views
5

tôi thiết lập và cấu hình sudo nút môi trường hadoop trên ubuntu 12.04 LTS sử dụng theo hướng dẫn http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#formatting-the-hdfs-filesystem-via-the-namenodeDatanode thất bại trong Hadoop trên máy đơn

Sau khi gõ hadoop/bin $ start-all.sh tất cả mọi thứ sẽ tốt đẹp sau đó tôi kiểm tra các JPS sau đó NameNode, JobTracker, TaskTracker, SecondaryNode đã được bắt đầu nhưng DataNode không bắt đầu ...

Nếu bất kỳ biết làm thế nào để giải quyết vấn đề này xin vui lòng cho tôi biết ..

Trả lời

3

ya tôi giải quyết nó ...

java.io.IOException: namespaceIDs không tương thích

Nếu bạn thấy lỗi java.io.IOException: namespaceIDs không tương thích trong các bản ghi của một DataNode (logs/hadoop-hduser-datanode-.log), rất có thể là bạn bị ảnh hưởng bởi vấn đề HDFS-107 (trước đây gọi là HADOOP-1212).

Lỗi đầy đủ trông như thế này trên máy của tôi: ... ERROR org.apache.hadoop.dfs.DataNode: java.io.IOException: Không gian tên không tương thíchID trong/app/hadoop/tmp/dfs/data: namenode namespaceID = 308967713; datanode namespaceID = 113030094 tại org.apache.hadoop.dfs.DataStorage.doTransition (DataStorage.java:281) tại org.apache.hadoop.dfs.DataStorage.recoverTransitionRead (DataStorage.java:121) tại org.apache. hadoop.dfs.DataNode.startDataNode (DataNode.java:230) tại org.apache.hadoop.dfs.DataNode. (DataNode.java:199) tại org.apache.hadoop.dfs.DataNode.makeInstance (DataNode.java : 1202) tại org.apache.hadoop.dfs.DataNode.run (DataNode.java:1146) tại org.apache.hadoop.dfs.DataNode.createDataNode (DataNode.java:1167) tại org.apache.hadoop .dfs.DataNode.main (DataNode.java:1326) t thời điểm này, dường như có hai cách giải quyết như được mô tả bên dưới.

Cách giải quyết 1: Bắt đầu từ đầu Tôi có thể làm chứng rằng các bước sau giải quyết lỗi này, nhưng các tác dụng phụ sẽ không làm bạn hài lòng (tôi cũng vậy). Giải pháp khắc phục thô tôi tìm thấy là:

Dừng cụm Xóa thư mục dữ liệu trên DataCode có vấn đề: thư mục được chỉ định bởi dfs.data.dir trong conf/hdfs-site.xml; nếu bạn làm theo hướng dẫn này, thư mục có liên quan là/app/hadoop/tmp/dfs/data Định dạng lại NameNode (LƯU Ý: tất cả dữ liệu HDFS bị mất trong quá trình này!) Khởi động lại cụm Khi xóa tất cả dữ liệu HDFS và bắt đầu từ đầu không âm thanh như một ý tưởng hay (có thể là ok trong quá trình cài đặt/thử nghiệm ban đầu), bạn có thể thử phương pháp thứ hai.

Cách khắc phục 2: Cập nhật không gian tênID của các mã dữ liệu có vấn đề Cảm ơn bạn đã nhờ Jared Stehler cho đề xuất sau. Tôi chưa tự mình thử nghiệm, nhưng vui lòng dùng thử và gửi cho tôi phản hồi của bạn.Cách giải quyết này là “xâm lấn tối thiểu” như bạn chỉ cần chỉnh sửa một tập tin trên DataNodes có vấn đề:

Dừng các DataNode Chỉnh sửa giá trị của namespaceID trong/hiện tại/VERSION để phù hợp với giá trị của NameNode hiện Khởi động lại DataNode Nếu bạn làm theo các hướng dẫn trong hướng dẫn của tôi, đường dẫn đầy đủ của các tập tin liên quan là:

NameNode:/app/hadoop/tmp/dfs/tên/hiện tại/VERSION DataNode:/app/hadoop/tmp/dfs/data/current/VERSION (nền: dfs.data.dir theo mặc định được đặt thành $ {hadoop.tmp.dir}/dfs/data và chúng tôi đặt hadoop.tmp.dir trong hướng dẫn này thành/app/hadoop/tmp).

Các giải pháp cho vấn đề được đưa ra rõ ràng trong trang web sau đây:

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception-incompatible-namespaceids

+0

Bạn có tìm ra những lý do là? Tôi đã nhận lỗi này bản thân mình trong khi thay đổi dfs. * Tham số trong hdfs-site.xml. Có quy tắc chung nào áp dụng không? Lỗi này có thể được ngăn chặn không? – rretzbach

+0

@rretzbach không có vấn đề gì, nếu bạn cài đặt HDFS, bạn phải định dạng nó trước. Giống như một đĩa cứng. Không cài đặt trên một phân vùng tmp bởi vì nó sẽ bị xóa trên mỗi lần khởi động lại, vì vậy bạn phải định dạng lại tên khóa của bạn mọi lúc. –

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