카테고리 없음

[ 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를 인스톨 해줍니다.

저는 여기서 아래와 같은 에러가 발생하였습니다.

img

해결 방법은 cmd를 관리자 권한으로 실행시켜준뒤 아래 명령어를 입력하고 재부팅해줍니다.

bcdedit /set hypervisorlaunchtype off

이후 정상적인 ubuntu os가 인스톨 됐습니다.

우분투 운영체제를 시작해보면 업데이트를 하시겠냐고 영어로 물어봅니다.

저는 업데이트를 실행하였습니다.

image-20210826230303678

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
      • 맵리듀스 코드 컴파일을 위한 것 안건드려도됩니다.
  • 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
반응형