Hadoop程序的MR模式能夠提供並行化運行環境,而HDFS是並行化的基礎(HDFS畢竟把文件分割了,而local只是存在一臺機器上),因此,如何在eclipse上跑程序,讓其讀取HDFS上的文件,是一個關鍵。通常來講,你要經過設置configuration來設置目錄是hdfs仍是local,若是你不設置,默認就是local,此時你若是把hdfs-site.xml放入eclipse建的工程的話,那麼,跑的程序就會在HDFS上了,由於那個xml配置了程序默認的運行目錄,清楚瞭如何在HDFS上跑程序,那麼下一步是如何在eclipse調試程序。eclipse
eclipse上運行hadoop能夠看做有2種模式,第一種就是Local模式,也叫本地模式,第二種就是咱們正式的線上集羣模式,當運行本地模式的時候,程序並不會被提交到Hadoop集羣上,而是基於單機的模式跑的,可是單機的模式,運行的結果仍在是存儲在HDFS上的,只不過沒有利用hadoop集羣的資源,單機的模式不要提交jar包到hadoop集羣上,所以通常咱們使用local來測試咱們的MR程序是否可以正常運行,並且對於不復雜的程序運行的速度很是的快,比命令行提交jar的集羣模式快得多,由於少了集羣的job提交環節。oop
可是咱們不想每次運行程序都要打包jar,而後經過命令行 hadoop jar 來提交,這個時候,咱們能夠經過eclipse 打包jar,而後在代碼中設置提交的方法實現。eclipse打成jar包的方法不少,能夠用ant之類的,這裏請各位自行查閱相關資料,本文再也不贅述,剩下的關鍵的一步是如何在代碼中設置提交。相似於第一段提到的那樣,咱們在設置configuration的時候,什麼都不設置,默認讀寫local目錄運行,若是在configuration中設置hdfs,就能夠在HDFS上跑,或者,把hdfs-site.xml拷貝到工程目錄的src下面,也能夠達到一樣效果;若是咱們要設置eclipse代碼提交jar到集羣,咱們也要設置configuration,例如conf.set("mapred.job.tracker","192.168.75.130:9001");,或者把mapred-site.xml拷貝到工程的src下面,都是能夠的。進行了設置,就能夠提交任務到job上了。測試