아파치 플링크로 하는 스트림 데이터 처리 [상태가 있는 스트림 데이터 분석]
- 원서명Stream Processing with Apache Flink: Fundamentals, Implementation, and Operation of Streaming Applications (ISBN 9781491974292)
- 지은이파비안 휴스케(Fabian Hueske), 바실리키 칼라브리(Vasiliki Kalavri)
- 옮긴이오세봉
- ISBN : 9791161754093
- 35,000원
- 2020년 04월 22일 펴냄 (절판)
- 페이퍼백 | 440쪽 | 188*235mm
- 시리즈 : 데이터 과학
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
아파치 플링크를 사용하면 초저지연으로 스트림 데이터를 처리하고 실시간으로 스트림 데이터를 분석할 수 있다. 강력한 아파치 플링크의 스트림 처리 기능을 바탕으로 매일 수천억 건 이상의 데이터를 처리하는 스트림 데이터 처리 애플리케이션을 쉽게 개발할 수 있다.
이 책은 스트림 데이터의 일반적인 내용부터 아파치 플링크의 구현 원리와 스트림 데이터 개발에 필요한 여러 기능을 쉬운 예제를 들어 설명한다. 스트림 데이터 처리가 궁금하거나 스트림 데이터 처리 애플리케이션 개발에 관심이 많은 개발자라면 꼭 읽어봐야 하는 책이다.
추천의 글
이 책은 스트리밍 업계에서 오랫동안 몸담아 온 경력자나 처음으로 스트림 처리 애플리케이션을 작성하려는 초보 소프트웨어 및 데이터 엔지니어에게 꼭 맞는 매우 훌륭한 책이다. 스트리밍 처리의 핵심 내용을 자세히 설명한다. 따라서 이 책을 읽고 나면 스트림 처리에 관한 기술적 수준을 높일 수 있으므로 꼭 읽어보길 강력히 추천한다.
— 테드 말라스카(Ted Malaska)/ Capital One의 엔터프라이즈 아키텍처 이사
이 책에서 다루는 내용
■ 상태가 있는 스트림의 분산 처리 개념과 도전 과제
■ 이벤트 시간 처리 모드와 내고장성 모델을 포함한 플링크 시스템 아키텍처
■ 시간 기반과 상태가 있는 연산자를 포함한 DataStream API의 기초와 구성 요소 이해
■ 정확히 한 번(exactly-once) 일관성을 보장하면서 외부 시스템의 데이터 읽고 쓰기
■ 플링크 클러스터 설치와 설정
■ 스트리밍 애플리케이션의 지속적인 실행에 필요한 운영 방법
이 책의 구성
아파치 플링크를 이용해 스트림을 처리할 때 알아야 하는 모든 내용을 다룬다. 11개의 장으로 구성했으며 아파치 플링크를 폭넓게 설명한다. 몇 개 장은 이론 위주로 설명하며 고수준의 설계 개념을 소개하는 것이 목표지만, 나머지는 직접 실행해볼 수 있는 내용과 코드 예제를 포함하고 있다.
이 책을 쓸 때는 각 장을 순서대로 읽도록 기획했지만, 이미 내용을 잘 알고 있는 장은 건너뛰고 싶은 독자도 있을 것이다. 플링크 코드를 직접 짜보는 데 관심 있는 독자라면 실전 코드를 포함하고 있는 장을 먼저 보고 싶을 것이다. 아래에 각 장의 내용을 소개하고 있으므로, 관심 있는 장이 있다면 바로 찾아봐도 된다.
1장, ‘상태가 있는 스트림 처리 소개’에서는 상태가 있는 스트림 처리의 개요와 데이터 처리 애플리케이션 아키텍처, 애플리케이션 설계, 스트리밍 처리가 전통적인 방식보다 어떤 이점이 있는지 소개한다. 로컬 플링크 인스턴스에서 스트리밍 애플리케이션을 어떻게 실행하는지도 보여준다.
2장, ‘스트리밍 처리 기초’에서는 스트리밍 처리의 기초와 도전 과제, 플링크만의 독자적인 내용을 알아본다.
3장, ‘아파치 플링크 아키텍처’에서는 플링크 시스템의 아키텍처와 내부를 설명한다. 또한 스트리밍 애플리케이션의 분산 아키텍처, 시간과 상태 처리, 플링크 내고장성 메커니즘을 살펴본다.
4장, ‘아파치 플링크 개발 환경 설치’에서는 플링크 애플리케이션을 개발하고 디버깅하는 환경을 설치하는 방법을 설명한다.
5장, ‘DataStream API(v1.7)’에서는 플링크 DataStream API의 기초를 소개한다. DataStream 애플리케이션을 어떻게 구현하고 어떤 스트림 변환 연산, 함수, 데이터 타입을 제공하는지 배운다.
6장, ‘시간 기반 연산자와 윈도우 연산자에서는 DataStream API의 시간 기반 연산자를 알아본다. 스트리밍 애플리케이션에서 시간을 다룰 때 많은 유연성을 제공하는 ProcessFunction뿐만 아니라 윈도우 연산자와 시간 기반 조인을 살펴본다.
7장, ‘상태가 있는 연산자와 애플리케이션’에서는 상태가 있는 함수를 어떻게 구현하는지 설명하고, 상태가 있는 함수의 성능, 견고성, 코드 진화와 같은 관련된 모든 주제를 알아본다. 또한 플링크 쿼리 가능한 상태(Queryable State)를 어떻게 사용하는지도 보여준다.
8장, ‘외부 시스템 연동’에서는 플링크에서 가장 일반적으로 사용하는 소스와 싱크 커넥터를 알아본다. 플링크가 단대단 애플리케이션 일관성 보장에 어떻게 접근하는지 알아보며, 사용자가 입력 데이터 소스와 외부 시스템으로 데이터를 내보내는 싱크를 어떻게 정의하는지 설명한다.
9장, ‘플링크 설치’에서는 플링크 클러스터를 다양한 환경에서 설치하고 설정하는 방법을 소개한다.
10장, ‘플링크와 스트리밍 애플리케이션 운영’에서는 스트리밍 애플리케이션을 1년 365일 24시간 실행하는 데 필요한 운영, 모니터링, 유지 보수 방법을 다룬다.
11장, ‘새 여정의 시작’에서는 플링크 관련 질문을 어디에 하면 될지, 관련 행사에 참석하는 방법과 플링크가 현재 어떻게 사용되는지 알 수 있는 여러 정보를 제공한다.
목차
목차
- 1장. 상태가 있는 스트림 처리 소개
- 전통적인 데이터 인프라
- 트랜잭션 처리
- 분석 처리
- 상태가 있는 스트림 처리
- 이벤트 주도 애플리케이션
- 데이터 파이프라인
- 스트리밍 분석
- 오픈소스 스트리밍 처리의 진화
- 스트림 처리의 역사
- 플링크 빠르게 살펴보기
- 첫 번째 플링크 애플리케이션 실행
- 요약
- 전통적인 데이터 인프라
- 2장. 스트리밍 처리 기초
- 데이터플로우 프로그래밍 소개
- 데이터플로우 그래프
- 데이터 병렬화와 태스크 병렬화
- 데이터 교환 전략
- 병렬 스트림 처리
- 지연과 처리율
- 데이터 스트림 연산
- 시간 시멘틱
- 스트리밍 처리에서 1분
- 처리 시간
- 이벤트 시간
- 워터마크
- 처리 시간과 이벤트 시간
- 상태와 일관성 모델
- 태스크 실패
- 결과 보장
- 요약
- 데이터플로우 프로그래밍 소개
- 3장. 아파치 플링크 아키텍처
- 시스템 아키텍처
- 플링크 컴포넌트
- 애플리케이션 배치
- 태스크 실행
- 고가용성 설정
- 플링크 내부의 데이터 전송
- 크레딧 기반 흐름 제어
- 태스크 체이닝
- 이벤트 시간 처리
- 타임스탬프
- 워터마크
- 워터마크 전파와 이벤트 시간
- 타임스탬프 할당과 워터마크 생성
- 상태 관리
- 연산자 상태
- 키 상태
- 상태 백엔드
- 상태가 있는 연산자의 수평 확장
- 체크포인트, 세이브포인트, 상태 복구
- 일관성 체크포인트
- 일관성 체크포인트에서 복구
- 플링크의 체크포인트 알고리즘
- 체크포인트가 성능에 미치는 영향
- 세이브포인트
- 요약
- 시스템 아키텍처
- 4장. 아파치 플링크 개발 환경 설치
- 소프트웨어 요구 사항
- IDE에서 플링크 애플리케이션 실행과 디버깅
- IDE에서 예제 코드 불러오기
- IDE에서 플링크 애플리케이션 실행
- IDE에서 플링크 애플리케이션 디버깅
- 플링크 메이븐 프로젝트 부트스트랩
- 요약
- 5장. DataStream API(v1.7)
- 헬로우, 플링크!
- 실행 환경 설정
- 입력 스트림 읽기
- 변환 연산 적용
- 결과 출력
- 실행
- 변환 연산
- 기본 변환 연산
- KeyedStream 변환 연산
- 다중 스트림 변환 연산
- 분산 변환 연산
- 병렬 설정
- 데이터 타입
- 지원하는 데이터 타입
- TypeInformation 생성
- 명시적인 TypeInformation 제공
- 키 정의 방법과 필드 참조
- 필드 위치
- 필드 표현식
- Key Selector
- 함수 구현
- 함수 클래스
- 람다 함수
- RichFunction
- 외부 의존 라이브러리와 플링크 라이브러리 포함
- 요약
- 헬로우, 플링크!
- 6장. 시간 기반 연산자와 윈도우 연산자
- 시간 특성 설정
- 타임스탬프 할당과 워터마크 생성
- 워터마크가 지연과 완성도에 미치는 영향
- ProcessFunction
- TimerService와 타이머
- 사이드 출력으로 내보내기
- CoProcessFunction
- 윈도우 연산자
- 윈도우 연산자 정의
- 기본 윈도우 할당자
- 윈도우에 함수 적용
- 사용자 정의 윈도우 연산자
- 시간 기반 스트림 조인
- 간격 조인
- 윈도우 조인
- 연착 데이터 처리
- 연착 이벤트 버리기
- 연착 이벤트 재전송
- 연착 이벤트를 포함해 처리 결과 갱신
- 요약
- 시간 특성 설정
- 7장. 상태가 있는 연산자와 애플리케이션
- 상태가 있는 함수 구현
- RuntimeContext에 키 상태 선언
- ListCheckpointed 인터페이스를 이용해 연산자 리스트 상태 구현
- 브로드캐스트 상태 사용
- CheckpointedFunction 인터페이스 사용
- 체크포인트 완료 알림 받기
- 상태가 있는 애플리케이션의 장애 복구 활성화
- 상태가 있는 애플리케이션의 유지 보수 활성화
- 연산자 고유 식별자 지정
- 키 상태 연산자에 최대 병렬 값 정의
- 상태가 있는 애플리케이션의 성능과 견고함
- 상태 백엔드 선택
- 기본 상태 종류 선택
- 상태 누수 방지
- 상태가 있는 애플리케이션의 진화
- 기존 상태 수정 없이 애플리케이션 갱신
- 애플리케이션에서 상태 제거
- 연산자의 상태 변경
- 쿼리 가능한 상태
- 쿼리 가능한 상태의 아키텍처와 쿼리 가능한 상태 활성화
- 쿼리 가능한 상태 노출
- 외부 애플리케이션에서 상태 쿼리
- 요약
- 상태가 있는 함수 구현
- 8장. 외부 시스템 연동
- 애플리케이션 일관성 보장
- 멱등적 쓰기
- 트랜잭션 쓰기
- 기본 제공 커넥터
- 아파치 카프카 소스 커넥터
- 아파치 카프카 싱크 커넥터
- 파일 시스템 소스 커넥터
- 파일 시스템 싱크 커넥터
- 아파치 카산드라 싱크 커넥터
- 사용자 정의 소스 함수 구현
- 재설정 가능한 소스 함수
- SourceFunction, 타임스탬프, 워터마크
- 사용자 정의 싱크 함수 구현
- 멱등적 싱크 커넥터
- 트랜잭션 싱크 커넥터
- 비동기로 외부 시스템에 접근
- 요약
- 애플리케이션 일관성 보장
- 9장. 플링크 설치
- 배치 모드
- 독립형 클러스터
- 도커
- 아파치 하둡 YARN
- 쿠버네티스
- 고가용성 설정
- 고가용성 독립형 설정
- 고가용성 YARN 설정
- 고가용성 쿠버네티스 설치
- 하둡 컴포넌트와 통합
- 파일 시스템 설정
- 시스템 환경설정
- 자바와 클래스 로딩
- CPU
- 메인메모리와 네트워크 버퍼
- 디스크 저장소
- 체크포인트와 상태 백엔드
- 보안
- 요약
- 배치 모드
- 10장. 플링크와 스트리밍 애플리케이션 운영
- 스트리밍 애플리케이션 실행과 관리
- 세이브포인트
- 커맨드라인 클라이언트로 애플리케이션 관리
- REST API로 애플리케이션 관리
- 애플리케이션을 컨테이너로 번들링하고 배치
- 태스크 스케줄 제어
- 태스크 체이닝 제어
- 슬롯 공유 그룹 정의
- 체크포인팅과 복구 튜닝
- 체크포인팅 설정
- 상태 백엔드 설정
- 복구 설정
- 플링크 클러스터와 애플리케이션 모니터링
- 플링크 웹 UI
- 메트릭 시스템
- 지연 모니터링
- 로깅 설정
- 요약
- 스트리밍 애플리케이션 실행과 관리
- 11장. 새 여정의 시작
- 스트리밍 처리 외의 플링크 생태계
- DataSet API로 배치 처리
- Table API와 SQL로 관계형 데이터 분석
- FlinkCEP로 복합 이벤트 처리와 패턴 매칭
- 그래프 처리를 위한 Gelly
- 커뮤니티 소개
- 스트리밍 처리 외의 플링크 생태계
도서 오류 신고
정오표
정오표
[p.389 : 표 10-10 하단]
시작힌
->
시작한