2016-08-12 11 views
2

WEBHDFS REST APIコールを使用すると、Windowsマシン(WindowsサーバまたはWindowsのローカルフォルダまたはデスクトップ)からHadoop- HDFSファイルシステム?WEBHDFS REST APIを使用してWindowsサーバ/ローカルフォルダ/デスクトップからHDFSにファイルをコピー/移動する

はいの場合、サンプルコマンドの情報はありますか?

私は試してみたところ、
Windows - >(ftpを使って) - > Linuxディレクトリ - >(webhdfsを使って) - > HDFSという2つのステップのプロセスです。 Windowsから直接 - >(webhdfs) - > HDFS。

https://hadoop.apache.org/docs/r1.0.4/webhdfs.htmlでも参考にしました。

例:私のファイルがE:\ user \ accounts.txtにあり、webhdfsを使用してこのファイルをHDFS/user/kumar/folderに移動したい場合。

現在、私がやっていることは です。ステップ1)ftpはWindowsからlinuxディレクトリにファイルを転送します。
ステップ2)curlコマンドを実行して、ファイルをlinuxマシンからHDFSフォルダに移動します。

ワンステッププロセスで行うことをお勧めしますか? ステップ1)Windows - > HDFSをwebhdfsを使用してワンステップで実行します。

答えて

0
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.URI; 

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.FileSystem; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.IOUtils; 

import jcifs.smb.NtlmPasswordAuthentication; 
import jcifs.smb.SmbFile; 
import jcifs.smb.SmbFileInputStream; 

public class FileWriteToHDFS 
{ 
    public static void main(String[] args) throws Exception 
    { 
     String src = args[0]; 
     String dest = args[1]; 

     Console console = System.console(); 
     String username = console.readLine("Username: "); 
     String password = new String(console.readPassword("Password: ")); 
     String domain = console.readLine("Authentication Domain: "); 

     NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain, username, password); 
     SmbFile srcSMB = new SmbFile (src, auth); 

     InputStream in = new SmbFileInputStream(srcSMB); 

     Configuration myConf = new Configuration(); 

     FileSystem fs = FileSystem.get(URI.create(dest), myConf); 
     OutputStream out = fs.create(new Path(dest)); 
     try 
     { 
      IOUtils.copyBytes(in, out, 4096, false); 
     } 
     catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      IOUtils.closeStream(in); 
     } 
    } 
} 

このコードは、HDFS

にSMBプロトコルを介してコピーするJCIFSを使用します
関連する問題