컨테이너 기반 하둡 설치 방식
- 독립 실행 모드 : 기본 실행모드, 로컬에서만 실행. 분산 환경은 불가능함.
- 가상 분산 모드 : 여러 노드를 사용. 한 장비에 모든 하둡 환경을 설정. 서버 환경이 불완전한 경우( 서버가 최소 3개는 있어야 가능) .HDFS, MapReduce와 관련된 데몬들을 하나의 장비에 가상환경 구성.
- 완전 분산 모드 : 여러 대의 자비에 하둡 설치. 라이브 서비스 제공
하둡 실행 환경 구성
-환경 설정 파일
- hadoop-env.sh : 하둡을 실행하는 쉘 스크립트 파일에서 필요한 환경변수 설정.(JDK경로, 클래스 패스, 데몬 실행 옵션 등)
- masters : 보조 네임노드를 실행할 서버를 설정.
- slaves: 데이터 노드를 실행할 서버 설정.
- core-site.xml : HDFS와 MapReduce 공통에서 사용할 환경 정보를 설정.
- hdfs-site.xml : HDFS에서 사용할 환경 정보 설정
- mapred-site.xml : MapReduce에서 사용할 환경 정보 설정.
- SSH서비스 시작
- 하둡 서비스를 위해 비밀번호 없는 SSH 로그인 필요.
- service ssh start
- 여러 터미널로 컨테이너에 접근하기.
- docker exec 명령 사용
하둡 실행하기
- NameNode 초기화( 하둡 설치 디렉토리에서 실행, ~/hadoop#) : ./bin/hadoop namenode -format. 초기화 결과는 core-site.xml에서 지정한 /root/data-hadoop/ 디렉토리에서 확인 가능.
- 하둡 데몬 실행 및 확인 :
- ./bin/start-all.sh : 모든 데몬 실행
- jps : 확인
- 컨테이너의 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
하둡 컨테이너 재시작
- 중지된 하둡 실습 컨테이너 재시작 : docker start hadoop-practice
- 재실행된 컨테이너 접근 : exec -i -t hadoop-practice /bin/bash
- 다시 ssh 실행 : service ssh start
- 하둡 서비스 사용 : start-all.sh
- 작업 수행
- 작업 종료 : stop-all.sh
- 컨테이너 종료 : 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 |