Hadoop3 在eclipse中訪問hadoop並運行WordCount執行個體

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   os   ar   使用   

前言:

      畢業兩年了,之前的工作一直沒有接觸過大資料的東西,對hadoop等比較陌生,所以最近開始學習了。對於我這樣第一次學的人,過程還是充滿了很多疑惑和不解的,不過我採取的策略是還是先讓環境跑起來,然後在能用的基礎上在多想想為什麼。

      通過這三個禮拜(基本上就是周六周日,其他時間都在加班啊T T)的探索,我目前主要完成的是:

  1.在Linux環境中偽分布式部署hadoop(SSH免登陸),運行WordCount執行個體成功。 http://www.cnblogs.com/PurpleDream/p/4009070.html 

      2.自己打包hadoop在eclipse中的外掛程式。  http://www.cnblogs.com/PurpleDream/p/4014751.html 

      3.在eclipse中訪問hadoop運行WordCount成功。 http://www.cnblogs.com/PurpleDream/p/4021191.html 

      所以我下邊會分三次記錄下我的過程,為自己以後查閱方便,要是能協助到其他人,自然是更好了!

 

===============================================================長長的分割線====================================================================

本文:

  在之前的兩篇文章中,我主要是介紹了自己初次學習hadoop的過程中是如何將hadoop偽分布式模式部署到linux環境中的,以及如何自己編譯一個hadoop的eclipse外掛程式。如果大家有需要的話,可以點擊我在前言中列出的前兩篇文章的連結。

      今天,我將在eclipse中,講解如何使用MapReduce。對於下面的問題,我們首先講解的是,如何在eclipse中配置DFS Location,然後講解的是,在配置好的Location上運行WordCount執行個體。

    

      第一步,配置DFS Location:

      1.開啟eclipse之後,切換到Map/Reduce模式,點擊右下角的“new hadoop Location”表徵圖,彈出一個彈出框,如所示,頁面中中有兩個頁簽需要配置,分別是General和Advanced Parameters。

       

      2.首先,我們先配置General中內容。General中主要需要我們進行Map/Reduce和HDFS的host的配置。

         (1).之前我們在Linux安裝hadoop時,曾經修改了兩個設定檔,分別是mapred-site.xml和core-site.xml。當時我們再配置的時候,配置的主機就是localhost和連接埠號碼。這裡由於我們是在eclipse遠端存取你Linux伺服器中的hadoop,所以我們需要將原來配

置檔案中的localhost修改成你伺服器的ip地址,連接埠號碼不變(當然你可以參考網上的文章,配置host檔案)。

         (2).然後將eclipse中我們剛才開啟的General頁簽中的Map/Reduce的host配置成你的mapred-site.xml配置的ip地址和連接埠號碼;再將HDFS的host配置成你的core-site.xml配置的ip地址和連接埠號碼。注意,如果你勾選了HDFS中的那個“Use M/R Master Host”選項,那麼HDFS的host將預設與Map/Reduce中配置的ip地址一致,連接埠號碼可另行配置。

      3.然後,我們要配置的是Advanced Parameters這個選項卡中的內容,這裡面的內容比較多,但是不要緊張哦,因為我們在第一次配置時,可以使用他的預設配置。

   (1)開啟這個選項卡,我們可以瀏覽一下這裡面的內容,著重看下其中選項值包含“/tmp/.....”這種目錄結構的選項,如果我們後邊自己配置的話,其實要修改的也就是這些項。預設的“dfs.data.dir”是在linux伺服器中的“/tmp”目錄下,有時會帶上你的root帳號,這個可以根據自己的需要。

        (2).如果你不想使用上邊的預設配置,則我們根據自己的需要,在我們安裝的hadoop中的hdfs-site.xml檔案中,增加對“dfs.data.dir”這個選項的配置,對應的目錄自己可以提前建立,我的配置

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>        <property>                <name>dfs.data.dir</name>                <value>/myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/dfs_data_dir</value>        </property>        <property>                <name>dfs.replication</name>                <value>1</value>        </property>        <property>                <name>dfs.permissions</name>                <value>false</value>        </property></configuration>

        (3).以我的配置為例,如果我在hadoop的伺服器端做了這樣的配置,那麼我在Advanced Parameters選項卡中,需要修改下面的的幾個選項的value值,注意,其實有個小技巧,你在配置的時候,先找到“hadoop.tmp.dir”這個選項,將這個選項配置成你自訂的目錄位置,然後將Location這個彈出框關掉,再選中剛才的那個Location重新點擊右下角的“Edit hadoop Location”選項(在“new hadoop Location”旁邊),然後再切換到Advanced Parameters選項卡,會發現與之相關的幾個選項的目錄首碼都會發生改變,這時候你在瀏覽一下其他選項,確保目錄首碼都進行了修改,就ok了。

dfs.data.dir  =>  /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/dfs/datadfs.name.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/dfs/namedfs.name.edits.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/dfs/namefs.checkpoint.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/dfs/namesecondaryfs.checkpoint.edits.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/dfs/namesecondaryfs.s3.buffer.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/s3hadoop.tmp.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dirmapred.local.dor => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/mapred/localmapred.system.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/mapred/systemmapred.temp.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/mapred/tempmapreduce.jobtracker.staging.root.dir => /myself_setted/hadoop/hadoop-1.0.1/myself_data_dir/hadoop_tmp_dir/mapred/staging

      4.經過上邊的幾步,我們自己的Location已經配置完了,這時候如果沒有什麼問題的話,會在我們的eclipse的左上方“DFS Location”的下面,顯示出我們剛剛配置好的Location,右鍵點擊這個Location的選擇“Refresh”或者“ReConnect”,如果之前的配置沒有問題的話,會顯示我們再第一篇文章中上傳的a.txt檔案,以及我們之前在linux伺服器端運行hadoop成功的output檔案夾,如。如果沒有上傳檔案,那麼只會顯示“dfs.data.dir”這個目錄。

      

     

  第二步,運行Word Count執行個體:

      1.Location配置好之後,我們可以在eclipse中建立一個MapReduce項目的工程。

      (1).利用反編譯軟體,從hadoop-1.0.1的安裝包中反編譯hadoop-examples-1.0.1.jar這個jar包,將其中的Word Count類取出來,放到你剛才建立的工程中。注意,如果你之前參考的在編譯eclipse的hadoop外掛程式時,參考的是我的第二篇文章的方法,這裡需要加一步,右鍵點擊項目選擇buidld Path,對於以“hadoop-”開頭的jar包,除了“hadoop-core-1.0.1.jar”和“hadoop-tools-1.0.1.jar”這兩個jar包,其餘的以“hadoop-”開頭的jar包都要刪除掉。主要是因為如果不刪除,會導致WordCount這個類方法中的有些累引入的不正確。

      2.項目建立好之後,我們在WordCount類中,右鍵選擇“Run Configurations”彈出一個彈出框,如,然後選中“Arguments”選項卡,在其中的“Program arguments”中配置你的hdfs的input檔案的目錄和output目錄,然後點擊“run”,運行即可,如果在console中沒有拋出異常,證明運行成功,可選擇左上方的Location,選擇“Refresh”,會顯示你的output檔案夾以及啟動並執行結果檔案。

      

      第三步,錯誤排除:

      1.如果之前的output檔案夾存在,你直接在eclipse中運行WordCount方法的話,可能console會報“output檔案夾已經存在”這個錯誤,那麼你只需要現將Location中的output檔案夾刪除,這個錯誤就不會報了。

      2.如果你啟動並執行過程中報了“org.apache.hadoop.security.AccessControlException: Permission denied:。。。。”這個錯誤,是由於本機使用者想要遠程操作hadoop沒有許可權引起的,這時,我們需要在hdfs-site.xml中配置dfs.permissions屬性修改為false(預設為true),可以參考本文上邊關於“hdfs-site.xml”的配置。

      3.如果你啟動並執行過程中報了“Failed to set permissions of path:。。。。”這個錯誤,解決方案是修改/hadoop-1.0.1/src/core/org/apache/hadoop/fs/FileUtil.java裡面的checkReturnValue,注釋掉即可(有些粗暴,在Window下,可以不用檢查)。注意,此處修改時,網上的一般方法是,重新編譯hadoop-core的源碼,然後重新打包。其實如果想省事兒一點的話,我們可以在項目中建立一個org.apache.hadoop.fs這個包,將FileUtil.java這個類複製到這個包裡面,按照下邊圖片中的修改方法,修改FileUtil.java就行了。之所以這種方法也行,是因為java運行時,會優先預設在本項目的源碼中掃描相同路徑的包,然後才是引入的jar檔案中的。

      

     

      經過上邊的步驟,我想多數情況下,你已經成功的在eclipse中遠端存取了你的hadoop了,也許在你實踐的過程中還會碰到其他問題,只要你耐心的在網上搜尋資料,相信一定可以解決的,切記不要太著急。

 

Hadoop3 在eclipse中訪問hadoop並運行WordCount執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.