[[PageOutline]]
◢ <[wiki:NCTU110329/Lab5 實作五]> | <[wiki:NCTU110329 回課程大綱]> ▲ | <[wiki:NCTU110329/Lab7 實作七]> ◣
= 實作六 =
{{{
#!html
MapReduce 程式編譯
Compiling Hadoop MapReduce Java Program
}}}
= Practice 1 : Word Count (Basic) =
* 上傳內容到 HDFS 內[[BR]]upload data to HDFS
{{{
$ mkdir lab6_input
$ echo "I like NCTU Cloud Course." > lab6_input/input1
$ echo "I like nctu Cloud Course, and we enjoy this course." > lab6_input/input2
$ hadoop fs -put lab6_input lab6_input
$ hadoop fs -ls lab6_input
Found 2 items
-rw-r--r-- 2 hXXXX supergroup 26 2011-04-19 10:07 /user/hXXXX/lab6_input/input1
-rw-r--r-- 2 hXXXX supergroup 52 2011-04-19 10:07 /user/hXXXX/lab6_input/input2
}}}
* 下載 [http://hadoop.nchc.org.tw/WordCount.java WordCount.java] 並存到家目錄;[[BR]]Download [http://hadoop.nchc.org.tw/WordCount.java WordCount.java] and save to your home directory
{{{
~$ wget http://hadoop.nchc.org.tw/WordCount.java
}}}
* 運作程式[[BR]]Compile WordCount.java and run it by '''hadoop jar''' command
{{{
$ mkdir MyJava
$ ln -s /usr/lib/hadoop/hadoop-*-core.jar hadoop-core.jar
$ javac -classpath hadoop-core.jar -d MyJava WordCount.java
$ jar -cvf wordcount.jar -C MyJava .
$ hadoop jar wordcount.jar WordCount lab6_input/ lab6_out1/
$ hadoop fs -cat lab6_out1/part-00000
}}}
* lab6_out1 執行結果 [[BR]]You should see results like this :
{{{
#!text
Cloud 2
Course, 1
Course. 1
I 2
NCTU 1
and 1
course. 1
enjoy 1
like 2
nctu 1
this 1
we 1
}}}
-----
= Practice 2 : Word Count (Advanced) =
{{{
$ echo "\." >pattern.txt && echo "\," >>pattern.txt
$ hadoop fs -put pattern.txt .
$ mkdir -p MyJava2
}}}
* 下載 [http://hadoop.nchc.org.tw/WordCount2.java WordCount2.java] 並存到家目錄;[[BR]]Download [http://hadoop.nchc.org.tw/WordCount2.java WordCount2.java] to home directory
{{{
~$ wget http://hadoop.nchc.org.tw/WordCount2.java
}}}
{{{
$ javac -classpath hadoop-core.jar -d MyJava2 WordCount2.java
$ jar -cvf wordcount2.jar -C MyJava2 .
$ hadoop jar wordcount2.jar WordCount2 lab6_input lab6_out2 -skip pattern.txt
$ hadoop fs -cat lab6_out2/part-00000
}}}
* lab6_out2 執行結果[[BR]]You should see results like this:
{{{
#!text
Cloud 2
Course 2
I 2
NCTU 1
and 1
course 1
enjoy 1
like 2
nctu 1
this 1
we 1
}}}
* Let's given case insensitive and ignore pattern for this example
{{{
$ hadoop jar wordcount2.jar WordCount2 -Dwordcount.case.sensitive=false lab6_input lab6_out3 -skip pattern.txt
$ hadoop fs -cat lab6_out3/part-00000
}}}
* lab6_out3 執行結果[[BR]]You should see results like this:
{{{
#!text
and 1
cloud 2
course 3
enjoy 1
i 2
like 2
nctu 2
this 1
we 1
}}}