클라우드 컴퓨팅

하둡 실습

춤추는수달 2021. 10. 14. 23:27

컨테이너 기반 하둡 설치 방식

  • 독립 실행 모드 : 기본 실행모드, 로컬에서만 실행. 분산 환경은 불가능함.
  • 가상 분산 모드 : 여러 노드를 사용. 한 장비에 모든 하둡 환경을 설정. 서버 환경이 불완전한 경우( 서버가 최소 3개는 있어야 가능)   .HDFS, MapReduce와 관련된 데몬들을 하나의 장비에 가상환경 구성. 
  • 완전 분산 모드 : 여러 대의 자비에 하둡 설치. 라이브 서비스 제공

하둡 실행 환경 구성

 

-환경 설정 파일

  • hadoop-env.sh :  하둡을 실행하는 쉘 스크립트 파일에서 필요한 환경변수 설정.(JDK경로, 클래스 패스, 데몬 실행 옵션 등)
  • masters : 보조 네임노드를 실행할 서버를 설정.
  • slaves: 데이터 노드를 실행할 서버 설정.
  • core-site.xml : HDFS와 MapReduce 공통에서 사용할 환경 정보를 설정.
  • hdfs-site.xml : HDFS에서 사용할 환경 정보 설정
  • mapred-site.xml : MapReduce에서 사용할 환경 정보 설정.

- SSH서비스 시작 

  1. 하둡 서비스를 위해 비밀번호 없는 SSH 로그인 필요.
    1. service ssh start
  2. 여러 터미널로 컨테이너에 접근하기.
    1. docker exec 명령 사용

 

하둡 실행하기

  1. NameNode 초기화( 하둡 설치 디렉토리에서 실행, ~/hadoop#) : ./bin/hadoop namenode -format. 초기화 결과는 core-site.xml에서 지정한 /root/data-hadoop/ 디렉토리에서 확인 가능.
  2. 하둡 데몬 실행 및 확인 :
    1. ./bin/start-all.sh : 모든 데몬 실행
    2. jps : 확인
  3. 컨테이너의 IP주소 확인하기 : ifconfig -> 나온 주소에서 :50030 포트 -> MapReduce 확인, :50070 포트 -> HDFS 설정 확인

 

하둡 예제 실행

  • WordCount
    • 데이터 업로드 및 확인 : ./bin/hadoop fs -put conf/hadoop-env.sh input
    • 예제 실행 : ./bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input output
    • 결과 확인 :  ./bin/hadoop fs -cat output/part-r-00000 | head
  • pi
    • 예제 실행 : ./bin/hadoop jar hadoop-examples-1.2.1.jar pi 4 5000
  • ./bin/hadoop jar hadoop-examples-1.2.1.jar : jar 가이드 출력. 포함된 프로그램들 보여줌.

하둡 컨테이너 종료

  • 하둡 종료하기 : ./bin/stop-all.sh
  • 하둡 컨테이너 종료하기 : exit

 하둡 컨테이너 재시작

  1. 중지된 하둡 실습 컨테이너 재시작 : docker start hadoop-practice
  2. 재실행된 컨테이너 접근 : exec -i -t hadoop-practice /bin/bash
  3. 다시 ssh 실행 : service ssh start
  4. 하둡 서비스 사용 : start-all.sh
  5. 작업 수행
  6. 작업 종료 : stop-all.sh
  7. 컨테이너 종료 : dock

 

HDFS 명령어

  • 형식 : ./bin/hadoop fs -cmd [args]
  • 도움말 : ./bin/hadoop fs -help
  • ls : 디렉토리의 파일들 정보 출력. 혹은 특정 파일 지정해 정보 출력
  • lsr : 하위 디렉토리까지 정보 출력.
  • du : 디렉토리나 파일의 사용량(바이트단위)
  • dus :  전체 합계 용량 출력
  • cat : 지장한 파일(텍스트 파일만)의 내용을 화면에 출력.
  • text : 압축된 파일도 텍스트 화면으로 출력.
  • mkdir : 지정 경로에 새 디렉토리 생성. 이미 존재하는 디렉토리를 생성하면 에러.
  • put : 로컬 파일시스템의 데이터를 HDFS로 복사.
  • copyFromLocal : put과 똑같음. 
  • get : HDFS의 저장된 데이터를 로컬 파일시스템으로 복사. checksum으로 무결성 검사도 뒤에서 실행됨.
  • getmerge : 지정 경로의 모든 파일 내용을 합치고 로컬 파일시스템에 하나의 파일로 복사.
  • cp : 지정 디렉토리 및 파일을 목적 경로로 복사. 
  • copyToLocal : get명령어랑 똑같음.
  • mv : 디렉토리 및 파일을 목적 경로로 이동.
  • moveFromLocal : put 명령어와 동일하게 작동하지만, 로컬 파일시스템에서 HDFS 로 복사된 후 로컬의 파일은 삭제.
  • rm : 지정 디렉토리, 파일 삭제(빈 디렉토리만 삭제 가능)
  • rmr : 비어있는 디렉토리도 삭제 가능.
  • tail : 파일의 마지막 1KB에 해당하는 내용을 출력.
  • chmod : 지정 경로에 대한 권한 변경. -R옵션으로 재귀적 실행.
  • chown : 지정 파일과 디렉토리에 대한 소유권 변경. -R옵션으로 재귀적 실행.
  • chgrp : 지정 파일과 디렉토리에 대한 소유권 그룹만 변경. -R로 재귀적 실행.

HDFS File and Directory Permissions

- 리눅스에서, OS 유저를 만들고 존재하는 운영체제 그룹의 멤버로 만든다.

- 그런데 Hadoop에서는 존재하지 않는 사용자와 그룹을 연관시킬 수 있다.

- 유저와 그룹이라는 컨셉만 존재. 실제로 매핑되지는 않음.

- 파일에 대한 실행권한(x) 는 무시된다. 디렉토리는 보인다. 

 

HDFS 운영 실습

admin 입장

  • fsck : HDFS에 저장된 파일의 문제 확인. fsck /. 그냥 치면  help 메세지.
  • Balancer : 블록들의 복제본이 부족하거나 과도한 경우 정리. ./bin/hadoop balancer - threshold [threshold] . 여기서 threshold는 정상 데이터 노드와 블록이 과도한 데이터 노드의 비율. 상용 클러스터에서는 데이터 노드 한 대에서 주기적으로 백그라운드로 실행해주는것이 좋다.
  • dfsadmin :  HDFS 관리자 기능을 지원하기 위해 제공.
    • -report : HDFS의 기본적인 정보와 상태 출력
    • -safemode enter, leave: 수동으로 안전모드로 진입, 탈출함. 네임노드와 데이터 노드들 간에 블록 리포팅이 완료되기 전 까지의 상태를 안전모드 라고 함. 즉 쓰고 내용들이 다 정리 될 때까지. 안전모드에서는 쓰기가 금지.
    • -saveNamespace : 로컬 파일시스템에 저장된 파일 시스템 이미지 파일과 에티드 로그를 현재 버전으로 갱신.
    • -setQuota 2 [dirname] : 파일 저장 개수 설정 .  HDFS 디렉토리에 파일이 과도하게 생성되는 것을 제한할 수 있는 명령어 제공. 쿼터 수 라고 함. 예를 들어 쿼터 수를 2로 설정하면 디렉토리 포함 파일을 두 개 생성할 수 있으므로 실질적으로 파일은 한 개만 생성할 수 있음
    • -clrQuota : 쿼터 적용 해제.
    • -setSpaceQuota : 디렉토리에 저장할 파일 크기 설정. 만약 용량 초과하면 파일 이름은 생기지만 0byte 파일이 됨. 
    • -clrSpaceQuota : 용량 쿼터 해제.

 

'클라우드 컴퓨팅' 카테고리의 다른 글

4-2 MapReduce Algorithm Design part3  (0) 2021.11.18
MapReduce Alorithm Design part2  (0) 2021.11.11
Mapreduce Algorithm Design  (0) 2021.11.05
MapReduce소개  (0) 2021.10.21
Hadoop HDFS  (1) 2021.10.08