1. 程式人生 > >win10操作虛擬機器中hadoop IntelliJ IDEA直接執行程式碼(不需要打jar包)

win10操作虛擬機器中hadoop IntelliJ IDEA直接執行程式碼(不需要打jar包)

IntelliJ IDEA 2018.2.3 (Ultimate Edition)+Maven
VMware中CentOS6.5
Hadoop2.7.1

上課的時候老師使用的是Eclipse編譯器,使用了 eclipse-hadoop的外掛。可以直接在eclipse裡執行,省去了先生成jar再發送的虛擬機器中執行的過程。

由於編譯器IDEA沒有這種外掛所以自己在網上找了一些帖子,對編譯器進行配置,達到的效果是可以直接在IDEA中執行MapperReducer等程式碼並檢視程式碼報錯,但是不可以看到hdfs上的資料夾結構(可以在裡瀏覽器使用虛擬機器ip50070埠檢視),也不可以檢視檔案內容,只是免去了一直生成jar包的繁瑣過程

如果大家有可以在idea中視覺化檔案結構的方法或者其他補充歡迎在下面留言

下面介紹一下操作流程和我遇到的錯誤:

操作流程

下載對應的Hadoop包
在win10環境變數中新增hadoop包所在的路徑(winutils.exe一定要在,其他不確定必不必要)

環境變數怎麼找?開啟windows的設定然後搜尋環境變數,之後在高階設定中開啟就可以看到了。
這裡寫圖片描述
找到之後,在使用者或者系統環境變數中新增HOME_HADOOP(名字可以自己起)
這裡寫圖片描述
然後在Path中新增%HADOOP_HOME%\bin
這裡寫圖片描述
注意這裡\bin是因為我的winutils.exe和hadoop.dll檔案在hadoop所在路徑的\bin目錄下。這個路徑要能找到winutils.exe和hadoop.dll檔案就可以了。

然後把hadoop.dll檔案複製到C:\Windows\System32下(需要管理員許可權),然後重啟電腦,因為修改了環境變數要給系統一個重新認識自己的過程。

在Maven專案的POM檔案中新增hadoop和junit的dependencies如下

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version
>
4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-jobclient</artifactId> <version>2.7.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-mapreduce-client-common --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-common</artifactId> <version>2.7.1</version> </dependency> </dependencies>

之後直接在IDEA執行Driver裡的main方法就可以啦。
這是我的一個簡單例子。

個人理解是需要為IDEA指明hadoop呼叫的地方,它只要找得到就可以在win下執行hadoop,再在程式碼中指明虛擬機器中hadoop的ip地址就可以正常操作了。

常見錯誤

1.沒有列印日誌檔案直接結束執行

方法:在專案properties包下新增log4j.properties
下面是我的log4j.properties裡的內容

###\u8BBE\u7F6E ###
log4j.rootLogger = info,stdout
###\u8F93\u51FA\u4FE1\u606F\u5230\u63A7\u5236\u62AC ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

2.空指標異常
估計是環境變數或者系統裡的hadoop.dll沒有被識別到。確認hadoop.dll在C:\Windows\System32下並且環境變數裡的路徑可以找到windows本機hadoop的路徑之後重啟電腦