1,利用eclipse編寫Map-Reduce方法,通常引入hadoop-core-1.1.2.jar。注意這裏eclipse裏沒有安裝hadoop的插件,只是引入其匝包,該eclipse能夠安裝在windows或者linux中,若是是在windows中安裝的,且在其虛擬機安裝的linux,能夠經過共享文件夾來實現傳遞。java
2,編寫要測試的數據,如命名爲tempdatalinux
3,利用eclipse的export來打包已編寫好的,在利用eclipse打包jar的時候,只須要選擇src便可,通常只打包程序文件,而且須要選擇main class,將該jar放到如/home/hadoop/docum/Test.jarapache
4,將要分析的數據傳到hdfs上windows
hadoop fs -put /home/hadoop/myhadoopdata/tempdata ./testdata/eclipse
5,開始執行jarjvm
hadoop jar /home/hadoop/Docum/Test.jar /user/hadoop/temperatur output分佈式
這是一種利用jar來運行的。ide
這裏Test.jar在本地,jar不必上傳到hdfs上oop
參數依次爲測試
本地mapred程序,hdfs的測試數據即輸入文件,輸出文件夾。
hadoop jar /home/hadoop/Temperature.jar inputpath outputpath
注意:這裏能夠不須要指定類的名稱,而輸出的文件夾outputpath不能事先已經存在。
1,拷貝源代碼
cp /usr/local/hadoop1.1.2/src/examples/org/apache/hadoop/examples/WordCount.java ~/ygch/hadoop/
2,編譯源代碼,放到指定的文件夾如這裏的class下
javac
-classpath /usr/local/hadoop1.1.2/hadoop-core1.1.2.jar:
/usr/local/hadoop1.1.2/lib/commons-cli-1.2.jarWordCount.java -d class,
利用-classpath選項指定WordCount須要的jar包。hadoop目錄下存放jar包的位置有兩個:根目錄和/lib目錄。而後咱們能夠經過jar tvf *.jar查看jar包內容,進而能夠知道WordCount須要的是哪幾個jar包。
-d選項指定生成的類文件的位置,在編譯的時候這個選項必須從新指定,不能讓class文件生成在當前目錄下。
3,將class文件打包成一個jar包:
jar cvf WordCount.jar -C classes/ .
注意不要忘記最後有一個點.,這個點點必須和前面要有空格,不然jar命令報錯。該點指示jar命令的文件列表,表示指定目錄下的全部文件。
4,生成input文件:
因爲運行hadoop時指定的輸入文件只能是HDFS文件系統中的文件,因此咱們必須將要進行wordcount的文件從本地文件系統拷貝到HDFS文件系統中。
hadoop fs -mkdir input
hadoop fs -put testfile input
5. 運行jar包:
hadoop jar WordCount.jar org.apache.hadoop.examples.WordCount input output
在運行命令中因爲WordCount.java中包括package信息,因此咱們在指定類時要包含package的完整信息。
6. 查看結果
在hadoop程序運行完後,結果會放在output目錄下,該目錄是自動生成的。查看命令爲:
hadoop fs -cat output/part-r-00000
使用-cat或者-text都行
能夠事先在eclipse中編譯好class,而後直接利用hadoop來執行該class文件
在Hadoop集羣中運行做業的時候,必需要將程序打包爲jar文件。
在Hadoop本地和僞分佈中能夠運行jar文件,也能夠直接運行class文件,注意直接運行class文件,必須是沒有map和reducer的,直接獲取FileSystem來進行操做。
若是類有包名,拷貝的時候也要將其包名拷貝,而後
hadoopwhut/structfile/SequenceFileWriteDemo numbers.seq
利用Hadoop命令和Java命令均可以執行class文件,前者能夠將Hadoop庫文件路徑加入到類路徑中來,同時也能獲取Hadoop的配置文件。
通常都須要提早設置一個HADOOP_CLASSPATH環境變量用於添加應用程序類的路徑,注意這裏的路徑是用戶本地的文件路徑,不是hdfs中的路徑。
具體的以下:
export HADOOP_CLASSPATH=/home/hadoop/hadoopclass
hadoop FileSystemCat hdfs://localhost:9000/user/hadoop/inputdata/iodata.txt
也能夠直接在IDE中將hadoop的jar加入classpath中,而後直接run
第四種 Hadoop與eclipse環境的搭建
hadoop jar 運行的實質是:
1.利用hadoop這個腳本啓動一個jvm進程;
2.jvm進程去運行org.apache.hadoop.util.RunJar這個java類;
3.org.apache.hadoop.util.RunJar解壓Temperature.jar
到hadoop.tmp.dir/hadoop-unjar*/目錄下;
4.org.apache.hadoop.util.RunJar動態的加載並運行MainClass或參數中指定的Class;
5.MainClass或參數中指定的Class中設定Job的各項屬性
6.提交job到JobTracker上並監視運行狀況
執行hadoop jar的時候,jar不須要放到hdfs中,通常hadoop是到本地中尋找jar的,若是用戶此時在jar目錄下,能夠直接寫jar名。
對於輸入文件夾和輸出文件夾也不須要寫上hadoop的內置路徑名,默認是在/user/hadoop/這個目錄下的,hadoop命令後能夠不用加根路徑。