0
我想從Windows服務器將文件寫入HDFS。 Hadoop集羣在Linux上。 我試圖到處研究我有一個可以使用「hadoop jar」運行的java代碼從Windwos服務器讀取/寫入文件到HDFS
有人可以幫助我理解如何從Windows運行HDFS文件編寫java代碼? Windows盒子上需要什麼?即使是一個適當的鏈接也可以。
我想從Windows服務器將文件寫入HDFS。 Hadoop集羣在Linux上。 我試圖到處研究我有一個可以使用「hadoop jar」運行的java代碼從Windwos服務器讀取/寫入文件到HDFS
有人可以幫助我理解如何從Windows運行HDFS文件編寫java代碼? Windows盒子上需要什麼?即使是一個適當的鏈接也可以。
你只需要編寫一個簡單的java程序並像普通的.jar文件一樣運行它。
在項目中,您需要導入hadoop庫。
這是一個工作示例Maven項目(我測試了我的羣集上):
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class WriteFileToHdfs {
public static void main(String[] args) throws IOException, URISyntaxException {
String dataNameLocation = "hdfs://[your-namenode-ip]:[the-port-where-hadoop-is-listening]/";
Configuration configuration = new Configuration();
FileSystem hdfs = FileSystem.get(new URI(dataNameLocation), configuration);
Path file = new Path(dataNameLocation+"/myFile.txt");
FSDataOutputStream out = hdfs.create(file);
out.writeUTF("Some text ...");
out.close();
hdfs.close();
}
}
記得將依賴於你的pom.xml,並建立主類清單文件中的指令:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<mainClass>your.cool.package.WriteFileToHdfs</mainClass>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
午飯用命令的程序:
java -jar nameOfTheJarFile.jar
當然的Y您需要使用您的軟件包名稱和namenode IP地址編輯代碼。
嗨,你是對的,但我不想用「hadoop jar」命令運行它。是不是可以讓Java代碼與HDFS進行交互,只需使用「java」命令就可以運行? –
是的,這正是我想告訴你的:)。您只需要導入hadoop庫,然後使用java命令運行程序 –
非常感謝您,對不起,但我對Maven不太好,請您解釋一下「記住將依賴項放到您的pom.xml中」正好我需要放在這裏 –