카테고리 없음
[ SSAFY ] 하둡 세팅
황성안
2021. 8. 27. 16:10
728x90
반응형
(환경 세팅) 하둡
vmware 설치
https://www.vmware.com/products/workstation-player.html
에서 무료 버전을 다운로드받아주고 설치합니다.
ubuntu 설치
https://ubuntu.com/download/desktop
에서 ios 를 받아 줍니다.
VMware에 ubuntu 운영체제 올리기
VMware 처음 시작시 create 를 눌러 iso를 인스톨 해줍니다.
저는 여기서 아래와 같은 에러가 발생하였습니다.
해결 방법은 cmd를 관리자 권한으로 실행시켜준뒤 아래 명령어를 입력하고 재부팅해줍니다.
bcdedit /set hypervisorlaunchtype off
이후 정상적인 ubuntu os가 인스톨 됐습니다.
우분투 운영체제를 시작해보면 업데이트를 하시겠냐고 영어로 물어봅니다.
저는 업데이트를 실행하였습니다.
Hadoop 설치하기
- 콘솔 터미널을 실행해줍니다.
- Applications > Accessories > Terminal ( 단축키 : 컨트롤 알트 T )
- 패키징 된 파일 바로 다운로드하기
$ wget http://kdd.snu.ac.kr/~kddlab/Project.tar.gz
- 위 명령어를 실행한 뒤 아래 명령어를 차례대로 입력해줍니다.
- tar zxf Project.tar.gz
- sudo chown -R hadoop:hadoop Project
- cd Project
- sudo mv hadoop-3.2.2 /usr/local/hadoop
- sudo apt update
- sudo apt install ssh openjdk-8-jdk ant -y
- ./set_hadoop_env.sh
- source ~/.bashrc
- Hadoop 계정으로 실행
- Root 계정에 있다면 컨트롤 + D
- Empty 'ssh key' generation
ssh-keygen -t rsa -P ""
- 저장할 파일을 물어보면 default로 enter 만 친다.
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
- 제대로 생성되었는지 확인
- ssh localhost
- 질문이 뜨면 yes를 입력하고
- 그 다음 비밀번호를 물어보지 않고 prompt가 뜨면 성공
- 나는 여기서 또 에러
- port 22 머시기 거절했다고뜹니다..
ssh: connect to host localhost port 22: Connection refused
- 먼저
sudo apt-get install openssh-server
입력해주고 설치를 해줍니다. - 이후
systemctl status sshd
를 사용하여 서버가 activate 돼있는지 확인합니다. - 정상적으로 activate 됐다면 다시
ssh localhost
를 적어주고 yes 를 입력하면 끝! - 저는 안되서 한번 포맷하고 다시 해주니까 잘되네요!
Hadoop 실행을 위한 준비
- 모든 명령은 hadoop 계정에서 실시합니다.
- 경로 지정을위해서 /home/hadoop 에서 source .bashrc 를 실행
- 포맷 해버리기
hadoop namenode -format
- Dfs daemon start
start-dfs.sh
- 맵 리듀스를 돌릴러면 맵 리듀스를 실행시키는 daemon을 돌려야합니다.( standalone 모드에서는 안해도됨!)
start-mapred.sh
- 확인 하는 방법
- 수행중인 java 프로세스 리스트를 확인하다.
jps
- 스탠드 얼론모드에서는 상위 3개만 뜹니다. ( 여러대이면 5개 다뜸)
- SecNameNode
- ondaryNameNode
- DateNode
- TaskTracker ( 여러대 )
- JobTracker ( 여러대 )
- 맵리듀스 알고리즘 돌릴려면 이제 User 에디렉토리를 만들어야합니다.
- hdfs dfs -ls/ (목록 확인)
- hdfs dfs -mkdir /user ( user 디렉토리 만들기)
- hdfs dfs -mkdir /user/hadoop (user안에 hadoop 디렉토리 만들기)
리눅스와 HDFS
- 데이터 생성이나 코딩은 리눅스에서 하고 맵리듀스 코드와 입력데이터는 HDFS에 옮겨서 맵리듀스 알고리즘을 수행한다
- 리눅스 디렉토리
- src/ ( 맵리듀스 코드)
- 진짜 우리가 코딩 한 것들을 넣는 곳
- Driver.java
- wordcount.java
- 진짜 우리가 코딩 한 것들을 넣는 곳
- template
- 과제할떄 템플릿을 넣어달랗면 넣는 곳(ㅋㅋㅋㅋ)
- datagen
- 과제할떄 데이터를 제네레이트 시켜줄떄 ( 데이터 생성 할떄)
- data
- 데이터가 들어가있음
- build.xml
- 맵리듀스 코드 컴파일을 위한 것 안건드려도됩니다.
- src/ ( 맵리듀스 코드)
- Haddop
- wordcount_test (입력 파일을 테스트에 넣고)
- wordcount_test_out ( 결과가 나오는 곳)
예제 코드를 실행시켜 보자
우리는 src 안에 Driver.java 와 Wordcount.java 가 있다.
이를 실행하여 편집해보자.
cd /Project/src
로 들어가주자pgd.addClass("wordcount",Wordcount.class, "A map/reduce program that perform word counting.");
이 명령어를 추가시켜준다- ant 를 실행하기위해서는 Project 로 나가서
ant
를 실행해준다. - Driver.java 를 ant 해준다
hadoop jar ssafy.jar wordcount wordcount_test wordcount_test_out
과제
hdfs dfs -ls 하둡 리스트 보기
hdfs dfs -mkdir wordcount_test
hdfs dfs -put data/wordcount-data.txt wordcount_test
cp Wordcount.java Wordcount1char.java 복사하는것
728x90
반응형