Skip to content

Instantly share code, notes, and snippets.

@Curookie
Last active December 5, 2017 03:04
Show Gist options
  • Save Curookie/21fa4c6282d22db8dede0315798045c4 to your computer and use it in GitHub Desktop.
Save Curookie/21fa4c6282d22db8dede0315798045c4 to your computer and use it in GitHub Desktop.
클라우드 컴퓨팅
클러스터 분석(Cluster analysis)이란 주어진 데이터들의 특성을 고려해 데이터 집단(클러스터)을 정의하고
데이터 집단의 대표할 수 있는 대표점을 찾는 것으로 데이터 마이닝의 한 방법이다.
가상화기술
????? (클러스터링과 비교되는 기술)
클라우드란 = IT 자원의 렌탈샵
대표적인 클라우드 서비스 AWS 아마존
프로비저닝(provisioning)은 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다.
수평확장
수직확장
마이그레이션 이란 한 운영환경으로부터, 대개의 경우 좀더 낫다고 여겨지는 다른 운영환경으로 옮겨가는 과정을 말한다.
이동성 증가, 가용성 및 신뢰성 증가
프라이빗 클라우드
퍼블릭 클라우드
데이터 마이닝
빅데이터의 정의들
3V Volume, Velocity, Variety 대용량 데이터, 데이터가 빠르게 생성됨, 데이터의 다양성
웹 검색엔진 데이터
분산파일시스템과 분산처리시스템 없이 구현 불가
디바이스에서 생성되는 데이터
통신사, 방송국, 광고주, 개발자의 마케팅에 사용
소셜미디어의 데이터
제품이나 등등..
빅데이터 처리 시스템의 구성
데이터 수집 -> HDFS, MapReduce -> RDBMS, NoSQL, 검색엔진 -> 사용자
MapReduce
Input data -> Map() Map() Map() -> Reduce() Reduce() -> Output data
cloudera HUE
폴더 만들기 hdfs dfs -mkdir /user/cloudera/폴더명
파일목록 보기 hdfs dfs -ls /user/cloudera/폴더명
파일 복사 hdfs dfs -put 파일 폴더명
/usr/lib/hadoop-mapreduce/안에 hadoop-mapreduce-examples.jar 파일 압축풀고 wordcount를 hadoop이라는 명령어로 인풋폴더에서 아웃풋폴더로
넣는다.
HDFS 설계
특징
매우 큰 파일
스트리밍 방식의 데이터 접근
범용 하드웨어(파일시스템이 커버)
NFS -> HDFS
적합하지 않는 분야
1. 빠른 데이터 응답시간이 필요
2. 수 많은 작은 파일
3. 다중 라이터와 파일의 임의적 수정 빈번한 경우
블록
한번에 읽고 쓸 수 있는 데이터의 최대량
파일 시스템에서 관리
일반적으로 물리적 디스크의 블록 512Byte
HDFS블록
기본적으로 128MB
HDFS의 파일은 특정 블록 크기의 청크로 쪼개어 저장
블록크기보다 작은 데이터일 경우 그 크기만큼만 공간 사용
ex) 1MB 데이터 일경우 1MB만 사용
HDFS블록이 큰 이유
- 탐색 비용을 최소화 하기 위함
- 맵리듀스의 맵 테스크는 한번에 하나의 블록을 처리
- 탐색 시간을 줄여 데이터 전송에 집중
- 블록이 매우 크면 블록의 시작점을 탐색하는데 걸리는 시간 감소 가능
블록개념을 도입해서 얻는 이득
- 장애에 대처하기 위한 물리적인 복제할 때 유리하다.
HDFS 개념
마스터 - 워커 패턴으로 동작하는 두종류의 노드로 구성
네임노드 & 데이터 노드
데이터 노드
- 파일 시스템의 주요 워커
- 블록의 집합인 파일이다.
- 클라이언트나 네임노드의 요청을 받아 클라이언트에 블록을 송신
- 네임 노드에게 블록리포트를 송신
- 복제한다.
네임 노드
- 파일 시스템의 네임스페이스를 관리
- 파일 시스템 트리와 그 트리에 포함된 모든 파일과 디렉토리에 대한 메타데이터를 유지
- 파일에 속한 모든 블록이 어디에 있는지
ex) 메타데이터의 모음 = 네임스페이스 이미지(NSI) 512MB
-> 수정한 new NSI 매번 생성하면 너무 비효율적인데,
Edit Log 어느정도 쌓아놓고 쌓이면 그 때 NSI를 생성한다.
보조 네임 노드
-에디트 로그가 너무 커지지 않도록 주기적으로 네임스페이스 이미지를 체크포인팅하여 네임노드로 보내준다.
-네임노드 머신이 손상될 경우를 대비해 네임스페이스 복사본을 보관한다.
-네임스페이스 이미지는 시간차를 두고 주 네임 노드에 동기화
블록 캐싱
-빈번하게 접근되는 블록은 메모리에 할당해 두고 사용
HDFS 페더레이션 (HDFS federation)
-네임노드의 확장성 문제
-각각의 네임노드가 파일시스템의 네임스페이스 일부를 나누어 관리하는 방식으로 새로운 네임노드를 추가
-네임스페이스 볼륨(네임스페이스의 메타데이터를 구성), 블록풀(네임스페이스에 포함된 전체 블록을 보관)
HDFS 읽기/쓰기
읽기 작업
클라이언트는 요청한 각 블록의 데이터 노드 리스트를 받음.
클라이언트는 요청한 각 블록의 데이터 노드를 선택
클라이언트는 블록을 연속적으로 읽음
쓰기 작업
클라이언트는 네임노드에 작업 의뢰
클라이언트는 특정 노드에 파일을 기록
데이터 노드는 블록을 복제
HDFS의 복제 정책
복사본을 128MB 단위로 분할(Block), Rack에 분산 저장
복사본 요청 시 네트워크 대역폭을 추정하여 가까운 복사본 선택
일반적으로 3개 복사본 유지(같은 랙 2개, 다른 랙 1개)
서버, 네트워크 장비의 고장 대응
접근속도 향상
트래픽 분산
HDFS의 복제 정책(계속)
데이터 블록 분산 저장
부하 분산, 복구 용이
MapReduce
분산 병렬 처리를 위한 프레임워크, 프로그래밍 모델
범용 컴퓨터 클러스터(클라우드)에서 수행되는 분산 데이터 처리 모델과 실행 환경을 제공
MapReduce 프레임워크에 맞춰 프로그래밍하고 하둡에서 실행하면 하둡이 자동으로 분산 처리를 수행
Map
데이터를 담아두는 자료구조
입력데이터를 받아 key, value 형태로 분류
Map(k1,v1)->list(k2, v2)
Reduce
Map을 정리해 나가는(줄여 나가는) 과정
Ex> 키를 기준으로 (같은 키 값을 가진 맵들의) 개수를 세거나, 벨류를 모두 더하거나, 평균을 내거나 등
Reduce(k2, list(v2)->list(v3)
Job Tracker
마스터 노드에서 Task Tracker에 작업 할당하고 관리
전체 작업을 관리하는 마스터 역할을 수행
Job는 분산처리를 하는 전체 작업을 의미
Task Tracker
Worker Node이며 할당 받은 작업을 데이터 노드가 실행
Task는 mapper 또는 reducer 1개를 수행하는 작업
Shuffing
하둡 VM끼리 네트워크 연결하기
ssh로 연결
VM Oracle
일반 > 고급 > 양방향
네트워크> Nat 1, 호스트 전용 어댑터 VirtualBox Host-Only Ethernet Adapter 2
공유폴더>shard폴더>자동마운트
저장소>컨트롤러>IDE비어있음>광학디스크>CentOS.iso클릭
중간고사
hdfs, mapreduce 서술형
pptx 위주로
네트워크 > 호스트 전용 네트워크 정보 >
Visual SVN Server 컴퓨터를 서버로 만드는 서비스
어댑터
IPv4 주소 : 192.168.56.1
IPv4 서브넷 마스크 255.255.255.0
하둡서비스 실행/취소 start-all.sh, stop-all.sh
jps 명령어로 서비스 실행 확인
datanode 나오면 성공
http://big01:50070/dfshealth.html#tab-datanode 에서 확인
hadoop input 폴더 생성 후
관리자권한 획득 후
mount -t vboxsf mnt /mnt/shared 로 마운트 시켜 txt파일 복제
http://big01:50070/dfshealth.html#tab-datanode에서
utilities > Browse the file system 누르면 하둡 폴더 확인 가능
hadoop com.sun.tools.javac.Main /mnt/shared/WordCount.java 컴파일
jar cf wc01.jar WordCount*.class jar 파일 생성
hadoop jar wc01.jar WordCount /wordcount/input /wordcount/output 맵리듀스 실행
hadoop fs -rm -r /wordcount/output 재 실행시 output 폴더 꼭 삭제
java파일 복사해서 새로만든 다음 실행해야하며 output 폴더가 이미존재하면 익셉션 에러뜸
hadoop fs -cat /wordcount/output/part-r-00000 | more
확인하기
구조화된 데이터와 구조화 되지 않은 데이터를 처리하는 것은 다르다.
필요한 데이터를 가져와 맵퍼로 구조화
http://stat-computing.org/dataexpo/2009/
2008년, 2009년 데이터만 다운로드
압축 해제
2007.csv, 2008.csv 확인
HDFS에 업로드 (csv 파일이 있는 경로에서 실행)
hadoop fs -mkdir /airlineDelay
hadoop fs -mkdir /airlineDelay/input
hadoop fs -put 2007.csv /airlineDelay/input
hadoop fs -put 2008.csv /airlineDelay/input
hadoop fs -ls /airlineDelay/input
hadoop jar hadoop-beginner-examples-1.0.jar wikibooks.hadoop.chapter05.DepartureDelayCount /airlineDelay/input /airlineDelay/output
이런식으로 실행
tar -zxvf 파일경로
하둡이 세이프 모드로 들어가 있는 경우
hadoop dfsadmin -safemode leave
이클립스가 죽는 경우
yum update ilbsoup
share/hadoop/common,hdfs,mapreduce,tools/lib jar 라이브러리 모두 추가
hadoop fs –put 2M.ID.CONTENTS /wordcount2/input
저장공간 및 메모리 이슈가 있을 경우 아래 명령으로 대체 입력
hadoop fs –put 10K.ID.CONTENTS /wordcount2/input
위의 명령이 성공했을 경우 입력 필요 없음
build.xml 파일 생성 후
WordCount2 작성
강의 정보시스템 업로드 파일 입력
컴파일 및 Jar 파일 생성 xml-> build 해서
다음 페이지 그림 참조
실행 (jar 파일이 있는 곳에서)
hadoop jar hadoop.jar word.WordCount2 /wordcount2/input /wordcount2/output
재실행 시 output 디렉토리 삭제 필수!
Hadoop fs –rm –r /wordcount2/output
컴바이너
맵 테스크의 출력에 리듀스 코드를 먼저 적용
리듀스로 넘어가는 데이터의 크기를 줄이는 역할
맵 테스크와 리듀스 테스크 간 네트워크 통신량 최소화
로컬리듀서가 적용된 wordcount2
기본적으로 30개의 카운터가 지원된다.
드라이브 클래스
setInputFomatClass()에서
KeyValueTextInputFormat.class 반구조화된 케이스이기때문에 TextInputFormat이 아니라 저거다.
그 외에도 SequenceTextInputFormat도 있다. 재처리할 때 사용하는데 압축까지 지원한다.
상위 10개만 출력시킬수도 있다.
우선순위 큐 소팅으로 정렬 Key Value
리듀스에서 너무큰경우 나눠서 처리하고 결합하면 된다.
ex)
17/11/21 11:27:15 INFO mapreduce.Job: map 0% reduce 0%
17/11/21 11:27:28 INFO mapreduce.Job: map 100% reduce 0%
17/11/21 11:27:37 INFO mapreduce.Job: map 100% reduce 100%
17/11/21 11:27:37 INFO mapreduce.Job: Job job_1510626339273_0003 completed successfully
17/11/21 11:27:37 INFO mapreduce.Job: Counters: 49
File System Counters
FILE: Number of bytes read=139
FILE: Number of bytes written=215285
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=1202861
HDFS: Number of bytes written=94
HDFS: Number of read operations=6
HDFS: Number of large read operations=0
HDFS: Number of write operations=2
Job Counters
Launched map tasks=1
Launched reduce tasks=1
Data-local map tasks=1
Total time spent by all maps in occupied slots (ms)=10559
Total time spent by all reduces in occupied slots (ms)=5343
Total time spent by all map tasks (ms)=10559
Total time spent by all reduce tasks (ms)=5343
Total vcore-milliseconds taken by all map tasks=10559
Total vcore-milliseconds taken by all reduce tasks=5343
Total megabyte-milliseconds taken by all map tasks=10812416
Total megabyte-milliseconds taken by all reduce tasks=5471232
Map-Reduce Framework
Map input records=107480
Map output records=10
Map output bytes=113
Map output materialized bytes=139
Input split bytes=113
Combine input records=0
Combine output records=0
Reduce input groups=10
Reduce shuffle bytes=139
Reduce input records=10
Reduce output records=10
Spilled Records=20
Shuffled Maps =1
Failed Shuffles=0
Merged Map outputs=1
GC time elapsed (ms)=220
CPU time spent (ms)=1900
Physical memory (bytes) snapshot=283619328
Virtual memory (bytes) snapshot=4118052864
Total committed heap usage (bytes)=135503872
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=1202748
File Output Format Counters
Bytes Written=94
전제민 이사 / 클라우드 컴퓨팅
비유
전기와 가정 집의 비유
클라우드 컴퓨팅 기업에서의 전기
초기 선투자 비용 없음
운영 비용 절감.
속도 및 민첩성
비즈니스에만 집중가능
탄력적인 운영 및 확장
글로벌 확장
수강신청
컴퓨터를 사고 구축하는 데 최소 2일
클라우드컴퓨팅을 만드는데 걸리는 시간 5분내로
솔루션스아키텍트 / 솔루션스아키텍트솔루션 자격증, 클라우드계에서 뜨고있는 직업
EB 데이터를 옮길수있는 박스를 만듬.
엣지로케이션
University AWSomeday
University_AWSomeday20
서버 스펙을 변경할 수 있다.
블럭스토리지 EBS단위 1나의 EC2 안에 여러개의 EBS가능.
AI기능제공 텍스트,STS,이미지 인식 3가지
AWS Educate에서 공부 가능하다. 추천 ㄱㄱ
Amazon Leadship principles 상황, 역할, 액션, 결과 = S T A R 형태로 얘기.
관심과 역할
TopN 은 여러 코드와 응용할 수 있다.
CountTrigram 3자씩 만들어 횟수 찾기
CountCitation 핵심 링크 찾는것
Join & Title 는 이름을 붙여주는 추가 응용코드이다.
기존엔 Key/Value 타입,
Sequence 타입, -> 모든 키와 밸류지원하고, 압축을 지원!! 약 60%공간절약 가능
cat으로 확인불가능 hadoop fs -text로만 가능
분산캐시
작은 사이의 읽기 전용 파일을 태스크의 작업 디렉토리에 복사해 주는 메커니즘
join&title보다 빠르게 작동
프로젝트 X, 다음시간에 카톡 분석을 한다. -> 이걸로 프로젝트 대체,
과제 2개 12일까지 하기.
시험 보강주 다다음주.
외우는 건 큰 의미없고 코드 빈칸과 설명하기 문제 낼거임.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment