[hadoop] hadoop_2
in Hadoop
Hadoop_2
MapReduce๊ฐ ํ๋ก ํด๋ฌ์คํฐ์์ ๋์ํ๋ ๋ฐฉ์
Job Tracker
- ๋ฆฌ์์ค ๊ด๋ฆฌ ๊ธฐ๋ฅ : ์ค์ ๋ก ๋ถ์์ด ์ด๋ฃจ์ด์ง๋ ๋ ธ๋๋ค(Task Tracker)์ ๋ฆฌ์์ค(๊ฐ์ฉ ์คํ ๋ฆฌ์ง ๋ฑ)๊ฐ ์ด์ฉ ๊ฐ๋ฅํ์ง, ์ผ๋ง๋ ์ฌ์ฉ๋๊ณ ์๋์ง ๋ฑ์ ๊ด๋ฆฌ
- ์คํ ๊ด๋ฆฌ ๊ธฐ๋ฅ : ์ค์ ๋ก ๋ถ์์ ์คํํ๋ MapReduce Job์ ๋ฐฐํฌํ๊ณ ์ค์ผ์ฅด๋งํ๊ณ ๋ชจ๋ํฐ๋งํ๋ ๊ธฐ๋ฅ
Task Tracker
- Job Tracker์์ ์ผ์ ๋ฐ์์์ ์คํํ๊ณ ์คํ ํํฉ์ ๋ค์ ๋ณด๊ณ ํ๋ค.
โ MapReduce ํ๋ ์์ํฌ
- MapReduce๋
2004๋ ๊ตฌ๊ธ๋ฉ์์ ๋ฐํํ โMapReduce : Simplified Data Processing on Large Clusterโ๋ ๋ ผ๋ฌธ์ ๋ฐํ์ผ๋ก ์์ฑ๋ ๋ง์คํฐ/์ฌ๋ ์ด๋ธ ๊ตฌ์กฐ์ ๋ถ์ฐ์ฒ๋ฆฌ ์์คํ .
MapReduce ์ ํน์ง
- - ๋ฐ์ดํฐ๊ฐ ์๋ ์๋ฒ๋ก ์ฝ๋๋ฅผ ์ ์ก
์์ค์ฝ๋๋ณด๋ค ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ํจ์ฌ ํฌ๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๊ฐ ์๋ ์๋ฒ๋ก ์ฝ๋๋ฅผ ์ ์กํจ์ผ๋ก์จ ์คํ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ค.
- - ๋ฐ์ดํฐ๋ฅผ ํค/๋ฐธ๋ฅ ๋ฐ์ดํฐ์ ์ ๋ณํ์ผ๋ก ์ฒ๋ฆฌ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํค/๋ฐธ๋ฅ ํ์ด๋ก ์ฒ๋ฆฌํ๋๋ฐ ํฌ๊ฒ ๋๊ฐ์ง ์คํ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
๊ฐ. Map Task
์ ๋ ฅ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฐ์ผ๋ก ๋๋ ํ ๊ทธ๊ฒ๋ค์ ๋ฐ์ดํฐ ์กฐ๊ฐ ์ ๋งํผ ๊ฐ ์๋ฒ์์ ๋ณ๋ ฌ์ฒ๋ฆฌํ๊ฒ ๋๋ค. ์ด๋ฅผ Map Task๋ผ๊ณ ํ๋ค.
Map Task์ ์ ๋ ฅ, ์ถ๋ ฅ ๋ชจ๋ ํค/๋ฐธ๋ฅ ํ์ด๊ฐ ๋๋ค.
- ๋. Reduce Task
Map Task์์ ๊ฐ ์๋ฒ์์ ๋ณ๋ ฌ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์์ ์ต์ข ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ด๋ค. Reduce Task ์ญ์ ํ๋ ์ด์์ ์๋ฒ์์ ์คํ ๊ฐ๋ฅํ๋ค. ์ด ์คํ ์์๋ ๋งต ํ ์คํฌ๋ค์์ ๋์จ ๋ ์ฝ๋๋ค ์ค์์ ๊ฐ์ ํค๋ฅผ ๊ฐ๋ ํ์ด๋ค์ ๋ฌถ์ด์ ํ๋์ ๋ ์ฝ๋๋ฅผ ๋ง๋ ๋ค. ๋ง๋ค์ด์ง ๋ ์ฝ๋๋ฅผ ๋ฆฌ๋์ค ํ์คํฌ๋ก ๋๊ธฐ๊ฒ ๋๊ณ ๋ฆฌ๋์ค ํ์คํฌ๋ ๊ทธ ๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ์ฌ ๋ ๋ค๋ฅธ ํค/๋ฐธ๋ฅ ํ์ด๋ฅผ ๋ง๋ค์ด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ํ HDFS์์ ์์น์ ์ ์ฅํ๋ค.
MapReduce ํ๋ ์์ํฌ๊ฐ ๊ฐ์ ํค๋ฅผ ๊ฐ๋ ํ์ด๋ค์ ๋ฌถ๋ ๊ฒ์ ์์์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋จธ๋ ์ ๊ฒฝ์ธ ํ์๊ฐ ์๊ณ ๋ฌถ์ธ ํค/๋ฐธ๋ฅ ํ์ด๋ค์ ์งํฉ์ ํ๊ณ ์ ํ๋ ์ผ์ ๋ง์ถฐ ์ฒ๋ฆฌํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
- - Share Nothing
MapReduce๋ ๋ณ๋ ฌ์ฑ์ด ์์ฃผ ๋๋ค. ๊ทธ ์ด์ ๋ ๋งต ํ์คํฌ๋ผ๋ฆฌ ํน์ ๋ฆฌ๋์ค ํ์คํฌ๋ผ๋ฆฌ ์๋ก ์์กด์ฑ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
- - ์คํ๋ผ์ธ ๋ฐฐ์น ์ฒ๋ฆฌ์ ์ ํฉ
MapReduce ํน์ง์ ๋ฐ๋ผ ๋์ฉ๋ ๋ฐ์ดํฐ์ ์คํ๋ผ์ธ ๋ฐฐ์น์ฒ๋ฆฌ๋ฅผ ์ํ ์์คํ ์ด์ง ๋ฆฌ์ผํ์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์์คํ ์ ์๋๋ค.
- MapReduce ํ๋ฆ
์ด๋ MapReduce ํ๋ก๊ทธ๋จ์ด๊ฑด ๋งต๊ณผ ๋ฆฌ๋์ค๋ฅผ ๊ตฌํํ์ฌ์ผ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก MapReduce ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ํน์ฑ์ ์ง๋๋ค.
- ๋งต๊ณผ ๋ฆฌ๋์ค์ ๋ ๋จ๊ณ๋ก ๊ตฌ์ฑ
- ๋งต๊ณผ ๋ฆฌ๋์ค ๋ชจ๋ ์ ๋ ฅ, ์ถ๋ ฅ ๋ฐ์ดํฐ๊ฐ ํค์ ๋ฐธ๋ฅ๋ก ๊ตฌ์ฑ๋๋ค.
Map ๋จ๊ณ์์๋ ์ฃผ์ด์ง ํค์ ๋ฐธ๋ฅ๋ฅผ ์๋ก์ด ํค์ ๋ฐธ๋ฅ๋ก ๋ณํํ๋ค
๋ชจ๋ ์ ๋ ฅ ๋ ์ฝ๋๋ค์ด ๋งต์ ํตํด ์ฒ๋ฆฌ๋์์ผ๋ฉด ๋ฆฌ๋์ค ์์ ์ด ์์๋๋ค.
๋งต์์ ์ถ๋ ฅ๋ ๋ ์ฝ๋๋ค์์ ๊ฐ์ ํค ๊ฐ์ ๊ฐ๋ ๋ ์ฝ๋๋ค์ ๋ชจ์์ ๋ฆฌ๋์ค์์ ํ๋์ ์ ๋ ฅ์ผ๋ก ๋ค์ด๊ฐ๋ค.
๋ชจ๋ ์ธ ๊ฐ์ ์ ๋ ฅ ํ ์คํธ๊ฐ ์์ด์ ์ธ ๊ฐ์ ๋งต ํ์คํฌ๊ฐ ์กด์ฌํ๊ณ ๋ฆฌ๋์ค ํ์คํฌ๋ 2๊ฐ๋ผ๊ณ ๊ฐ์ ํด๋ณด์.
๋งต์์๋ ๋ค์ด์ค๋ ํ ์คํธ๋ฅผ ๋จ์ด๋ก ๋๋ ์ ๊ฐ ๋จ์ด๊ฐ ๋ค์ด์ค๋ ๋๋ก ๋น๋์๋ฅผ 1๋กํด์ Key, Value์์ผ๋ก ์ถ๋ ฅํ๋ค.
๋ฆฌ๋์ค์์๋ ๋ชจ๋ ๋งต ํ์คํฌ๋ค์ ์ถ๋ ฅ๋ค์ ๋ชจ์์ ๋จ์ด๋ฅผ ํค๋ก ํ๊ณ ๋จ์ด์ ๋น๋์ ๋ฆฌ์คํธ๋ฅผ ๋ฐธ๋ฅ๋ก ๋ง๋ค์ด์ ๋ฆฌ๋์ค์ ์ ๋ ฅ์ผ๋ก ์ง์ ํ๋ค.
๊ทธ๋ฌ๋ฉด ๋ฆฌ๋์ค๋ ๊ฐ๋จํ๊ฒ ๋ฆฌ๋์ค์ ๋ฐธ๋ฅ๋ก ๋ค์ด์จ ๋น๋์ ๋ฆฌ์คํธ๋ฅผ ์ค์บํด์ ๋น๋์๋ฅผ ๋ค ๋ํ ๊ฐ์ ๊ตฌํ๋ค
๋ฆฌ๋์ค์ ์ถ๋ ฅ์ ๊ฒฐ๊ตญ ํด๋น ๋จ์ด๊ฐ ํค๊ฐ๋๊ณ ๋ฐธ๋ฅ๋ ๊ทธ ๋จ์ด์ ์ด ๋น๋์๊ฐ ๋๋ค.
[์ค์ต]
Project : hadoop_mapreduce
Package : WordCount
Class : WordCountMapper.java
โ WordCountReducer.java
โ WordCount.java
1.input.txt ํ์ผ ์์ฑ
[hadoop@master jar]$ vi input.txt
[hadoop@master jar]$ cat input.txt
2.ํ์ผ ์ฌ๋ฆฌ๊ธฐ
[hadoop@master jar]$ hadoop fs -put input.txt input.txt
[hadoop@master jar]$ hadoop fs -ls
3.์์ค ์์ฑ
4.JAR ์์ฑ - WordCount.jar
5.WordCount ๋น๋
์ ๋ ฅํ์ผ : input.txt
์ถ๋ ฅํด๋ : output
[hadoop@master jar]$ hadoop jar WordCount.jar WordCount.WordCount input.txt output
6.๊ฒฐ๊ณผ
[hadoop@master jar]$ hadoop fs -ls
[hadoop@master jar]$ hadoop fs -ls output
Found 2 items
-rw-r--r-- 1 hadoop supergroup 0 2017-02-22 17:35 output/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 58 2017-02-22 17:35 output/part-r-00000
[hadoop@master jar]$
[hadoop@master jar]$ hadoop fs -cat output/part-r-00000
[์ค์ต]
Project : hadoop_mapreduce
Package : CharCount
Class : CharCountMapper.java
โ CharCountReducer.java
โ CharCount.java
์ ๋ ฅํ์ผ : input_str.txt
์ถ๋ ฅํด๋ : output_str
[hadoop@master jar]$ vi input_str.txt
ILOVEYOUILIKEYOU
Stiring ํด๋์ค์ charAt()๋ฅผ ์ด์ฉํ์ธ์
I 1
L 1
O 1
V 1
E 1
Y 1
O 1
U 1
[์ค์ต]
Project : hadoop_mapreduce
Package : NewsCount
Class : NewsCountMapper.java
โ NewsCountReducer.java
โ NewsCount.java
์ ๋ ฅํ์ผ : input_news.txt
์ถ๋ ฅํด๋ : output_news
[hadoop@master jar]$ vi input_news.txt
์ธํฐ๋ท์ ๋ด์ค(์๋ฌธ)
A~Z๊น์ง(๋๋ฌธ์/์๋ฌธ์ ๊ฐ๋ฆฌ์ง ๋ง ๊ฒ) ๊ฐ๊ฐ ๋ช ๊ฐ๊ฐ ์๋์ง ์ถ๋ ฅํ์์ค
A 1
B 3
C 10
โฆ
Z 7
โ ํญ๊ณต ์ถ๋ฐ ์ง์ฐ ๋ฐ์ดํฐ ๋ถ์
1.์ค์ต ๋ฐ์ดํฐ ๋ด๋ ค๋ฐ๊ธฐ
http://stat-computing.org/dataexpo/2009 ์ ์ - Download the data ํด๋ฆญ
1987, 1988, 1989 ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๋๋ค.
2.๋ค์ด๋ก๋ ๋ฐ์ ํ์ผ์ workspace๋ก ๋ณต์ฌ
3.ํ์ผ ์์ถ ํด์
[hadoop@master workspace]$ bzip2 โd 1987.csv.bz2
[hadoop@master workspace]$ bzip2 โd 1988.csv.bz2
[hadoop@master workspace]$ bzip2 โd 1989.csv.bz2
๋๋
[hadoop@master workspace]$ bzip2 -d *.bz2
4.์ฒซ์งธ์ค์ ์ ๋ชฉ๋ผ์ธ์ด๋ค. ์ญ์ ํ์.
[hadoop@master workspace]$ more 1987.csv
[hadoop@master workspace]$ sed โe โ1dโ 1987.csv > 1987_new.csv
( 1988, 1989 ๋ง์ฐฌ๊ฐ์ง )
5.HDFS์ ๋ถ์์ฉ ํ์ผ ์ ๋ก๋ํ๊ธฐ.
[hadoop@master workspace]$ hadoop fs -ls
[hadoop@master workspace]$ hadoop fs โmkdir airline_input
[hadoop@master workspace]$ hadoop fs โput *_new.csv airline_input
[hadoop@master workspace]$ hadoop fs -ls
[hadoop@master workspace]$ hadoop fs -ls airline_input
[hadoop@master workspace]$ hadoop fs -ls
[hadoop@master workspace]$ hadoop fs โmkdir airline_input
[hadoop@master workspace]$ hadoop fs โput *_new.csv airline_input
[hadoop@master workspace]$ hadoop fs -ls
[hadoop@master workspace]$ hadoop fs -ls airline_input
6.AirlinePerformanceParser.java ๊ตฌํ
ํต๊ณ ๋ฐ์ดํฐ๋ ์ฝค๋ง(,)๋จ์๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๋ค.
ํ ์ค์ ํต๊ณ ๋ฐ์ดํฐ์ ํด๋นํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ์.
์์ฑ์์์๋ csvํ์ผ ํ ์ค์ ๊ฐ์ง๊ณ ๋ถ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ๋ฉค๋ฒ๋ณ์์ ์ ์ฅํ๋ค.
7.ํญ๊ณต ์ถ๋ฐ ์ง์ฐ ๋ฐ์ดํฐ ๋ถ์
์ฐ๋๋ณ๋ก ์ผ๋ง๋ ๋ง์ ํญ๊ณต๊ธฐ๊ฐ ์ถ๋ฐ์ด ์ง์ฐ๋์๋์ง ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ.
ํญ๊ณต ์ถ๋ฐ ์ง์ฐ ๋งต๋ฆฌ๋์ค ์ ์ถ๋ ฅ ๋ฐ์ดํฐ ํ์
ํด๋์ค ์
์ถ๋ ฅ ํค ๊ฐ
\--------------------------------------------------------------
๋งคํผ ์
๋ ฅ ๋ผ์ธ๋๋ฒ ํญ๊ณต ์ดํญ ํต๊ณ ๋ฐ์ดํฐ
โ ์ถ๋ ฅ ์ดํญ๋
๋,์ดํญ์ ์ถ๋ฐ ์ง์ฐ ๊ฑด์
๋ฆฌ๋์ ์
๋ ฅ ์ดํญ๋
๋,์ดํญ์ ์ถ๋ฐ ์ง์ฐ ๊ฑด์
โ ์ถ๋ ฅ ์ดํญ๋
๋ ์ดํญ์ ์ถ๋ฐ ์ง์ฐ ๊ฑด์ ํฉ๊ณ
ํ๋ก์ ํธ : hadoop_mapreduce
ํจํค์ง : AirlinePerformance
ํด๋์ค : AirlinePerformanceParser.java
๋งคํผ ๊ตฌํ : DepartureDelayCountMapper.java
๋ฆฌ๋์ ๊ตฌํ : DelayCountReducer.java
๋๋ผ์ด๋ฒ ํด๋์ค ๊ตฌํ : DepartureDelayCount.java
JAR : AirlinePerformanceDeparture.jar
์ ๋ ฅํด๋ : airline_input
์ถ๋ ฅํด๋ : dep_delay_count
[hadoop@master jar]$ hadoop jar AirlinePerformanceDeparture.jar
โ AirlinePerformance.ArrivalDelayCount airline_input arr_delay_count
[hadoop@master jar]$ hadoop fs -ls
Found 5 items
drwxr-xr-x - hadoop supergroup 0 2017-03-25 12:58 airline_input
drwxr-xr-x - hadoop supergroup 0 2017-03-26 09:51 dep_delay_count
[hadoop@master jar]$ hadoop fs -ls dep_delay_count
Found 2 items
-rw-r--r-- 1 hadoop supergroup 0 2017-03-26 09:51 dep_delay_count/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 387 2017-03-26 09:51 dep_delay_count/part-r-00000
[hadoop@master jar]$ hadoop fs โcat dep_delay_count/part-r-00000
โ ํญ๊ณต ๋์ฐฉ ์ง์ฐ ๋ฐ์ดํฐ ๋ถ์
ํด๋์ค ์
์ถ๋ ฅ ํค ๊ฐ
--------------------------------------------------------------
๋งคํผ ์
๋ ฅ ๋ผ์ธ๋๋ฒ ํญ๊ณต ์ดํญ ํต๊ณ ๋ฐ์ดํฐ
โ ์ถ๋ ฅ ์ดํญ๋
๋,์ดํญ์ ๋์ฐฉ ์ง์ฐ ๊ฑด์
๋ฆฌ๋์ ์
๋ ฅ ์ดํญ๋
๋,์ดํญ์ ๋์ฐฉ ์ง์ฐ ๊ฑด์
โ ์ถ๋ ฅ ์ดํญ๋
๋ ์ดํญ์ ๋์ฐฉ ์ง์ฐ ๊ฑด์ ํฉ๊ณ
Package : AirlinePerformance
ํด๋์ค : AirlinePerformanceParser.java
๋งคํผ ๊ตฌํ : ArrivalDelayCountMapper.java
๋ฆฌ๋์ ๊ตฌํ : DelayCountReducer.java
โ - ์ดํญ ๋ ๋,์์ ๋ฌถ์ด์ ํฉ๊ณ๊ตฌํ๋ ๊ฒ์ ๋์ผ
๋๋ผ์ด๋ฒ ํด๋์ค ๊ตฌํ : ArrivalDelayCount.java
JAR : AirlinePerformanceArrival.jar
์ ๋ ฅํด๋ : airline_input
์ถ๋ ฅํด๋ : arr_delay_count
[hadoop@master jar]$ hadoop jar AirlinePerformanceArrival.jar
โ AirlinePerformance.ArrivalDelayCount airline_input arr_delay_count
[hadoop@master jar]$ hadoop fs -ls arr_delay_count
[hadoop@master jar]$ hadoop fs โcat arr_delay_count/part-r-00000
[hadoop@master jar]$ hadoop jar AirlinePerformanceArrival.jar
โ AirlinePerformance.ArrivalDelayCount airline_input arr_delay_count
[hadoop@master jar]$ hadoop fs -ls arr_delay_count
[hadoop@master jar]$ hadoop fs โcat arr_delay_count/part-r-00000
[๋ฌธ์ ] 2013 ~ 2015๋ ๊น์ง ๋ฒ์ฃ ์กฐ์ฌ
ํ๋ก์ ํธ : hadoop_mapreduce
ํจํค์ง : CrimePerformance
ํด๋์ค : CrimePerformanceParser.java
๋งคํผ ๊ตฌํ : CrimeCountMapper.java
๋ฆฌ๋์ ๊ตฌํ : CrimeCountReducer.java
๋๋ผ์ด๋ฒ ํด๋์ค ๊ตฌํ : CrimeCount.java
JAR : CrimePerformanceType.jar
1.์ค์ต ๋ฐ์ดํฐ ๋ด๋ ค๋ฐ๊ธฐ
http://data.gov ์ ์ - Crime ๊ฒ์
2014, 2015, 2016 ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๋๋ค.
2.๋ค์ด๋ก๋ ๋ฐ์ ํ์ผ์ workspace๋ก ๋ณต์ฌ
3.์ฒซ์งธ์ค์ ์ ๋ชฉ๋ผ์ธ์ด๋ค. ์ญ์ ํ์.
[hadoop@master workspace]$ sed -e '1d' Crime_Data_2013.csv > Crime_Data_2013_new.csv
[hadoop@master workspace]$ sed -e '1d' Crime_Data_2014.csv > Crime_Data_2014_new.csv
[hadoop@master workspace]$ sed -e '1d' Crime_Data_2015.csv > Crime_Data_2015_new.csv
4.HDFS์ ๋ถ์์ฉ ํ์ผ ์ ๋ก๋ํ๊ธฐ.
[hadoop@master workspace]$ hadoop fs -ls
[hadoop@master workspace]$ hadoop fs โmkdir crime_input
[hadoop@master workspace]$ hadoop fs โput Crime_Data_2013_new.csv crime_input
[hadoop@master workspace]$ hadoop fs โput Crime_Data_2014_new.csv crime_input
[hadoop@master workspace]$ hadoop fs โput Crime_Data_2015_new.csv crime_input
[hadoop@master workspace]$ hadoop fs -ls
5.์์ค์์ฑ
6.๋ฒ์ฃ ์ด๋ฒคํธ ๋ฐ์ดํฐ ๋ถ์
ํด๋์ค ์
์ถ๋ ฅ ํค ๊ฐ
--------------------------------------------------------------
๋งคํผ ์
๋ ฅ ๋ผ์ธ๋๋ฒ ๋ฒ์ฃ ์ด๋ฒคํธ ๋ฐ์ดํฐ
โ ์ถ๋ ฅ ๋
๋,์,๋ฒ์ฃ์ ํ ์ด๋ฒคํธ ๊ฑด์
๋ฆฌ๋์ ์
๋ ฅ ๋
๋,์,๋ฒ์ฃ์ ํ ์ด๋ฒคํธ ๊ฑด์
โ ์ถ๋ ฅ ๋
๋,์,๋ฒ์ฃ์ ํ ์ด๋ฒคํธ ๊ฑด์ ํฉ๊ณ
[hadoop@master jar]$ hadoop jar CrimePerformanceType.jar CrimePerformance.CrimeCount crime_input crime_output
DRUGS/ALCOHOL VIOLATIONS - ์์ฝ์๋ฐ
VEHICLE BREAK-IN/THEFT - ์ฐจ๋์ ๋
VANDALISM - ๊ณต๊ณต๊ธฐ๋ฌผ ํ์
ASSAULT - ํญํ
DRUGS/ALCOHOL VIOLATIONS
VEHICLE BREAK-IN/THEFT
VEHICLE BREAK-IN/THEFT
ASSAULT
VANDALISM
OTHER
BURGLARY - ์ ๋
โ ํญ๊ณต ์ถ๋ฐ/๋์ฐฉ ์ง์ฐ ๋ฐ์ดํฐ ๋ถ์_ํ๋ผ๋ฏธํฐ
ํญ๊ณต ์ถ๋ฐ/๋์ฐฉ ์ง์ฐ์ ๋ถ์ํ๊ธฐ ์ํด ์ปดํ์ผ์ ๋ฐ๋ก๋ฐ๋ก ํ๊ณ , ์คํ๋ ๋ฐ๋ก ํ์์๋ค.
์ด๊ฒ์ ์ฌ์ฉ์ ์ต์ ์ ๋๊ฒจ๋ฐ์์ workType ํ๋ผ๋ฏธํฐ๊ฐ departure์ผ๋๋ ์ถ๋ฐ ์ง์ฐ์ ๋ถ์ํ๊ณ , workType ํ๋ผ๋ฏธํฐ๊ฐ arrival์ผ๋๋ ๋์ฐฉ์ง์ฐ์ ๋ถ์ํ๋๋ก ํด๋ณด์.
ํจํค์ง : AirlinePerformanceWorkType
ํด๋์ค : AirlinePerformanceParser.java
๋งคํผ ๊ตฌํ : DelayCountMapper.java
๋ฆฌ๋์ ๊ตฌํ (๋์ผ) : DelayCountReducer.java
๋๋ผ์ด๋ฒ ํด๋์ค ๊ตฌํ : DelayCount.java
JAR : AirlinePerformanceWorkType.jar
[hadoop@master jar]$ hadoop jar AirlinePerformanceWorkType.jar AirlinePerformanceWorkType.DelayCount
-D workType=departure airline_input departure_delay_count
[hadoop@master jar]$ hadoop fs -ls
[hadoop@master jar]$ hadoop fs -ls departure_delay_count
[hadoop@master jar]$ hadoop fs -ls -cat departure_delay_count/part-r-00000
[hadoop@master jar]$ hadoop jar AirlinePerformanceWorkType.jar AirlinePerformanceWorkType.DelayCount
-D workType=arrival airline_input arrival_delay_count
1.GenericOptionsParser
ํ๋ก ์ฝ์๋ช ๋ น์ด์์ ์ ๋ ฅํ ์ต์ ์ ๋ถ์ํ๋ค.
GenericOptionsParser๋ ์ฌ์ฉ์๊ฐ ํ๋ก ์ฝ์ ๋ช ๋ น์์ ์ ๋ ฅํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ธ์ํ๋ค.
-D ๋ฅผ ์ด์ฉํ์ฌ ์์ ํ๋ฉด ํ๋ผ๋ฏธํฐ๋ณ๋ก ์์ ์ด ๋ค๋ฅด๊ฒ ์ํ๋๋๋ก ์์ฑํ ์ ์๋ค.
2.TOOL
Tool์ run๋ฉ์๋๋ฅผ ์ด์ฉํด์ ํ๋ก ์คํ์์ ์ ์ ๋ ฅํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฝ์ด์ค๊ณ ์ ์ฉํ ์ ์๋๋ก ์์ ํ ์ ์๋ค.
3.ToolRunner
Tool ์ run๋ฉ์๋๋ ์ค์ง ToolRunner์์๋ง ํธ์ถ ํ ์ ์๋ค.
4.Mapper ์์ฑ
ํ๋ก์ ์คํ ํ ๋ ์ ๋ ฅํ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋งคํํ ์ ์๋๋ก ๋ก์ง์ ์ ์ฉํ๋ ์์ ์ ์ํ
- ํ๋ก ์ ๋ ฅ ์์ ์ ๋ ฅํ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ์ถ์ถ ํ๋ ์์
- ๊ฐ์ ๋ฐ๋ผ ๋ก์ง์ ๋ค๋ฅด๊ฒ ์ ์ฉํ ์ ์๋๋ก ์์
5.Reducer ์์ฑ
์ถ๋ ฅ๋ ๊ฐ์ ํฉ์น๊ธฐ๋ง ํ๋ฉด ๋๋ฏ๋ก ๋ณ๊ฒฝํ์ง ์์๋ ๋๋ค.
6.Driver ์์ฑ
๏ปฟConfigured์ Tool์ ์์๋ฐ๋๋ก ์์ฑํ๋ค.
run๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ์ค์ Driver์์ ์์ ํ๋ ๋ชจ๋ ๋ด์ฉ์ ์์ ํ ์ ์๋๋ก ๊ตฌํํด์ผ ํ๋ค.
๋ง์ฝ input๊ณผ output์ ๊ฒฝ๋ก๋ฅผ ๋ช ๋ นํ ํ๋ผ๋ฏธํฐ๋ก ์ง์ ํ๋ค๋ฉด GenericOptionsParser ์ getRemainingArgs() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์ ์ต์ ์ ์ง์ ํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ์ธํ ๊ฐ์ ์ฝ์ด๋ค์ฌ์ผ ํ๋ค.
โ ํญ๊ณต ์ถ๋ฐ/๋์ฐฉ ์ง์ฐ ๋ฐ์ดํฐ ๋ถ์_์นด์ดํฐ
์นด์ดํฐ์ ์ฌ์ฉ : ๋งต๋ฆฌ๋์ค ํ๋ ์์ํฌ์ ๋งต์์ ์ ๋ ฅ ํ์ผ์ ํ์ค ํ์ค ์ฝ์ ๋๋ง๋ค ์กฐ๊ฑด๋ฌธ์ ์ค์ ํ์ฌ ์กฐ๊ฑด์ ๋ง์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ ์นด์ดํฐ๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์๋ค.
Ex. ํญ๊ณต๊ธฐ ๋ฐ์ดํฐ๋ฅผ ํ์ค ์ฝ์๋๋ฐ, ์กฐ๊ธฐ ์ถ๋ฐ์ผ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ ์นด์ดํฐ early_departure 1์ฆ๊ฐ.
๋ชจ๋ ํ์ผ์ ์ฝ์ ํ ์นด์ดํฐ๊ฐ ์ถ๋ ฅ ํด์ค.
ํจํค์ง : AirlinePerformanceCounter
ํด๋์ค : AirlinePerformanceParser.java
๋งคํผ ๊ตฌํ : DelayCountMapperWithCounter.java
๋ฆฌ๋์ ๊ตฌํ (๋์ผ) : DelayCountReducer.java
๋๋ผ์ด๋ฒ ํด๋์ค ๊ตฌํ : DelayCountWithCounter.java
์์ : DelayCounters.java
JAR : AirlinePerformanceCounter.jar
[์คํ]
[hadoop@master jar]$ hadoop jar AirlinePerformanceCounter.jar AirlinePerformanceCounter.DelayCountWithCounter
-D workType=departure airline_input departure_delay_count_counter
[hadoop@master jar]$ hadoop jar AirlinePerformanceCounter.jar AirlinePerformanceCounter.DelayCountWithCounter
-D workType=arrival airline_input departure_delay_count_counter
โ ํญ๊ณต ์ถ๋ฐ/๋์ฐฉ ์ง์ฐ ๋ฐ์ดํฐ ๋ถ์_๋ฉํฐ
์์ ์์ ๊น์ง๋ ๋์ฐฉ๊ณผ ์ถ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ์ปดํ์ผ์ ํ๋ฒ์ด์ง๋ง ์คํ์ ๋๋ฒ ํ์ฌ์ผ ํ๋ค.
์ด๋ฒ์๋ ํ๋ฒ๋ง ์คํํด์ ์ถ๋ฐ๊ณผ ๋์ฐฉ์ ํ๊บผ๋ฒ์ ๋ถ์ํด์ ํ์ผ์ 2๊ฐ๋ก ๋๋ ์ ์ถ๋ ฅํ๋ค.
๋งคํผ๊ฐ ํ์ค์ ์ ๋ ฅ ํ์ผ์ ์ฝ์์ ๋, ์ถ๋ฐ์ง์ฐ์ด๋ฉด ๋งคํผ์ ์ถ๋ ฅ ํค์ D๋ฅผ ์ถ๊ฐํ๊ณ , ๋์ฐฉ ์ง์ฐ์ด๋ฉด ๋งคํผ์ ์ถ๋ ฅ ํค์ A๋ฅผ ์ถ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋์์์๋ A,D๋ฅผ ์ด์ฉํด์ ๋์ฐฉ๊ณผ ์ถ๋ฐ์ ๊ตฌ๋ถํ์ฌ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ๋ค.
ํจํค์ง : AirlinePerformanceMultiple
ํด๋์ค : AirlinePerformanceParser.java
๋งคํผ ๊ตฌํ : DelayCountMapperWithMultipleOutputs.java
๋ฆฌ๋์ ๊ตฌํ : DelayCountReducerWithMultipleOutputs.java
๋๋ผ์ด๋ฒ ํด๋์ค ๊ตฌํ : DelayCountWithMultipleOutputs.java
์์ : DelayCounters.java
JAR : AirlinePerformanceMultiple.jar
[์คํ]
[hadoop@master jar]$ hadoop jar AirlinePerformanceMultiple.jar AirlinePerformanceMultiple.DelayCountWithMultipleOutputs
airline_input delay_count_multiple
[hadoop@master jar]$ hadoop fs -ls delay_count_multiple
Found 4 items
-rw-r--r-- 1 hadoop supergroup 0 2016-02-26 15:08 delay_count_multiple/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 387 2016-02-26 15:08 delay_count_multiple/arrival-r-00000
-rw-r--r-- 1 hadoop supergroup 387 2016-02-26 15:08 delay_count_multiple/departure-r-00000
-rw-r--r-- 1 hadoop supergroup 0 2016-02-26 15:08 delay_count_multiple/part-r-00000
[hadoop@master jar]$ hadoop fs โcat delay_count_multiple/departure-r-00000
[hadoop@master jar]$ hadoop fs โcat delay_count_multiple/arrival-r-00000
[๋ฌธ์ ] 2013 ~ 2015๋ ๊น์ง ๋ฒ์ฃ ์กฐ์ฌ
๋ฒ์ฃ์ ํ(CRIME_TYPE), ๋ฒ์ฃํ์ฅ(PREMISE_TYPE), ์์น(BLOCK_ADDRESS)์ ๋ฐ๋ฅธ ๊ฐ๊ฐ์ ํ์ผ์ MultiOutputs๋ฅผ ์ด์ฉํ์ฌ ํ๋ฒ์ ๊ตฌํ์์ค
ํ๋ก์ ํธ : hadoop_mapreduce
ํจํค์ง : CrimePerformanceMultiple
ํด๋์ค : CrimePerformanceParser.java
๋งคํผ ๊ตฌํ : CrimeCountMapperMultiple.java
๋ฆฌ๋์ ๊ตฌํ : CrimeCountReducerMultiple.java
๋๋ผ์ด๋ฒ ํด๋์ค ๊ตฌํ : CrimeCountMultiple.java
JAR : CrimePerformanceMultiple.jar
[hadoop@master jar]$ hadoop jar CrimePerformanceMultiple.jar CrimePerformanceMultiple.CrimeCountMultiple
crime_input crime_output_multiple
[hadoop@master jar]$ hadoop fs -ls crime_output_multiple
Found 5 items
-rw-r--r-- 1 hadoop supergroup 0 2017-02-28 20:13 crime_output_multiple/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 9433906 2017-02-28 20:13 crime_output_multiple/blockAddress-r-00000
-rw-r--r-- 1 hadoop supergroup 12881 2017-02-28 20:13 crime_output_multiple/crimeType-r-00000
-rw-r--r-- 1 hadoop supergroup 0 2017-02-28 20:13 crime_output_multiple/part-r-00000
-rw-r--r-- 1 hadoop supergroup 50775 2017-02-28 20:13 crime_output_multiple/premiseType-r-00000
[hadoop@master jar]$ hadoop fs -cat crime_output_multiple/crimeType-r-00000
[hadoop@master jar]$ hadoop fs -cat crime_output_multiple/premiseType-r-00000
[hadoop@master jar]$ hadoop fs -cat crime_output_multiple/blockAddress-r-00000
โ MapReduce ์ ๋ ฌ ๊ธฐ๋ฒ
Hadoop ์ ๋ ฌ
ํ๋ก์ ๋งต๋ฆฌ๋์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ ฅ ๋ฐ์ดํฐ์ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ฆฌ๋์ค ํ์คํฌ๋ง ์คํ๋๊ฒ ํ๋ค๋ฉด ์ ๋ ฌ์ ์ฝ๊ฒ ํด๊ฒฐ ํ ์ ์์ต๋๋ค
ํ์ง๋ง ์ฌ๋ฌ ๋ฐ์ดํฐ๋ ธ๋๊ฐ ๊ตฌ์ฑ๋ ์ํฉ์์๋ ํ๋์ ๋ฆฌ๋์ค ํ์คํฌ๋ง์ ์คํํ์ง ์์ ๊ฒ์ ๋๋ค. ์๋๋ฉด ๋ถ์ฐํ๊ฒฝ์ ์ฅ์ ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ถ์ฐํ๊ฒฝ์์์ ์ฌ๋ฌ ๋ฐ์ดํฐ ๋ ธ๋๋ฅผ ์ด์ฉํ๋ฉด์ ์ ๋ ฌ์ ํ ์ ์์ด์ผ ํ๋ค.
์ฐ๋ฆฐ ์ด๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด ๋ณด์กฐ ์ ๋ ฌ(Secondary Sort), ๋ถ๋ถ ์ ๋ ฌ(Partial Sort), ์ ์ฒด ์ ๋ ฌ(Total Sort)์ ์ฌ์ฉํ ์ ์๋ค.
๋ณด์กฐ ์ ๋ ฌ(Secondary Sort)
๋ณด์กฐ ์ ๋ ฌ์ ํค์ ๊ฐ๋ค์ ๊ทธ๋ฃนํํ๊ณ , ๊ทธ๋ฃนํ๋ ๋ ์ฝ๋์ ์์๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์
์ฌ์ฉ์ ์ ์ ํํฐ์ ๋์ GroupingComparator๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
1.๊ธฐ์กด ํค์ ๊ฐ๋ค์ ์กฐํฉํ ๋ณตํฉํค(Composite Key)๋ฅผ ์ ์ํฉ๋๋ค.
์ด๋ ํค์ ๊ฐ ์ค์์ ์ด๋ค ํค๋ฅผ ๊ทธ๋ฃนํ ํค๋ก ์ฌ์ฉํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
๋ณตํฉํค๋ ๊ธฐ์กด์ ํค๊ฐ์ ์กฐํฉํ ์ผ์ข ์ ํค ์งํฉ
2.๋ณตํฉํค์ ๋ ์ฝ๋๋ฅผ ์ ๋ ฌํ๊ธฐ ์ํ ๋น๊ต๊ธฐ(Comparator)๋ฅผ ์ ์ํฉ๋๋ค.
๏ปฟ๋ณตํฉํค ๋น๊ต๊ธฐ๋ ๋๊ฐ์ ๋ณตํฉํค๋ฅผ ๋น๊ตํ์ฌ ์ ๋ ฌ ์์๋ฅผ ์ ํจ
3.๊ทธ๋ฃนํ ํค๋ฅผ ํํฐ์ ๋ํ ํํฐ์ ๋(Partitioner)๋ฅผ ์ ์ํฉ๋๋ค.
ํํฐ์ ๋๋ ๋งต ํ์คํฌ์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ๋์ค ํ์คํฌ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ก ๋ณด๋ผ์ง ๊ฒฐ์
ํํฐ์ ๋๋ ๋ฐ์ดํฐ๋ ๋งต ํ์คํฌ์ ์ถ๋ ฅ ๋ฐ์ดํฐ์ ํค์ ๊ฐ์ ๋ฐ๋ผ ๊ฒฐ์
4.๊ทธ๋ฃนํ ํค๋ฅผ ์ ๋ ฌํ๊ธฐ ์ํ ๋น๊ต๊ธฐ(Comparator)๋ฅผ ์ ์ํฉ๋๋ค.
๏ปฟ๋ฆฌ๋์๋ ๊ทธ๋ฃนํค ๋น๊ต๊ธฐ๋ฅผ ์ฌ์ฉํด ๊ทธ๋ฃนํ ๋์ด์๋ ๋ฐ์ดํฐ(๊ฐ์ ์ฐ๋์ ํด๋นํ๋ ๋ชจ๋ ๋ฐ์ดํฐ)๋ฅผ ํ๋์ Reducer ๊ทธ๋ฃน์์ ์ฒ๋ฆฌ
[์ค์ต] ๋ณด์กฐ ์ ๋ ฌ(Secondary Sort)
๋จผ์ ์ค์ตํ๊ธฐ ์ ์ ๊ฐ๋จํ๊ฒ Writable์ ๋ํ ์๋ฐ๋ฅผ ๊ณต๋ถํ๋ค
Project : hadoop_sort
Package : exam
Class : Person
โ PersonMain
Project : hadoop_sort
Package : AirlinePerformanceSecondarySort
AirlinePerformanceParser.java
DelayCounters.java
DateKey.java
DateKeyComparator.java
GroupKeyPartitioner.java
GroupKeyComparator.java
DelayCountMapperWithDateKey.java
DelayCountReducerWithDateKey.java
DelayCountWithDateKey.java
JAR : AirlinePerformanceSecondarySort.jar
[hadoop@master jar]$ hadoop jar AirlinePerformanceSecondarySort.jar
AirlinePerformanceSecondarySort.DelayCountWithDateKey
airline_input delay_count_sort
...์ค๋ต
Map-Reduce Framework
Map input records=11555122
Map output records=11273069
Map output bytes=202915242
Map output materialized bytes=225461434
Input split bytes=1098
Combine input records=0
Combine output records=0
Reduce input groups=6 โ 87๋
์ถ๋ฐ,์ง์ฐ
88๋
์ถ๋ฐ,์ง์ฐ
89๋
์ถ๋ฐ, ์ง์ฐ => ์ด 6๊ฐ
Reduce shuffle bytes=225461434
Reduce input records=11273069
Reduce output records=0
Spilled Records=22546138
Shuffled Maps =9
Failed Shuffles=0
Merged Map outputs=9
GC time elapsed (ms)=16648
CPU time spent (ms)=78070
Physical memory (bytes) snapshot=2027245568
Virtual memory (bytes) snapshot=20612046848
Total committed heap usage (bytes)=1439666176
AirlinePerformanceSecondarySort.DelayCounters
early_arrival=4380215
early_departure=1984103
not_available_arrival=177103
not_available_departure=144013
scheduled_arrival=567687
scheduled_departure=4584054
๋ถ๋ถ ์ ๋ ฌ(Partial Sort)
๋ถ๋ถ ์ ๋ ฌ์ ๋งคํผ์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋งตํ์ผ(MapFile)๋ก ๋ณ๊ฒฝํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ
๋ถ๋ถ ์ ๋ ฌ์ ์ ๋ ฌํ ํ์ผ์ ๋งต ๋จ๊ณ์์ ์ํ์ค ํ์ผ๋ก ์ถ๋ ฅ์ ํด์ฃผ๊ณ , ์ถ๋ ฅ๋ ์ํ์ค ํ์ผ์ ๋งตํ์ผ๋ก ๋ณ๊ฒฝํ ํ ๋งตํ์ผ์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํด๋ด๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋งตํ์ผ์ด ์ฌ๋ฌ ๊ฐ๊ฐ ๋ง๋ค์ด์ ธ ์๋๋ผ๋, ๊ฐ๊ฐ์ ๋งตํ์ผ์๋ ํค์ ๋ง๋ ๋ฐ์ดํฐ๋ค๋ง ์ ์ฅ๋์ด ์์ด์ ๋ฐ์ดํฐ ๊ฒ์์ด ๊ฐ๋ฅํ ๊ฒ์ ๋๋ค.๏ปฟ
1.์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ํ์ค ํ์ผ๋ก ์์ฑํฉ๋๋ค.
- ๋งคํผ๋ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฐ์ฐํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋์๊ฐ ํ์ ์์
2.์ํ์ค ํ์ผ์ ๋งตํ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- ๋งตํ์ผ์ ํค๊ฐ์ ๊ฒ์ํ ์ ์๊ฒ ์์ธ๊ณผ ํจ๊ป ์ ๋ ฌ๋ ์ํ์ค ํ์ผ
- ๋งตํ์ผ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ธ์ด ์ ์ฅ๋ index ํ์ผ๊ณผ ๋ฐ์ดํฐ ๋ด์ฉ์ด ์ ์ฅ๋ผ ์๋ data ํ์ผ๋ก ๊ตฌ์ฑ
3.๋งตํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํฉ๋๋ค.
- ๊ฒ์์ ํค๋ ํํฐ์ ๋
- ํํฐ์ ๋๋ ๋ฐ์ดํฐ๋ ๋งต ํ์คํฌ์ ์ถ๋ ฅ ๋ฐ์ดํฐ์ ํค์ ๊ฐ์ ๋ฐ๋ผ ๊ฒฐ์
๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ค ๋ณด๋ฉด ์ ์ฒด ์ ๋ ฌ์ด ํ์ํ ๊ฒฝ์ฐ๋ ์์ง๋ง ์ง๊ธ์ฒ๋ผ ํน์ ํค์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ง ๊ฒ์ํด์ ์ฌ์ฉํด์ผ ํ ๊ฒฝ์ฐ ๋ถ๋ถ ์ ๋ ฌ์ ํ์ฉ
[์ค์ต] ๋ถ๋ถ ์ ๋ ฌ(Partial Sort)
ํจํค์ง : AirlinePerformancePartialSort
AirlinePerformanceParser.java
SequenceFileCreator.java
MapFileCreator.java
SearchValueList.java
JAR : AirlinePerformancePartialSort.jar
1.์ํ์ค ํ์ผ
1988๋ ํต๊ณ ๋ฐ์ดํฐ๋ก ๋งต๋ฆฌ๋์ค ์ก์ ์คํ
[hadoop@master jar]$ hadoop jar AirlinePerformancePartialSort.jar
AirlinePerformancePartialSort.SequenceFileCreator
airline_input/1988_new.csv 1988_sequence
[hadoop@master jar]$ hadoop jar AirlinePerformancePartialSort.jar
AirlinePerformancePartialSort.SequenceFileCreator
airline_input airline_sequence โถ airline_inputํด๋์ 87,88,89๋ ๋์ ๋ชจ๋ ํตํฉํด์ sequenceํ์ผ์ ๋ง๋ ๋ค
[hadoop@master jar]$ hadoop fs -ls 1988_sequence
Found 5 items
-rw-r--r-- 1 hadoop supergroup 0 2017-02-02 12:07 1988_sequence/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 19913688 2017-02-02 12:07 1988_sequence/part-00000
-rw-r--r-- 1 hadoop supergroup 19122032 2017-02-02 12:07 1988_sequence/part-00001
-rw-r--r-- 1 hadoop supergroup 19117352 2017-02-02 12:07 1988_sequence/part-00002
-rw-r--r-- 1 hadoop supergroup 14328075 2017-02-02 12:07 1988_sequence/part-00003
[hadoop@master jar]$ hadoop fs -cat 1988_sequence/part-00000 | more
[hadoop@master jar]$ hadoop fs -text 1988_sequence/part-00000 | more
2.๋งต ํ์ผ
[hadoop@master jar]$ hadoop jar AirlinePerformancePartialSort.jar
AirlinePerformancePartialSort.MapFileCreator 1988_sequence 1988_mapfile
[hadoop@master jar]$ hadoop jar AirlinePerformancePartialSort.jar
AirlinePerformancePartialSort.MapFileCreator airline_sequence airline_mapfile
[hadoop@master jar]$ hadoop fs -ls 1988_mapfile
Found 2 items
-rw-r--r-- 1 hadoop supergroup 0 2017-03-06 20:49 1988_mapfile/_SUCCESS
drwxr-xr-x - hadoop supergroup 0 2017-03-06 20:49 1988_mapfile/part-00000
[hadoop@master jar]$ hadoop fs -ls 1988_mapfile/part-00000
Found 2 items
-rw-r--r-- 1 hadoop supergroup 70574032 2017-03-06 20:49 1988_mapfile/part-00000/data
-rw-r--r-- 1 hadoop supergroup 3349 2017-03-06 20:49 1988_mapfile/part-00000/index
๋งตํ์ผ์ ๊ท๊ฒฉ์ ๋ง๊ฒ data์ indexํ์ผ์ด ์์ฑ๋์ด ์๋ค.
[hadoop@master jar]$ hadoop fs -text 1988_mapfile/part-00000/index | more
์๋ง์ผ๋ก ๋ณด์๋ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค
[hadoop@master jar]$ hadoop fs -text 1988_mapfile/part-00000/data | more
[hadoop@master jar]$ hadoop fs -text 1988_mapfile/part-00000/data | head -10
3.๊ฒ์ ํ๋ก๊ทธ๋จ
๊ฒ์ํ๋ก๊ทธ๋จ ์คํ ์ ์ฃผ์ํด์ผ ํ ์ฌํญ์ ํ์ฌ mapfile ์์ ์๋ ๋ก๊ทธํด๋๋ฅผ ๋ชจ๋ ์ญ์ ํด์ผ ํด์ผ ํ๋ค
MapFileOutputFormat ํด๋์ค๊ฐ mapfileํด๋ ์์ ๋งต๋ฆฌ๋์ค ์ก์ผ๋ก๋ถํฐ ์์ฑ๋ ๋ก๊ทธํ์ผํด๋๋ฅผ ์ฒดํฌํด์ ๋งตํ์ผ์ด ์๋ค๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ ๋๋ค.
[hadoop@master jar]$ hadoop jar AirlinePerformancePartialSort.jar
AirlinePerformancePartialSort.SearchValueList 1988_mapfile 273
Exception in thread "main" java.io.FileNotFoundException: File does not exist: hdfs://master:9000/user/hadoop/1988_mapfile/_SUCCESS/data
...
[hadoop@master jar]$ hadoop fs -ls 1988_mapfile
Found 2 items
-rw-r--r-- 1 hadoop supergroup 0 2017-03-06 20:49 1988_mapfile/_SUCCESS
drwxr-xr-x - hadoop supergroup 0 2017-03-06 20:49 1988_mapfile/part-00000
[hadoop@master jar]$ hadoop fs -rm -r 1988_mapfile/_SUCCESS
[hadoop@master jar]$ hadoop fs -ls 1988_mapfile
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2017-03-06 20:49 1988_mapfile/part-00000
[hadoop@master jar]$ hadoop jar AirlinePerformancePartialSort.jar
AirlinePerformancePartialSort.SearchValueList 1988_mapfile 273 | more
[hadoop@master jar]$ hadoop jar AirlinePerformancePartialSort.jar
AirlinePerformancePartialSort.SearchValueList 1988_mapfile 20 | more
...
The requested key was not found
์ ์ฒด ์ ๋ ฌ(Total Sort)
๋ชจ๋ ๋งต๋ฆฌ๋์ค ์ก์ ์ ๋ ฅ๋ฐ์ดํฐ์ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์, ํ๋์ ํํฐ์ ์ผ๋ก ์์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ์ ์๋ค.
๊ทธ๋ฌ๋ ๋จ์ผ ํํฐ์ ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ํฌ๊ธฐ๊ฐ ํฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๊ฒ ๋๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ๋ฆฌ๋์ค ํ์คํฌ๋ฅผ ์คํํ์ง ์๋ ๋ฐ์ดํฐ๋ ธ๋๋ ๊ฐ๋๋์ง ์๊ณ , ๋ฆฌ๋์ค ํ์คํฌ๊ฐ ์คํ๋๋ ๋ฐ์ดํฐ๋ ธ๋๋ง ๋ถํ๊ฐ ์ง์ค ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ถ์ฐ ์ฒ๋ฆฌ์ ์ฅ์ ์ ์ด๋ฆฌ๋ฉด์ ์ ์ฒด ์ ๋ ฌ์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ ๋ ฌ์ ์งํ
1.์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ํ๋งํด์ ๋ฐ์ดํฐ์ ๋ถํฌ๋๋ฅผ ์กฐ์ฌํฉ๋๋ค.
- ์ ๋ ฅ ๋ฐ์ดํฐ์์ ํน์ ๊ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ ํค์ ๋ฐ์ดํฐ ๊ฑด์๋ฅผ ์ํ๋ง
2.๋ฐ์ดํฐ์ ๋ถํฌ๋์ ๋ง๊ฒ ํํฐ์ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํฉ๋๋ค.
- ์ํ๋ง ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์ค์ผ๋ก ํํฐ์ ์ ์์ฑ(์ํ๋ฌ๊ฐ ์ ๊ณตํ๋ ํค์ ์ ๋ณด๋ฅผ ์ค์ )
- ๊ฐ task๊ฐ ํํฐ์ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ๋ถ์ฐ ์บ์์ ํํฐ์ ์ ๋ณด๋ฅผ ๋ฑ๋ก
- TotalOrderPartitioner๋ก ํํฐ์ ๊ฐ์์ ํํฐ์ ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฒ์๋ฅผ ์ค์ ํ ์ ์๋ค
- ์ํ์ค ํ์ผ๋ก ์ถ๋ ฅ(TotalOderPartitioner๋ ์ํ์ค ํ์ผ์ ์ต์ ํ)
3.๋ฆฌ๋์ค ์ก์ TotalOderPartitioner๊ฐ ์์ฑํ ํํฐ์ ์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์์ฑํฉ๋๋ค.
4.๊ฐ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ณํฉ ํฉ๋๋ค.
โป InputSampler ์ข ๋ฅ
SplitSampler : ์ ๋ ฅ ์คํ๋ฆฟ์์ ์ฒซ ๋ฒ์งธ ๋ ์ฝ๋์ ํค๋ฅผ ์์ง
IntervalSampler : ์ ๋ ฅ ์คํ๋ฆฟ์์ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ํค๋ฅผ ์์ง
RandomSampler : ์ผ์ ์คํ๋ฆฟ ๊ฑด์์์ ์ผ์ ํ๋ฅ ๋ก ํค๋ฅผ ์์งํจ. ์ด๋ ์คํ๋ฆฟ ๊ฑด์์ ํ๋ฅ ์ ์ฌ์ฉ์๊ฐ ์ค์ ํ๋ฉฐ, ์ํ๋งํ ๋ฐ์ดํฐ ๊ฑด์๋ ์์๋ก ์ค์ ํ ์ ์๋ค.
๊ฐ ํํฐ์ ์ ํค ์์๋๋ก ์ ๋ ฌ๋ผ ์์ผ๋ฉฐ, ์ด ํ์ผ๋ค์ ํฉ์น๋ฉด ์ ์ฒด ์ ๋ ฌํ ํจ๊ณผ๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค.
์ด ์์ ์ ๋ถ๋ถ ์ ๋ ฌ์ ํ์ง ์๊ณ ์ ์ฒด ์ ๋ ฌ์ ํ๋๊ฒ ๋ ํธํ๋ค๊ณ ์๊ฐํ ์ ๋ ์์ต๋๋ค.
๋ฌผ๋ก ๋ ์ ๋ ฌ์ ๋ชจ๋ ๋ถ๋ถ ์ ๋ ฌ์ ํ์ง๋ง ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ๊ฒ์์ ๋๋ค.
์ ๋ ฌ๋ ๊ฒฐ๊ณผ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ํ์๊ฐ ์๋ค๋ฉด ๋ถ๋ถ ์ ๋ ฌ์, ๋จ์ํ ์ ๋ ฌ๋ ์ ์ฒด ๋ฐ์ดํฐ๋ง ํ์ํ๋ค๋ฉด ์ ์ฒด ์ ๋ ฌ์ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.