해당 포스팅에서는 맵리듀스 프로그램으로 단어수를 세는 방법을 설명합니다
WordCount 맵리듀스 프로그램 실행
1. 하둡 디렉토리로 이동한다.
cd hadoop-3.3.4/sbin/
2. input이 되는 디렉토리를 HDFS상에 만든다.
bin/hdfs dfs -mkdir input
- bin/hdfs : hdfs와 관련된 기능을 제공해주는 권한 조정하는 곳
CF) 위 코드를 실행했을 때 아래와 같이 디렉토리가 없다고 나온다면 Hdfs 쪽에 User폴더와 내 sub폴더를 만들어 줍니다.
bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/hdoop
CF) 아래와 같이 Connection Error가 발생한다면 아래 코드를 실행하여 hdfs와 yarn을 실행시켜줍니다.
./start-all.sh
2-1) 폴더가 제대로 만들어졌는지 확인합니다.
bin/hdfs dfs -ls
3. Wordcount의 입력이 되는 파일을 만들고 문장을 하나 저장합니다..
vi words.txt
A lioness was shot dead an hour after escaping from a farm in Goryeong County, North Gyeongsang, the county said.
It said an emergency call placed at 7:24 a.m. on Monday reported a lioness had escaped from a tourist farm in Deokgok-myeon, Goreyeong County.
The county alerted its residents of the escape and began a search mission.
4. Local에 생성한 words.txt 파일을 hdfs의 input 폴더로 이동한다.
bin/hdfs dfs -put words.txt input
4-1) 파일이 제대로 이동했는지 확인합니다.
bin/hdfs dfs -ls input
- jar 파일의 경로와 프로그램이름(wordcount), 예상되는 파라미터(input(데이터 경로), output(결과를 저장하는 경로)를 입력한다.
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar
5. Output 폴더가 제대로 생성되었는지 확인합니다.
- _Success는 에러없이 잘 실행되었다를 보여주는 플레그임.
bin/hdfs dfs -ls output
6. Output의 내용을 체크한다.
bin/hdfs dfs -cat output/part-r-00000
- Key (단어), Value(개수) 를 체크할 수 있다.
7. Yarn Web UI에서 결과 보기
http://localhost:8088/cluster
MapReduce 프로그래밍 문제점
1. 생산성이 떨어짐.
- 데이터 모델과 오퍼레이션에 제약이 많음
2. 모든 입출력이 디스크를 통해 이뤄짐
- 큰 데이터 배치 프로세싱에 적합
- 어느정도 규모가 작은 데이터를 빠르게 처리하는 것에는 문제가 있음
3. Shuffling 이후에 Data Skew가 발생하기 쉬움
- Reduce 태스크 수를 개발자가 지정해주어야함
- Spark에서도 나타나는 문제임
위 포스팅은 [파이썬으로 해보는 Spark 프로그래밍 with 프로그래머스] 강의를 듣고 정리한 내용입니다
728x90
반응형
'Spark & Hadoop > Hadoop' 카테고리의 다른 글
[Hadoop/Spark] YARN의 구성요소와 작동방식 (0) | 2024.05.05 |
---|---|
[Hadoop] 하둡(Hadoop) 설치 (on Ubuntu) (0) | 2023.08.14 |
[Hadoop] Windows에서 우분투 설치 (Ubuntu on WSL2) (Ubuntu 설치시 Error 해결) (0) | 2023.08.10 |
[Hadoop] 맵리듀스(MapReduce) Programming (0) | 2023.08.09 |
[Hadoop] 대용량 분산시스템 Hadoop과 MapReduce (Hadoop 1.0, Hadoop 2.0, Hadoop 3.0) (0) | 2023.08.09 |