2012-01-24 46 views
7

Tôi đang cố gắng để chạy các tiêu chuẩn Terasort và tôi nhận được ngoại lệ sau đây:Hadoop: Lỗi trong cấu hình đối tượng

java.lang.RuntimeException: Error in configuring object 
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93) 
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64) 
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) 
    at org.apache.hadoop.mapred.MapTask$OldOutputCollector.<init>(MapTask.java:573) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:435) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:371) 
    at org.apache.hadoop.mapred.Child$4.run(Child.java:259) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059) 
    at org.apache.hadoop.mapred.Child.main(Child.java:253) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88) 
    ... 10 more 
Caused by: java.lang.IllegalArgumentException: can't read paritions file 
    at org.apache.hadoop.examples.terasort.TeraSort$TotalOrderPartitioner.configure(TeraSort.java:213) 
    ... 15 more 
Caused by: java.io.FileNotFoundException: File _partition.lst does not exist. 
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:371) 
    at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:245) 
    at org.apache.hadoop.fs.FileSystem.getLength(FileSystem.java:720) 
    at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1417) 
    at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1412) 
    at org.apache.hadoop.examples.terasort.TeraSort$TotalOrderPartitioner.readPartitions(TeraSort.java:153) 
    at org.apache.hadoop.examples.terasort.TeraSort$TotalOrderPartitioner.configure(TeraSort.java:210) 
    ... 15 more 

Các lệnh TeraGen chạy tốt và đã tạo ra các tập tin đầu vào cho TeraSort. Dưới đây là danh sách các thư mục đầu vào của tôi:

bin/hadoop fs -ls /user/hadoop/terasort-input/Warning: Maximum heap size rounded up to 1024 MB 
Found 5 items 
-rw-r--r-- 1 sqatest supergroup   0 2012-01-23 14:13 /user/hadoop/terasort-input/_SUCCESS 
drwxr-xr-x - sqatest supergroup   0 2012-01-23 13:30 /user/hadoop/terasort-input/_logs 
-rw-r--r-- 1 sqatest supergroup   129 2012-01-23 15:49 /user/hadoop/terasort-input/_partition.lst 
-rw-r--r-- 1 sqatest supergroup 50000000000 2012-01-23 13:30 /user/hadoop/terasort-input/part-00000 
-rw-r--r-- 1 sqatest supergroup 50000000000 2012-01-23 13:30 /user/hadoop/terasort-input/part-00001 

Đây là lệnh của tôi để chạy terasort:

bin/hadoop jar hadoop-examples-0.20.203.0.jar terasort -libjars hadoop-examples-0.20.203.0.jar /user/hadoop/terasort-input /user/hadoop/terasort-output 

tôi làm thấy _partition.lst tập tin trong thư mục đầu vào của tôi, tôi không hiểu tại sao tôi đang nhận được FileNotFoundException.

Tôi làm theo các chi tiết thiết lập được cung cấp tại địa chỉ: http://www.michael-noll.com/blog/2011/04/09/benchmarking-and-stress-testing-an-hadoop-cluster-with-terasort-testdfsio-nnbench-mrbench/

+0

Tìm kiếm trong RawLocalFileSystem không có trong DistributedFileSystem. Bạn có đang cung cấp địa chỉ tên trong cấu hình không? –

+0

Tôi có thể làm điều đó ở đâu? Trước khi chạy TeraSort, tôi chạy TeraGen, đã hoàn tất thành công, vì vậy tôi giả định rằng cấu hình là chính xác. Làm thế nào tôi có thể kiểm tra điều đó? –

Trả lời

0

Sự cố xảy ra vì tôi đang triển khai công việc trên NFS. Tôi đã thay đổi hadoop.tmp.dir để trỏ nó vào một hệ thống tệp cục bộ (/ tmp) và vấn đề biến mất trong nháy mắt.

0

Tôi có này để làm việc như sau:

Tôi đang chạy trong chế độ địa phương từ hadoop thư mục cơ sở của tôi, hadoop-1.0.0 với một đầu vào thư mục con dưới nó, và tôi nhận được cùng một lỗi bạn làm.

Tôi đã chỉnh sửa tệp java bị lỗi để làm cho nó ghi nhật ký đường dẫn thay vì tên tệp, xây dựng lại nó ("kiến nhị phân") và chạy lại. Nó đang tìm tập tin trong thư mục tôi đang chạy. Tôi không có ý tưởng nếu nó đã được tìm trong dir cơ sở hadoop hoặc dir thực hiện.

... vì vậy tôi đã tạo liên kết tượng trưng trong thư mục tôi chạy terasort trong trỏ đến tệp thực trong thư mục nhập.

Đó là một hack rẻ, nhưng nó hoạt động.

- Tim. 
+0

Tôi không chạy nó ở chế độ cục bộ. Thư mục đầu vào của tôi nằm trên HDFS, tôi không có cách nào để tạo liên kết tượng trưng. Ngay cả tôi nghi ngờ nó tìm kiếm trong hệ thống tập tin địa phương của tôi, nhưng tôi không hiểu tại sao. Tôi đã kiểm tra các bản ghi cho mapred.input.dir và nó nói "> hdfs: // localhost: 54310/user/hduser/terasort-input", có nghĩa là hdfs. Chỉ có baffling của nó –

0

Bạn đã thiết lập để chạy ở chế độ phân tán giả (hoặc một cụm thực)? Trừ khi bạn cấu hình Hadoop, nó sẽ chạy trong chế độ Á hậu công việc cục bộ (như các libs bên trong một tiến trình đơn lẻ) - Terasort KHÔNG hoạt động trong chế độ LocalJobRunner. Hãy tìm từ LocalJobRunner trong đầu ra để kiểm tra.

Dưới đây là một liên kết để thiết lập HDFS, SSH và rsync: http://hadoop.apache.org/docs/r1.1.1/single_node_setup.html#PseudoDistributed

0

Tôi đang sử dụng Cloudera CDH4. gặp vấn đề tương tự với chương trình hadoop khác của tôi. tin rằng vấn đề là về việc liên kết các thư viện bên ngoài.

Chương trình hoạt động tốt trong Eclipse (chế độ cục bộ) nhưng khi tôi cố chạy nó ở chế độ phân tán giả, nhận được thông báo lỗi này.

Giải pháp tạm thời: - Tạo tệp jar từ Eclipse với tùy chọn xử lý thư viện - sao chép thư viện được yêu cầu vào thư mục con bên cạnh JAR được tạo. - Sao chép tệp JAR vào thư mục nhà hadoop (đường dẫn nơi tệp hadoop-exampls.jar được đặt)

với sửa lỗi này có thể chạy chương trình hadoop với bất kỳ lỗi nào. hy vọng điều này sẽ giúp

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