1. 程式人生 > >windows平臺下用eclipes連結hadoop 2.7.3 操作hdfs遇到的問題和解決(一)

windows平臺下用eclipes連結hadoop 2.7.3 操作hdfs遇到的問題和解決(一)

第一步

  1. eclipse新建maven專案,pom.xml中新增hadoop依賴
    <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.7.3</version>
    </dependency>
  2. 新建測試程式碼,為了解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

解決過程

  1. 去hadoop官網下載hadoop2.7.3 binary版本,解壓–增加系統變數–按上面的文章黏貼libwinutils.lib和winutils.exe到%HADOOP_HOME%/bin下

  2. 至此,下載function可以使用。同時發現copyToLocalFile function會在下載時,如果目標目錄中已經存在所copy的檔案時,會先執行刪除把該檔案刪除,然後在執行copy操作

    總結

在windows下使用hadoop 的java api需要注意相容性
1,具體解決相容性的原理
2,可以嘗試windows下編譯hadoop