![](/img/trans.png)
[英]Hadoop Java - copy file from windows share folder server to HDFS
[英]Is that possible to run HADOOP and copy a file from local fs to HDFS in JAVA BUT without installing Hadoop on file system?
我hadoop
在Linux文件系统上安装hadoop
。 我想运行hadoop
并将文件从local file system
复制到HDFS
无需在Linux文件系统上安装hadoop
。 我创建了一个示例代码,但是显示“ FS错误,预期文件:///”。 有什么帮助吗?
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URI;
/**
* Created by Ashish on 23/4/15.
*/
public class SampleHadoop {
public static void main(String[] args) throws Exception {
try {
Configuration configuration = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.1.170:54310/"),configuration);
fs.copyFromLocalFile(new Path("./part-m-00000"), new Path("hdfs://192.168.1.170:54310/user/hduser/samplefile"));
fs.close();
} catch (Exception ex) {
System.out.println("Exception "+ex.toString());
}
}
}
的pom.xml
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.3-1102-jdbc41</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.4</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.sqoop</groupId>
<artifactId>sqoop-client</artifactId>
<version>1.99.1</version>
</dependency>
<dependency>
<groupId>org.apache.sqoop</groupId>
<artifactId>sqoop</artifactId>
<version>1.4.0-incubating</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<dependency>
<groupId>org.apache.sqoop</groupId>
<artifactId>sqoop-tools</artifactId>
<version>1.99.4</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
</dependencies>
我寻找了所有可能的解决方案,结果发现:
...
Configuration conf = new Configuration();
conf.addResource(new Path("/home/user/hadoop/conf/core-site.xml"));
conf.addResource(new Path("/home/user/hadoop/conf/hdfs-site.xml"));
但是,在我的情况下,我不想在我的liunx文件系统上安装hadoop
,因此无法指定诸如“ home / user / hadoop”之类的路径。 我希望我可以使其仅使用jar文件运行。
您的用例的正确选择是使用WebHDFS api。 它支持在Hadoop集群外部运行的系统来访问和操作HDFS内容。 它不需要客户端系统安装hadoop二进制文件,您可以使用CURL本身通过http操纵远程hdfs。
请参考
https://hadoop.apache.org/docs/r1.2.1/webhdfs.html
http://hortonworks.com/blog/webhdfs-%E2%80%93-http-rest-access-to-hdfs/
您将需要安装hadoop才能在HDFS之间复制文件。
如果您的系统在同一网络中的远程系统上安装了hadoop ,则可以将远程hdfs文件复制到本地文件系统(无需在本地系统上安装hadoop) 。 只需用远程系统的IP替换您的IP。
无论如何,您至少需要一个具有hadoop安装的系统才能使用hadoop功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.