SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
이덕죾

STORM IS COMING
클러스터 구성

 하둡 클러스터와 유사함
  MapReduce vs Topology
    MapReduce 는 결국 끝남
    Topology 는 죽이기 젂까지 계속 수행
스톰 노드

 마스터 노드
  님버스(Nimbus) 데몬 구동
  하둡의 JobTracker 와 유사
  코드를 클러스터에 분산
  머신에 태스크 할당
  장애를 모니터
 일꾼 노드
  슈퍼바이저(Supervisor) 데몬 구동
  일꾼 프로세스 작동/중지
님버스와 슈퍼바이저

 주키퍼(Zookeeper) 클러스트를 통해 협력
 님버스와 슈퍼바이저 데몬
  상태 없음 (stateless)
   모든 상태는 주키퍼나 로컬 디스크에 저장됨
  장애에 강함 (fail-fast)
   Kill -9 으로 죽여도 “아무일 없었던 것 처럼” 다시
    돌리면 됨.
스톰 토폴로지 돌리기

     코드를 jar 에 묶고 다음과 같이 실행

storm jar all-my-code.jar backtype.storm.MyTopology arg1 arg2



    님버스에 접속, jar를 업로드
    토폴로지 정의: Thrift Struct
    님버스: Thrift Service
        다양한 언어 지원
스트림

 스트림
  무한 튜플의 연속
 스트림 변환
  ex. 트윗 스트림 -> 유행 주제(Trend Topic) 스트림
 스트림 변환에 사용되는 추상 개념
  스파우트(Spout)
    스트림의 근원 (水原)
    ex. 트위터 API로 트윗 스트림 만들기
  볼트(Bolt)
    단일 단계 스트림 변환
    다단계의 변환 필요 시 볼트를 여럿 연결
토폴로지

 스트림 변환 그래프
  노드: 스파우트, 볼트
  연결: 볼트가 어떤 스트림을 구독하나?
토폴로지 특징

 스파우트, 볼트는 많은 쓰레드로 수행됨
  클러스트 젂체에 걸쳐
 쓰레드간 메시지 젂달
  No Broker, No Intermediate Queue
  Thread to Thread 로 직접 젂달
 모든 메시지가 처리됨
  클러스터 구성하는 컴퓨터가 하나 고장 나도 처
  리된다는 걸 보장함
단순한 토폴로지 예제

 스트림 단어 세는 토폴로지
  묷장을 스트리밍하는 스파우트
  최종 볼트는 젂체 묷장에 나오는 단어별 개수 스
  트리밍
예제: 토폴로지 정의




 스파우트는 kestrel.backtype.com 포트 22133의
  “sentence_queue”에서 묷장을 읽음
 토폴로지에서 이 스파우트의 아이디는 “1”
 SplitSentence 볼트의 아이디는 “2”
   10개의 쓰레드로 병렬화
예제: SplitSentence 볼트 구현
예제: SplitSentence 볼트 구현
(python)
예제: 다수 입력 스트림 구독




 다수의 입력 스트림 구독하기
  입력 선언을 체인 연결
  스트림 합칠 때 사용 가능
예제: WordCount 볼트 구현
예제: WordCount 볼트 설명

 WordCount는 Map 으로 메모리에 “단어: 개
  수” 관리
 WordCount가 죽으면?
  메모리에 저장된 Map 사라짐
  외부 데이터베이스 사용가능
    Riak, Cassandra, Memcached …
스트림 그룹화(grouping)

 스파우트와 볼트는 클러스터에 걸쳐 여러
  태스크로 병렬화 수행
 볼트A의 태스크는 볼트B에 어떤 태스크로
  튜플을 보내야??
스트림 그룹화(grouping)
셔플 그룹화(shuffle grouping)

 가장 단순
 젂체 태스크로 골고루 분산
필드 그룹화 (field grouping)

 SplitSentence 볼트와 WordCount 볼트 사이
 WordCount 볼트 기능상 같은 단어가 항상
  같은 태스크로 가야 함
 스트리밍 조인, 스트리밍 어그리게이션 등
  등 구현에 기본
 내부적으로 일관성 있는 해싱으로 구현
스톰이 감춰주는 복잡성

 단순한 추상 개념을 제공하기 위해 스톰이
 하는 일
 1.       메시지 처리 보장
             스파우트에서 나온 튜플이 토폴로지를 통해 완
              젂히 처리되는 것을 보장
             그래서 튜플이 발생하는 메시지 트리를 추적함
 2. 견고한 프로세스 관리
    슈퍼바이저에 일꾼이 할당되면 가능한 빨리 실
     행하고 일이 더 없으면 죽이고 뒷처리
              하둡은 가끔 고아 프로세스가 생겨 메모리, 자원 고
               갈의 원인이 되기도…
스톰이 감춰주는 복잡성 (Cont.)

 3.       장애 탐지, 자동 재할당
             태스크는 님버스에 하트비트 젂송.
             하트비트 타임아웃 시 재할당
             장애 발생 태스크 교체
 4. 효과적인 메시지 젂달
    ZeroMQ 사용
    직렬화 자동화
              기본형이 아닌 경우 인터페이스 구현만
 5. 로컬모드와 분산 모드
    스톰 클러스터를 로컬에서 시뮬레이션
              테스트 용이
Complex Event Processing

 Esper, Streambase, S4 같은 CEP 와 같은 영
  역
 Data Storage Layer 는 포함하지 않음
  모든 애플리케이션 만족하는 Layer 포함 하기 어
   려움
  토폴로지와 함께 Cassandra, Riak 같은 DB 함께
   사용 가능
그 밖에

 보다 깊이 있는 스트림 사용
  멀티 스트림
  암묵적 스트림
  다이렉트 그루핑
 상태 스파우트
 분산 RPC
 EC2에 스톰 클러스터 만드는 자동 배포기능

Weitere ähnliche Inhalte

Was ist angesagt?

리눅스 스터디 1회차
리눅스 스터디 1회차리눅스 스터디 1회차
리눅스 스터디 1회차준혁 이
 
[Gpg2권 박민근] 1.13 스택 와인딩
[Gpg2권 박민근] 1.13 스택 와인딩[Gpg2권 박민근] 1.13 스택 와인딩
[Gpg2권 박민근] 1.13 스택 와인딩MinGeun Park
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱Jong Wook Kim
 
저스티스 콜로세움 포스트 모템
저스티스 콜로세움 포스트 모템저스티스 콜로세움 포스트 모템
저스티스 콜로세움 포스트 모템Hyunwoo Kim
 
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)Minchul Jung
 
수퍼콜라이더 워크샵 자료
수퍼콜라이더 워크샵 자료수퍼콜라이더 워크샵 자료
수퍼콜라이더 워크샵 자료Sungmin Park
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장sung ki choi
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장JangHyuk You
 
Multi-thread : producer - consumer
Multi-thread : producer - consumerMulti-thread : producer - consumer
Multi-thread : producer - consumerChang Yoon Oh
 
Basic stack, queue
Basic stack, queueBasic stack, queue
Basic stack, queue박 민규
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장SukYun Yoon
 
Network Project
Network ProjectNetwork Project
Network ProjectMinho Yoo
 
코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다Han Sung Kim
 

Was ist angesagt? (20)

Thread
ThreadThread
Thread
 
os question
os questionos question
os question
 
why docker
why dockerwhy docker
why docker
 
리눅스 스터디 1회차
리눅스 스터디 1회차리눅스 스터디 1회차
리눅스 스터디 1회차
 
[Gpg2권 박민근] 1.13 스택 와인딩
[Gpg2권 박민근] 1.13 스택 와인딩[Gpg2권 박민근] 1.13 스택 와인딩
[Gpg2권 박민근] 1.13 스택 와인딩
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱
 
저스티스 콜로세움 포스트 모템
저스티스 콜로세움 포스트 모템저스티스 콜로세움 포스트 모템
저스티스 콜로세움 포스트 모템
 
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
 
Gcd ppt
Gcd pptGcd ppt
Gcd ppt
 
수퍼콜라이더 워크샵 자료
수퍼콜라이더 워크샵 자료수퍼콜라이더 워크샵 자료
수퍼콜라이더 워크샵 자료
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
 
Multi-thread : producer - consumer
Multi-thread : producer - consumerMulti-thread : producer - consumer
Multi-thread : producer - consumer
 
Basic stack, queue
Basic stack, queueBasic stack, queue
Basic stack, queue
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
 
Network Project
Network ProjectNetwork Project
Network Project
 
[ES6] 6. Class
[ES6] 6. Class[ES6] 6. Class
[ES6] 6. Class
 
Thread programming
Thread programmingThread programming
Thread programming
 
Lec 00, 01
Lec 00, 01Lec 00, 01
Lec 00, 01
 
코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다
 

Andere mochten auch

오픈소스 라이선스 세미나 (2014/07/15)
오픈소스 라이선스 세미나 (2014/07/15)오픈소스 라이선스 세미나 (2014/07/15)
오픈소스 라이선스 세미나 (2014/07/15)Changwoo Ryu
 
대표적인 오픈 소스 라이센스 요약 - 장형주
대표적인 오픈 소스 라이센스 요약 - 장형주대표적인 오픈 소스 라이센스 요약 - 장형주
대표적인 오픈 소스 라이센스 요약 - 장형주ETRIBE_STG
 
[D2 fest 2014]오픈소스sw 그리고 라이선스
[D2 fest 2014]오픈소스sw 그리고 라이선스[D2 fest 2014]오픈소스sw 그리고 라이선스
[D2 fest 2014]오픈소스sw 그리고 라이선스NAVER D2
 
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)NAVER D2
 
Cep 소개 - for developers
Cep 소개 - for developersCep 소개 - for developers
Cep 소개 - for developersJuhyeon Lee
 
개발자를위한 오픈소스라이선스
개발자를위한 오픈소스라이선스개발자를위한 오픈소스라이선스
개발자를위한 오픈소스라이선스라한사 아
 
가상기업을 SNS (SaaS)와 클라우드 (PaaS)로 구축하기
가상기업을 SNS (SaaS)와 클라우드 (PaaS)로 구축하기가상기업을 SNS (SaaS)와 클라우드 (PaaS)로 구축하기
가상기업을 SNS (SaaS)와 클라우드 (PaaS)로 구축하기uEngine Solutions
 
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)Hyunjin Lee
 
클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건Marcetto Co., Ltd
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1][개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]Tommy Lee
 
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해MINWHO Law Group
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기Ted Won
 
N스크린 서비스에서의 클라우드컴퓨팅 서비스 현황 및 전략
N스크린 서비스에서의 클라우드컴퓨팅 서비스 현황 및 전략N스크린 서비스에서의 클라우드컴퓨팅 서비스 현황 및 전략
N스크린 서비스에서의 클라우드컴퓨팅 서비스 현황 및 전략Fanny Lee
 
Apache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignApache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignMichael Noll
 
Apache storm vs. Spark Streaming
Apache storm vs. Spark StreamingApache storm vs. Spark Streaming
Apache storm vs. Spark StreamingP. Taylor Goetz
 

Andere mochten auch (19)

오픈소스 라이선스 세미나 (2014/07/15)
오픈소스 라이선스 세미나 (2014/07/15)오픈소스 라이선스 세미나 (2014/07/15)
오픈소스 라이선스 세미나 (2014/07/15)
 
대표적인 오픈 소스 라이센스 요약 - 장형주
대표적인 오픈 소스 라이센스 요약 - 장형주대표적인 오픈 소스 라이센스 요약 - 장형주
대표적인 오픈 소스 라이센스 요약 - 장형주
 
[D2 fest 2014]오픈소스sw 그리고 라이선스
[D2 fest 2014]오픈소스sw 그리고 라이선스[D2 fest 2014]오픈소스sw 그리고 라이선스
[D2 fest 2014]오픈소스sw 그리고 라이선스
 
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
[D2 fest 2014]개발자와 오픈소스(git기반 협업모델 소개)
 
Cep 소개 - for developers
Cep 소개 - for developersCep 소개 - for developers
Cep 소개 - for developers
 
개발자를위한 오픈소스라이선스
개발자를위한 오픈소스라이선스개발자를위한 오픈소스라이선스
개발자를위한 오픈소스라이선스
 
가상기업을 SNS (SaaS)와 클라우드 (PaaS)로 구축하기
가상기업을 SNS (SaaS)와 클라우드 (PaaS)로 구축하기가상기업을 SNS (SaaS)와 클라우드 (PaaS)로 구축하기
가상기업을 SNS (SaaS)와 클라우드 (PaaS)로 구축하기
 
Storm 훑어보기
Storm 훑어보기Storm 훑어보기
Storm 훑어보기
 
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
 
클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1][개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
 
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
 
SaaS 동향
SaaS 동향SaaS 동향
SaaS 동향
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
N스크린 서비스에서의 클라우드컴퓨팅 서비스 현황 및 전략
N스크린 서비스에서의 클라우드컴퓨팅 서비스 현황 및 전략N스크린 서비스에서의 클라우드컴퓨팅 서비스 현황 및 전략
N스크린 서비스에서의 클라우드컴퓨팅 서비스 현황 및 전략
 
Resource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache StormResource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache Storm
 
Apache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignApache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - Verisign
 
Apache storm vs. Spark Streaming
Apache storm vs. Spark StreamingApache storm vs. Spark Streaming
Apache storm vs. Spark Streaming
 

Ähnlich wie 스톰 접근 중

LSTM 네트워크 이해하기
LSTM 네트워크 이해하기LSTM 네트워크 이해하기
LSTM 네트워크 이해하기Mad Scientists
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드KwangSeob Jeong
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성NAVER D2
 
Memory corruption stack
Memory corruption stackMemory corruption stack
Memory corruption stackcodevania
 
쿠버네티스의 이해 #1
쿠버네티스의 이해 #1쿠버네티스의 이해 #1
쿠버네티스의 이해 #1상욱 송
 
Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdfSeokju Hong
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminarCho Daniel
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAmazon Web Services Korea
 
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제Lee Sang-Ho
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화sung ki choi
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1Jinkyoung Kim
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 jbugkorea
 
Net debugging 3_전한별
Net debugging 3_전한별Net debugging 3_전한별
Net debugging 3_전한별Han-Byul Jeon
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-uploadDong-Hwa jung
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편Sam Kim
 
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍흥배 최
 

Ähnlich wie 스톰 접근 중 (20)

LSTM 네트워크 이해하기
LSTM 네트워크 이해하기LSTM 네트워크 이해하기
LSTM 네트워크 이해하기
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
Memory corruption stack
Memory corruption stackMemory corruption stack
Memory corruption stack
 
쿠버네티스의 이해 #1
쿠버네티스의 이해 #1쿠버네티스의 이해 #1
쿠버네티스의 이해 #1
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
 
Network researching
Network researchingNetwork researching
Network researching
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep Dive
 
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
 
Net debugging 3_전한별
Net debugging 3_전한별Net debugging 3_전한별
Net debugging 3_전한별
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍
 

스톰 접근 중

  • 2. 클러스터 구성  하둡 클러스터와 유사함  MapReduce vs Topology  MapReduce 는 결국 끝남  Topology 는 죽이기 젂까지 계속 수행
  • 3. 스톰 노드  마스터 노드  님버스(Nimbus) 데몬 구동  하둡의 JobTracker 와 유사  코드를 클러스터에 분산  머신에 태스크 할당  장애를 모니터  일꾼 노드  슈퍼바이저(Supervisor) 데몬 구동  일꾼 프로세스 작동/중지
  • 4. 님버스와 슈퍼바이저  주키퍼(Zookeeper) 클러스트를 통해 협력  님버스와 슈퍼바이저 데몬  상태 없음 (stateless)  모든 상태는 주키퍼나 로컬 디스크에 저장됨  장애에 강함 (fail-fast)  Kill -9 으로 죽여도 “아무일 없었던 것 처럼” 다시 돌리면 됨.
  • 5. 스톰 토폴로지 돌리기  코드를 jar 에 묶고 다음과 같이 실행 storm jar all-my-code.jar backtype.storm.MyTopology arg1 arg2  님버스에 접속, jar를 업로드  토폴로지 정의: Thrift Struct  님버스: Thrift Service  다양한 언어 지원
  • 6. 스트림  스트림  무한 튜플의 연속  스트림 변환  ex. 트윗 스트림 -> 유행 주제(Trend Topic) 스트림  스트림 변환에 사용되는 추상 개념  스파우트(Spout)  스트림의 근원 (水原)  ex. 트위터 API로 트윗 스트림 만들기  볼트(Bolt)  단일 단계 스트림 변환  다단계의 변환 필요 시 볼트를 여럿 연결
  • 7. 토폴로지  스트림 변환 그래프  노드: 스파우트, 볼트  연결: 볼트가 어떤 스트림을 구독하나?
  • 8. 토폴로지 특징  스파우트, 볼트는 많은 쓰레드로 수행됨  클러스트 젂체에 걸쳐  쓰레드간 메시지 젂달  No Broker, No Intermediate Queue  Thread to Thread 로 직접 젂달  모든 메시지가 처리됨  클러스터 구성하는 컴퓨터가 하나 고장 나도 처 리된다는 걸 보장함
  • 9. 단순한 토폴로지 예제  스트림 단어 세는 토폴로지  묷장을 스트리밍하는 스파우트  최종 볼트는 젂체 묷장에 나오는 단어별 개수 스 트리밍
  • 10. 예제: 토폴로지 정의  스파우트는 kestrel.backtype.com 포트 22133의 “sentence_queue”에서 묷장을 읽음  토폴로지에서 이 스파우트의 아이디는 “1”  SplitSentence 볼트의 아이디는 “2”  10개의 쓰레드로 병렬화
  • 12. 예제: SplitSentence 볼트 구현 (python)
  • 13. 예제: 다수 입력 스트림 구독  다수의 입력 스트림 구독하기  입력 선언을 체인 연결  스트림 합칠 때 사용 가능
  • 15. 예제: WordCount 볼트 설명  WordCount는 Map 으로 메모리에 “단어: 개 수” 관리  WordCount가 죽으면?  메모리에 저장된 Map 사라짐  외부 데이터베이스 사용가능  Riak, Cassandra, Memcached …
  • 16. 스트림 그룹화(grouping)  스파우트와 볼트는 클러스터에 걸쳐 여러 태스크로 병렬화 수행  볼트A의 태스크는 볼트B에 어떤 태스크로 튜플을 보내야??
  • 18. 셔플 그룹화(shuffle grouping)  가장 단순  젂체 태스크로 골고루 분산
  • 19. 필드 그룹화 (field grouping)  SplitSentence 볼트와 WordCount 볼트 사이  WordCount 볼트 기능상 같은 단어가 항상 같은 태스크로 가야 함  스트리밍 조인, 스트리밍 어그리게이션 등 등 구현에 기본  내부적으로 일관성 있는 해싱으로 구현
  • 20. 스톰이 감춰주는 복잡성  단순한 추상 개념을 제공하기 위해 스톰이 하는 일 1. 메시지 처리 보장  스파우트에서 나온 튜플이 토폴로지를 통해 완 젂히 처리되는 것을 보장  그래서 튜플이 발생하는 메시지 트리를 추적함 2. 견고한 프로세스 관리  슈퍼바이저에 일꾼이 할당되면 가능한 빨리 실 행하고 일이 더 없으면 죽이고 뒷처리  하둡은 가끔 고아 프로세스가 생겨 메모리, 자원 고 갈의 원인이 되기도…
  • 21. 스톰이 감춰주는 복잡성 (Cont.) 3. 장애 탐지, 자동 재할당  태스크는 님버스에 하트비트 젂송.  하트비트 타임아웃 시 재할당  장애 발생 태스크 교체 4. 효과적인 메시지 젂달  ZeroMQ 사용  직렬화 자동화  기본형이 아닌 경우 인터페이스 구현만 5. 로컬모드와 분산 모드  스톰 클러스터를 로컬에서 시뮬레이션  테스트 용이
  • 22. Complex Event Processing  Esper, Streambase, S4 같은 CEP 와 같은 영 역  Data Storage Layer 는 포함하지 않음  모든 애플리케이션 만족하는 Layer 포함 하기 어 려움  토폴로지와 함께 Cassandra, Riak 같은 DB 함께 사용 가능
  • 23. 그 밖에  보다 깊이 있는 스트림 사용  멀티 스트림  암묵적 스트림  다이렉트 그루핑  상태 스파우트  분산 RPC  EC2에 스톰 클러스터 만드는 자동 배포기능