windows平臺下用eclipes連結hadoop 2.7.3 操作hdfs遇到的問題和解決(一)
阿新 • • 發佈:2019-02-15
第一步
- eclipse新建maven專案,pom.xml中新增hadoop依賴
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
</dependency> - 新建測試程式碼,為了解hdfs java api大概(有什麼功能,怎麼用)
public class HdfsClient {
FileSystem fs = null ;
@Before
public void init() throws Exception {
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS", "hdfs://master1:9000");
fs = FileSystem.get(configuration);
}
/*
* 上傳一個檔案
*/
@Test
public void upload() throws Exception {
fs.copyFromLocalFile(new Path("e://scala/npp_6.9.2_Installer.exe"), new Path("/"));
fs.close();
}
/*
* 下載一個檔案
*/
@Test
public void download() throws IllegalArgumentException, IOException {
fs.copyToLocalFile(new Path("/npp_6.9.2_Installer.exe"), new Path("e://scala"));
fs.close();
}
/*
* 刪除檔案
*/
@Test
public void delete() throws Exception{
fs.deleteOnExit(new Path("/npp_6.9.2_Installer.exe"));
fs.close();
}
@Test
public void somefunction() throws Exception {
FsStatus status = fs.getStatus();
System.out.println(status.getCapacity()+"-"+status.getUsed()/1024);
}
}
test 下載function時報錯
(null) entry in command string: null chmod 0644
解決過程
去hadoop官網下載hadoop2.7.3 binary版本,解壓–增加系統變數–按上面的文章黏貼libwinutils.lib和winutils.exe到%HADOOP_HOME%/bin下
至此,下載function可以使用。同時發現copyToLocalFile function會在下載時,如果目標目錄中已經存在所copy的檔案時,會先執行刪除把該檔案刪除,然後在執行copy操作
總結
在windows下使用hadoop 的java api需要注意相容性
1,具體解決相容性的原理
2,可以嘗試windows下編譯hadoop