2014-04-16 3 views
0

내 컴퓨터에서 Hadoop in PutMerge를 실행하려고합니다. 그러나 그것은 효과가 없습니다. 나는 코드Hadoop HDFS PutMerge가 작동하지 않습니다.

package org.apache.hadoop.examples; 

import java.io.IOException; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.FSDataInputStream; 
import org.apache.hadoop.fs.FSDataOutputStream; 
import org.apache.hadoop.fs.FileStatus; 
import org.apache.hadoop.fs.FileSystem; 
import org.apache.hadoop.fs.Path; 

public class PutMerge { 

public static void main(String[] args) throws IOException { 

    Configuration conf = new Configuration(); 
    FileSystem hdfs = FileSystem.get(conf); 
    FileSystem local = FileSystem.getLocal(conf); 

    Path inputDir = new Path("/home/yehang/Documents/example"); 
    Path hdfsFile = new Path("hdfs://localhost:54310:/user/yehang"); 

    //System.out.println(inputDir); 
    //System.out.println(hdfsFile); 

    try { 
     FileStatus[] inputFiles = local.listStatus(inputDir); 
     //System.out.println(inputFiles); 
     FSDataOutputStream out = hdfs.create(hdfsFile); 
     //System.out.println(out); 

     for (int i = 0; i < inputFiles.length; i++) { 
      System.out.println(inputFiles[i].getPath().getName()); 
      FSDataInputStream in = local.open(inputFiles[i].getPath()); 
      byte buffer[] = new byte[256]; 
      int bytesRead = 0; 
      while ((bytesRead = in.read(buffer)) > 0) { 
       out.write(buffer, 0, bytesRead); 
      } 
      in.close(); 
     } 
     out.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 

    } 

} 

}

되어 다음 내 로컬 컴퓨터에 여러 개의 파일을 생성 내가 하둡에서 실행하면 오류가 다음 나온 :

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS:  hdfs://localhost:54310:/user, expected: file:/// 
at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:381) 
at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:55) 
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:335) 
at org.apache.hadoop.fs.ChecksumFileSystem.mkdirs(ChecksumFileSystem.java:492) 
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:377) 
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:364) 
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:555) 
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:536) 
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:443) 
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:435) 
at org.apache.hadoop.examples.PutMerge.main(PutMerge.java:28) 

나를 도울 수 있습니까?

답변

1

Hadoop 분산 파일 시스템 (HDFS) 관련 클래스 파일은 hadoop-hdfs 프로젝트 내에 정의되어 있습니다. 이 문제를 해결하려면 Java 클래스 경로 inorder에 hadoop-hdfs-*.jar jar 파일을 가져와야합니다.

관련 문제