2012-03-16 29 views
6

Tôi đã viết chương trình hadoop của riêng mình và tôi có thể chạy bằng chế độ phân phối giả trong máy tính xách tay của mình, tuy nhiên, khi tôi đặt chương trình trong cụm có thể chạy jar ví dụ, nó mặc định khởi chạy công việc địa phương mặc dù tôi chỉ ra đường dẫn tệp hdfs, bên dưới là đầu ra, đưa ra đề xuất?hadoop chỉ khởi chạy công việc địa phương theo mặc định tại sao?

./hadoop -jar MyRandomForest_oob_distance.jar hdfs://montana-01:8020/user/randomforest/input/genotype1.txt hdfs://montana-01:8020/user/randomforest/input/phenotype1.txt hdfs://montana-01:8020/user/randomforest/output1_distance/ hdfs://montana-01:8020/user/randomforest/input/genotype101.txt hdfs://montana-01:8020/user/randomforest/input/phenotype101.txt 33 500 1 
12/03/16 16:21:25 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId= 
12/03/16 16:21:25 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same. 
12/03/16 16:21:25 INFO mapred.JobClient: Running job: job_local_0001 
12/03/16 16:21:25 INFO mapred.MapTask: io.sort.mb = 100 
12/03/16 16:21:25 INFO mapred.MapTask: data buffer = 79691776/99614720 
12/03/16 16:21:25 INFO mapred.MapTask: record buffer = 262144/327680 
12/03/16 16:21:25 WARN mapred.LocalJobRunner: job_local_0001 
java.io.FileNotFoundException: File /user/randomforest/input/genotype1.txt does not exist. 
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:361) 
    at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:245) 
    at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:125) 
    at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:283) 
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:356) 
    at Data.Data.loadData(Data.java:103) 
    at MapReduce.DearMapper.loadData(DearMapper.java:261) 
    at MapReduce.DearMapper.setup(DearMapper.java:332) 
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142) 
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:621) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305) 
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177) 
12/03/16 16:21:26 INFO mapred.JobClient: map 0% reduce 0% 
12/03/16 16:21:26 INFO mapred.JobClient: Job complete: job_local_0001 
12/03/16 16:21:26 INFO mapred.JobClient: Counters: 0 
Total Running time is: 1 secs 

Trả lời

9

LocalJobRunner đã được chọn là cấu hình của bạn có lẽ hầu hết có mapred.job.tracker bất động sản thiết lập để local hoặc chưa được cài đặt tại tất cả (trong trường hợp này mặc định là địa phương). Để kiểm tra, hãy vào "bất cứ nơi nào bạn trích xuất/cài đặt hadoop"/etc/hadoop/và xem tệp mapred-site.xml tồn tại (đối với tôi nó không, một tệp có tên là mapped-site.xml.template đã có). Trong tập tin đó (hoặc tạo ra nó nếu nó không tồn tại) chắc chắn rằng nó có tính chất sau:

<configuration> 
<property> 
<name>mapreduce.framework.name</name> 
<value>yarn</value> 
</property> 
</configuration> 
  • Xem nguồn cho org.apache.hadoop.mapred.JobClient.init(JobConf)

giá trị của tài sản cấu hình này là gì trong cấu hình hadoop trên máy bạn đang gửi này từ? Đồng thời xác nhận rằng tệp thực thi hadoop bạn đang chạy tham chiếu cấu hình này (và bạn không có 2+ cài đặt được định cấu hình khác) - nhập which hadoop và theo dõi bất kỳ liên kết tượng trưng nào bạn gặp phải.

Hoặc bạn có thể ghi đè lên điều này khi bạn gửi công việc của bạn, nếu bạn biết các máy chủ JobTracker và số cổng bằng cách sử dụng tùy chọn -jt:

hadoop jar MyRandomForest_oob_distance.jar -jt hostname:port hdfs://montana-01:8020/user/randomforest/input/genotype1.txt hdfs://montana-01:8020/user/randomforest/input/phenotype1.txt hdfs://montana-01:8020/user/randomforest/output1_distance/ hdfs://montana-01:8020/user/randomforest/input/genotype101.txt hdfs://montana-01:8020/user/randomforest/input/phenotype101.txt 33 500 1 
+1

Cuối cùng tôi đã tìm ra lý do là vì tôi sử dụng -jar thay vì jar trong khi chạy chương trình .. :( – user974270

+1

@ user974270 Nhưng tại sao nó sẽ khởi chạy một công việc địa phương khi sử dụng -jar. Bạn có biết lý do? – thomaslee

+0

Tôi phải đối mặt với cùng một vấn đề nhưng trong chế độ phân phối psuedo .. http://stackoverflow.com/questions/32787996/hadoop-help-required-to-understand-the-processing-steps?noredirect=1#comment53418582_32787996.Xin vui lòng giúp đỡ – Ajay

2

tôi đã cùng một vấn đề mà mọi v2 MapReduce (mrv2) hoặc nhiệm vụ sợi chỉ chạy với mapred.LocalJobRunner

INFO mapred.LocalJobRunner: Starting task: attempt_local284299729_0001_m_000000_0 

các ResourceManager và Nodemanagers đã truy cập và mapreduce.framework.name được thiết lập để sợi.

Đặt HADOOP_MAPRED_HOME trước khi thực hiện công việc đã khắc phục sự cố cho tôi.

export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce 

cổ vũ dan

3

Nếu bạn đang sử dụng Hadoop 2 và công việc của bạn đang chạy tại địa phương thay vì trên cụm, đảm bảo rằng bạn đã thiết lập mapred-site.xml để chứa các mapreduce.framework.name tài sản với giá trị yarn. Bạn cũng cần thiết lập một dịch vụ trợ giúp trong số yarn-site.xml

Thanh toán Cloudera Hadoop 2 operator migration blog để biết thêm thông tin.

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