사양이 괜찮던 데스크탑에서 우분투 가상환경로 하둡 공부를 했었는데,
수료 후에 집에 있는건 맥북 뿐인지라... 맥북에서라도 하둡을 공부하고자하여 설치할려고 했었으나
brew로 인스톨 시 알수없는 에러 때문에 무한히 삽질하다가,,, 다른 방법을 찾아 블로그에 기록으로 남겨
나와 같은 고통받는 사람이 그나마 좀 적었으면 하는 바람이다.
필자는 하둡1을 다운받을 예정이다.
(필자는 이미 설치를 완료하였기 때문에 이점을 유의하고 진행하길 바란다.)
(하둡 환경변수 또한 이미 설정되어있다.)
http://apache.tt.co.kr/hadoop/common/stable1/
위 주소에서 하둡을 다운받을 수 있다.
hadoop-1.2.1.tar.gz 링크의 주소를 복사해서 터미널에서 진행한다.
터미널에서 wget 명령어를 통해 해당 링크의 아이템을 다운받는데 물론 마우스클릭으로 받아도 상관은 없다.
쭈루루룩... 다운이 받아지는 중이고
결과품은 홈 디렉토리에 위치하고있을것이다.
이제 압축을 풀어보자
tar xzvf hadoop-1.2.1.tar.gz
압축을 풀면
hadoop-1.2.1이라는 폴더가 생기고
이 폴더에 심볼로 hadoop을 생성해주자
ln -s hadoop-1.2.1 hadoop
(이유는 나중에 환경변수 등등 일일이 -1.2.1을 타이핑해주기 귀찮기 때문에...)
자 이제 하둡설치가 끝났다.!
그럼 이제 환경설정을 담당해야한다.
하둡에는 3가지 모드가 있다.
●독립모드(Standalone mode)
데몬 프로세스가 동작하지 않고, 모든것이 단독 JVM 내에서 동작. 개발하는 동안 맵리듀스 프로그램을 동작시키기에 적합한데, 테스트 및 디버깅이 용이.
●가상분산모드(Pseudo-distributed mode)
하둡 데몬 프로세스가 로컬컴퓨터에서 동작하므로 작은 규모의 클러스터를 시뮬레이트 할 수 있다.
●완전분산모드(Fully distributed mode)
하둡 데몬프로세스는 다수 컴퓨터로 구성된 그룹에서 동작한다.
독립모드에서는 hdfs가 필요없고 로컬에서 바로 진행된다.
우리는 몇대의 컴퓨터가 집에 있는 것도아니고 하둡에 대해 잘알아서 테스트 디버깅용으로 필요한것이 아니기 때문에
가상분산모드로 진행한다.
(따로 모드를 선택하는 장치나 옵션은 없다.
환경설정 내용에 따라 모드가 갈린다.)
내용으로 돌아와서 conf안에는 환결설정 파일들로 가득하다.
이중에서 우리가 만져야될 파일은
hadoop-env.sh
mapped-site.xml
slaves
masters
core-site.xml
hdfs-site.xml
총 6개이다.
차근차근히 따라오길 바라며, 처음 접한다면 수기로 직접 작성해보길 바란다.
=============================================
hadoop-env.sh에서 할일은 자바 경로를 잡아주는것과 실행시 일어날 워닝을 잡아주는 구문이나
라인11은 선택사항이다.
(자바설치 경로가 기억나지않는다면
위 명령어로 조회할 수 있다)
==================================================
core-site.xml
=========================================
hdfs-site.xml
8번은 복제옵션을 지칭하며 9번은 복사갯수를 정한다.
================================================
mapped-site.xml
잡트래커 옵션을 준다
==============================================
마지막으로 slaves와 masters에는 localhost라고 막 적는다.
================================================
실행전
hadoop namenode -format 명령어로 네임노드를 포맷시켜주고 실행하여야한다.
모든 설정이 정상적으로 이루어졌다면 start-all.sh을 실행시켜보라
로그를 보았을때 어디서 무엇이 실행되는지 보이지 않는가?
모든 노드들과 트래커들이 실행된 모습.
이제 예제를 실행시켜보고 문제가 없으면 사용에 준비는 끝났다.
hdfs에 hadoop-evn.sh을 넣어놓고 wordcount 예제를 돌려보자.
LoganLeeui-MacBook-Pro:hadoop Logan$ hadoop jar hadoop-examples-1.2.1.jar wordcount conf/hadoop-env.sh output
18/02/10 03:25:11 INFO input.FileInputFormat: Total input paths to process : 1
18/02/10 03:25:11 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/02/10 03:25:11 WARN snappy.LoadSnappy: Snappy native library not loaded
18/02/10 03:25:11 INFO mapred.JobClient: Running job: job_201802100324_0001
18/02/10 03:25:12 INFO mapred.JobClient: map 0% reduce 0%
18/02/10 03:25:15 INFO mapred.JobClient: map 100% reduce 0%
18/02/10 03:32:44 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_0, Status : FAILED
Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
18/02/10 03:32:44 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)
18/02/10 03:32:44 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)
18/02/10 03:40:14 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_1, Status : FAILED
Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
18/02/10 03:40:14 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)
18/02/10 03:40:14 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)
18/02/10 03:47:45 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_2, Status : FAILED
Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
18/02/10 03:47:45 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)
18/02/10 03:47:45 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)
18/02/10 03:55:18 INFO mapred.JobClient: Job complete: job_201802100324_0001
18/02/10 03:55:18 INFO mapred.JobClient: Counters: 20
18/02/10 03:55:18 INFO mapred.JobClient: Map-Reduce Framework
18/02/10 03:55:18 INFO mapred.JobClient: Combine output records=178
18/02/10 03:55:18 INFO mapred.JobClient: Spilled Records=178
18/02/10 03:55:18 INFO mapred.JobClient: Map output materialized bytes=3151
18/02/10 03:55:18 INFO mapred.JobClient: Map input records=62
18/02/10 03:55:18 INFO mapred.JobClient: SPLIT_RAW_BYTES=116
18/02/10 03:55:18 INFO mapred.JobClient: Map output records=306
18/02/10 03:55:18 INFO mapred.JobClient: Map output bytes=3856
18/02/10 03:55:18 INFO mapred.JobClient: Combine input records=306
18/02/10 03:55:18 INFO mapred.JobClient: Total committed heap usage (bytes)=179306496
18/02/10 03:55:18 INFO mapred.JobClient: File Input Format Counters
18/02/10 03:55:18 INFO mapred.JobClient: Bytes Read=2676
18/02/10 03:55:18 INFO mapred.JobClient: FileSystemCounters
18/02/10 03:55:18 INFO mapred.JobClient: HDFS_BYTES_READ=2792
18/02/10 03:55:18 INFO mapred.JobClient: FILE_BYTES_WRITTEN=60256
18/02/10 03:55:18 INFO mapred.JobClient: Job Counters
18/02/10 03:55:18 INFO mapred.JobClient: Launched map tasks=1
18/02/10 03:55:18 INFO mapred.JobClient: Launched reduce tasks=4
18/02/10 03:55:18 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=7072
18/02/10 03:55:18 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
18/02/10 03:55:18 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=3591
18/02/10 03:55:18 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
18/02/10 03:55:18 INFO mapred.JobClient: Failed reduce tasks=1
18/02/10 03:55:18 INFO mapred.JobClient: Data-local map tasks=1
mapper가 일을 끝내고 reducer한테 전해줄 때 통신에러가 있는 듯 하다...
(원래 안그랬는데 글 쓰다가 다시 생겼다...)
해결편 보러가기
RECENT COMMENT