아파치 하둡 YARN [차세대 데이터 플랫폼을 지향하는]
- 원서명Apache Hadoop YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop 2 (ISBN 9780321934505)
- 지은이아룬 머시, 비나드 쿠마 바빌라팔리, 더그 이들린, 조셉 니미크, 제프 마컴
- 옮긴이안건국
- ISBN : 9788960776388
- 36,000원
- 2014년 11월 28일 펴냄 (절판)
- 페이퍼백 | 424쪽 | 188*235mm
- 시리즈 : 데이터 과학
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
이 책의 예제코드 링크
요약
아파치 하둡(Apache Hadoop) 2.x 버전은 리소스매니저(RM)와 애플리케이션매니저(AM), 노드매니저(NM)라는 주요한 3가지 컴포넌트로 구성한 YARN이라는 아키텍처에 의존한다. 사실 하이브(Hive) 같은 에코시스템이나 메모리 기반 프레임워크/플랫폼을 사용하기에 아직 YARN 기반 애플리케이션은 이전 하둡 1.x처럼 많지는 않다. 하지만 에코시스템 등의 대부분은 YARN 기반에서 운용되기 때문에 YARN의 아키텍처를 더 깊이 이해할 필요가 있다. 이 책에서는 하둡 2.x의 설치 방법과 기존 맵리듀스 통합, YARN 아키텍처, 커패시티(capacity) 스케줄러 등을 설명한다. 이중에서 핵심은 YARN의 3가지 주요 컴포넌트인 리소스매니저(RM)와 애플리케이션매니저(AM), 노드매니저(NM)의 설계와 아키텍처 부분이다. 더불어 기업의 조직 구성에 알맞게 자원 관리를 할 수 있는 커패시티 스케줄러를 완전히 이해할 수 있다. 기업의 하둡 운용자나 데이터 엔지니어에게 도움이 될 책이다.
이 책에서 다루는 내용
■ 아파치 하둡 에코시스템을 확장하는 방법인 YARN의 목표와 설계, 아키텍처, 구성 요소
■ 단일 노드에서 YARN의 탐색
■ YARN 클러스터와 커패시티 스케줄러의 관리
■ 기존 맵리듀스 애플리케이션을 실행하는 방법
■ 대규모 클러스터 YARN 애플리케이션을 개발하는 방법
■ YARN에서 실행하는 새로운 오픈소스 프레임워크
추천의 글
작가 윌리엄 깁슨이 한 유명한 말이 있다. “미래는 이미 와 있다. 단지 널리 퍼져있지 않을 뿐이다.” 웹 검색 산업이 전혀 알려지지 않았을 때 우리에게는 빅데이터의 미래에서의 삶에 대한 특권이 있었다(한편, 저주도 있었다). 무엇을 배웠을까? 우리는 모든 것을 측정할 수 있게 학습했다. 그리고 우리는 실험하는 방법도 배웠다. 우리는 비정형 데이터를 발굴해야 하는 신호를 습득했고, 데이터 과학을 통해 비즈니스 가치를 발굴해야 하는 것을 배웠다. 그리고 그 시기에 개발되고 있는 비즈니스 인텔리전스 시스템과는 근본적으로 다른 새로운 데이터 처리 플랫폼이 필요하고, 이 일을 위해 학습했다.
빅데이터의 미래는 빠르게, 거의 모든 산업에 도달하고 있다. 빅데이터의 미래는 자동차와 빌딩, 심지어 사이버 공간에서 우리가 알고 있는 웹로그뿐만 아니라 사람들이 만들어내는 로그 스트림 등 물리적 세계의 광범위한 계측을 통해 부분적으로 구동되고 있다. 아주 분명하게 디지털화된 정부의 기록과 보험 정책, 디지털 의료 기록 등과 같은 디지털 기록은 검색 엔진이 웹페이지를 크롤링하고 해석하는 것과 비슷한 정보의 수집물을 만들고 있다. 점점 더 산업에서 웹 검색 세상의 첫 번째로 개척된 도구와 기술이 통용되는 것은 놀라운 일은 아니다. 그리고 아파치 하둡(Apache Hadoop)도 당연히 그와 같은 도구다.
하지만 하둡은 발표된 지 10년 가까이 됐다. 컴퓨팅 인프라는 십 년 동안 크게 발전했다. 만약 하둡이 현대 빅데이터 세상과 밀접한 관련이 있다면, 하둡 역시 발전이 필요했다. 따라서 YARN은 하둡과 관련한 발전의 결과다.
이 책의 하둡 역사 개관에서도 설명했지만, 하둡 실재의 대부분은 단일 컴퓨팅 패러다임인 맵리듀스(MapReduce) 지원이다. 컴퓨팅 서버에서 문제가 되는 것에 더 많은 노드를 추가하는 수평적 확장은 웹 검색 산업의 웹 성장 속도를 유지하기 위한 유일한 방법이었다. 맵리듀스 패러다임은 수평적 확장에 대해 특별히 적합해, 투자 유치는 자연스러웠다.
좀 더 빠른 네트워크와 더 많은 코어, SSD 스토리지, 그리고 (특히) 더 많은 메모리, 병렬 컴퓨팅의 새로운 패러다임은 대규모 확장에 실용적으로 되고 있다. YARN은 하둡 사용자가 맵리듀스를 넘어 이동함으로써 새로운 패러다임을 채택할 수 있게 해준다. 맵리듀스를 버리는 것은 아니다. 많은 문제에 아주 적합하고 여전히 현재 발전되고 있는 다른 어떤 것보다 훌륭하게 확장되기 때문이다. 그러나 점점 맵리듀스는 YARN의 많은 도구 중 하나가 될 뿐이다.
즉, 빅데이터 시대는 이제 막 시작되고 있으며, YARN 덕분에 하둡은 모든 업계에서 빅데이터를 처리하는 데 매우 중요한 역할을 지속할 것이다.
이 모든 것을 감안할 때 YARN 프로젝트 설립자 아룬 머시(Arun Murthy)로부터 배운 것을 기쁘게 생각한다. 그리고 프로젝트 리더인 비나드 쿠마 바빌라팔리(Vinod Kumar Vavilapalli)는 더그 이들린(Doug Eadline)과 조셉 니미크(Joseph Niemiec), 제프 마컴(Jeff Markham)과 함께 YARN 프로젝트의 히스토리와 목표를 공유하고, YARN의 배포와 작동하는 방법과 애플리케이션 수준에서 YARN을 최대한 활용하는 방법에 대한 튜토리얼을 제공하기 위해 팀을 만들었다.
새로운 맵리듀스 패러다임을 넘어 하둡을 전파하기 위한 중요한 돌파구로 YARN을 강조하고, 아파치 하둡 2.0 버전에 꼭 필요한 책이다.
- 레이미 스태터(Raymie Stata) / Altiscale CEO
데이터 분석 시리즈는 하둡과 여러 하둡 에코시스템을 다루지 않으면 의미가 없다. 하둡 2는 데이터 처리가 하둡에서 어떻게 작동하는지 내부의 큰 변화를 나타내는 YARN(Yet Another Resource Negotiator)을 발표했다. YARN에서 하둡은 확장성 측면에서 데이터 처리용 애플리케이션을 만들기 위한 프레임워크로, 맵리듀스 패러다임을 넘어섰다. 맵리듀스는 YARN의 프레임워크에서 구현되는 애플리케이션일 뿐이다. 이 책은 YARN의 동작을 자세하게 다루고 맵리듀스 이외에 하둡의 확장성 측면에서 데이터를 어떻게 다루고 동작하는지 YARN을 이용한 방법을 설명한다.
어떤 사람도 이 책의 저자진보다 자료를 더 잘 만들 수는 없다. 그들은 YARN의 창시와 개발을 담당하는 호튼웍스(Hortonworks)의 팀이다.
호튼웍스 공동설립자인 아룬은 2006년부터 하둡에 공헌하고 있다. 비나드는 2007년 중반부터 아파치 하둡 프로젝트에 풀타임으로 기여하고 있다. 제프와 조셉은 호튼웍스 솔루션 엔지니어다. 더그는 인기 있는 Hadoop Fundamentals LiveLesson을 교육하는 트레이너이며, 수년간 하둡과 클러스터 시스템을 구축한 경험이 있다. 따라서 이런 저자들의 하둡과 YARN에 관련된 지식과 경험의 폭은 다른 곳에서 찾을 수 없다.
이 책은 플랫폼 진화에 필요한 다음 단계인 YARN이 왜 필요했는지 설명하기 위해 하둡과 맵리듀스의 간략한 역사를 설명한다. 설치와 관리를 통해 YARN 내부와 커패시티 스케줄러를 자세히 살펴본다. 기존 맵리듀스 애플리케이션이 현재 YARN에서 애플리케이션 프레임워크로 어떻게 실행되는지 살펴본다. 마지막으로 YARN 애플리케이션을 구현하는 방법을 학습하고 새로운 YARN 기반 프레임워크 일부를 살펴본다. 이 책은 독자가 차세대 하둡 플랫폼에 대한 포괄적인 부분을 학습하게 돕는다.
- 폴 딕스(Paul Dix) / 애디슨웨슬리(Addison-Wesley) 출판사 데이터•분석 시리즈에디터
이 책의 대상 독자
이 책은 아파치 하둡 YARN의 목표와 YARN의 설계 및 아키텍처, 그리고 맵리듀스 이상의 규모로 데이터를 활용할 수 있게 하둡 에코시스템을 확장하는 방법 등의 상세한 부분을 다루려고 의도했다. YARN 클러스터 설치와 관리, 그리고 YARN 애플리케이션 개발과 새로운 프레임워크가 맵리듀스를 넘어 YARN에서 실행될 수 있게 사용자 지원에 주로 초점을 맞췄다.
이 책은 아파치 하둡을 소개하려는 목적이 아니라는 데 주의하라. 독자가 하둡 버전 1의 동작 지식을 알고 있고, 하둡 맵리듀스 프레임워크상에서 애플리케이션을 작성할 수 있으며, 하둡 분산 파일 시스템의 아키텍처와 사용법을 알고 있다고 가정한다. 소개 자료에 대해서는 책의 웹사이트(http://yarn-book.com)를 참고하자. 이 책의 향후 개정판에서는 맵리듀스 애플리케이션 프레임워크 자체와 사용자가 자신의 맵리듀스 애플리케이션을 설계하고 코딩할 수 있는 방법에 관련한 자료가 확장되기를 희망한다.
이 책의 구성
1장, '아파치 하둡 YARN: 간략한 역사와 배경'에서는 아파치 하둡 YARN이 어떻게, 그리고 왜 출현하게 됐는지 역사를 설명한다.
2장, '아파치 하둡 YARN의 빠른 설치'에서는 단일 머신에서 아파치 하둡의 빠른 설치와 탐색할 수 있는 가이드를 제공한다.
3장, '아파치 하둡 YARN의 핵심 개념'에서는 YARN을 소개하고 하둡 에코시스템을 확장하는 방법을 설명한다.
4장, 'YARN 컴포넌트의 기능 개요'에서는 독자들이 시작할 수 있게 YARN 컴포넌트의 기능 개요를 설명한다.
5장, '아파치 하둡 YARN 설치'에서는 YARN을 설치하는 방법을 설명한다. 스크립트 기반의 매뉴얼 설치뿐만 아니라 아파치 암바리(Ambari) GUI 기반 설치 둘 다를 다룬다.
6장, '아파치 하둡 YARN 관리'에서는 YARN 클러스터의 관리에 대한 정보를 다룬다.
7장, '아파치 하둡 YARN 아키텍처 가이드'에서는 독자에게 YARN의 내부 동작 원리를 설명하기 위해 YARN의 아키텍처를 깊이 있게 살펴본다.
8장, 'YARN의 커패시티 스케줄러'에서는 커패시티 스케줄러에 대해 상세히 설명한다.
9장, '아파치 하둡 YARN의 맵리듀스'에서는 기존 맵리듀스 기반 애플리케이션 실행과 YARN을 활용하는 방법을 설명한다.
10장, '아파치 하둡 YARN 애플리케이션 예제'에서는 JBoss 애플리케이션 서버 클러스터를 YARN 애플리케이션으로 개발하고 동작하는 방법을 상세히 설명한다.
11장, '아파치 하둡 YARN 분산 셸'에서는 분산 셸(distributed-shell)의 사용법 및 내부와 YARN에 배포돼 내장 표준 예제 애플리케이션을 설명한다.
YARN의 가장 흥미로운 부분 중 하나는 여러 프로그래밍 모델과 애플리케이션 프레임워크를 지원하는 능력이다. 12장, '아파치 하둡 YARN 프레임워크'에서는 YARN 이하에서 개발되고 있는 신규 오픈소스 프레임워크의 간략한 설명으로 끝맺는다.
추가로, 부록 A ‘추가적인 내용과 코드 다운로드’와 부록 B ‘YARN 설치 스크립트’, 부록 C ‘YARN 관리 스크립트’, 부록 D ‘나기오스 모듈’, 부록 E ‘자원과 추가 정보’, 부록 F ‘HDFS 빠른 참조’ 내용이 담겨있다.
목차
목차
- 1장 아파치 하둡 YARN: 간략한 역사와 배경
- 소개
- 아파치 하둡
- 0단계: 애드혹 클러스터 시대
- 1단계: 하둡 온디맨드
- HOD상에서 HDFS
- HOD의 특징과 장점
- 하둡 온디맨드의 단점
- 2단계: 공유 컴퓨팅 클러스터의 기원
- 공유 클러스터의 진화
- 공유 맵리듀스 클러스터 문제
- 3단계: YARN의 출현
- 정리
- 2장 아파치 하둡 YARN의 빠른 설치
- 시작
- 단일 노드의 YARN 클러스터 설정 단계
- 1단계: 아파치 하둡 다운로드
- 2단계: JAVA_HOME의 설정
- 3단계: 사용자와 그룹 생성
- 4단계: 데이터와 로그 디렉터리 생성
- 5단계: core-site.xml 설정
- 6단계: hdfs-site.xml 설정
- 7단계: mapred-site.xml 설정
- 8단계: yarn-site.xml 설정
- 9단계: 자바 힙 크기 수정
- 10단계: HDFS 포맷
- 11단계: HDFS 서비스 시작
- 12단계: YARN 서비스 시작
- 13단계: 웹을 이용해 실행 중인 서비스 확인
- 간략한 맵리듀스 예제 실행
- 정리
- 3장 아파치 하둡 YARN의 핵심 개념
- 맵리듀스의 한계를 넘어
- 맵리듀스 패러다임
- 아파치 하둡 맵리듀스
- 비맵리듀스 워크로드의 필요성
- 확장성 해결
- 개선된 이용률
- 사용자 민첩성
- 아파치 하둡 YARN
- YARN 컴포넌트
- 리소스매니저
- 애플리케이션마스터
- 자원 모델
- 리소스리퀘스트와 컨테이너
- 컨테이너 명세
- 정리
- 4장 YARN 컴포넌트의 기능 개요
- 아키텍처 개요
- 리소스매니저
- YARN 스케줄링 컴포넌트
- FIFO 스케줄러
- 커패시티 스케줄러
- 페어 스케줄러
- 컨테이너
- 노드매니저
- 애플리케이션마스터
- YARN의 자원 모델
- 클라이언트 자원 요청
- 애플리케이션마스터 컨테이너 할당
- 애플리케이션마스터-컨테이너 관리자 통신
- 애플리케이션 의존성 관리
- 로컬리소스 정의
- 로컬리소스 타임스탬프
- 로컬리소스 유형
- 로컬리소스 가시성
- 로컬리소스 라이프사이클
- 정리
- 5장 아파치 하둡 YARN 설치
- 시작
- 시스템 준비
- 1단계: EPEL과 pdsn 설치
- 2단계: ssh 키 생성과 배포
- 하둡 버전 2의 스크립트 기반 설치
- JDK 옵션
- 1단계: 스크립트 다운로드와 해제
- 2단계: 스크립트 변수 설정
- 3단계: 노드 이름 설정
- 4단계: 스크립트 실행
- 5단계: 설치 확인
- 스크립트 기반 설치 제거
- 파일 처리 설정
- 환경설정 파일 설정
- core-site.xml
- hdfs-site.xml
- mapred-site.xml
- yarn-site.xml
- 시작 스크립트
- 아파치 암바리로 하둡 설치
- 암바리 기반 하둡 설치 실행
- 1단계: 필요조건 확인
- 2단계: 암바리 서버 설치
- 3단계: 암바리 에이전트 설치와 시작
- 4단계: 암바리 서버 시작
- 5단계: HDP2.X 클러스터 설치
- 정리
- 6장 아파치 하둡 YARN 관리
- 스크립트 기반 환경설정
- 클러스터 상태 모니터링: 나기오스
- 기본적인 하둡 서비스 모니터링
- JVM 모니터링
- 실시간 모니터링: 강글리아
- 암바리로 관리
- JVM 분석
- 기본 YARN 관리
- YARN 관리 도구
- YARN 노드 추가 및 해제
- 커패시티 스케줄러 설정
- YARN 웹 프록시
- JobHistoryServer 사용
- 사용자와 사용자 그룹 매핑 갱신
- 슈퍼유저 프록시 그룹 매핑의 갱신
- 리소스매니저 관리를 위한 ACL 갱신
- 서비스 레벨 권한 리로드
- YARN의 잡 관리
- 컨테이너 메모리 설정
- 컨테이너 주요 설정
- 맵리듀스 프로퍼티 설정
- 사용자 로그 관리
- 정리
- 7장 아파치 하둡 YARN 아키텍처 가이드
- 개요
- 리소스매니저
- 리소스매니저 컴포넌트의 개요
- 클라이언트와 리소스매니저의 상호 작용
- 애플리케이션과 리소스매니저의 상호 작용
- 노드와 리소스매니저의 상호 작용
- 핵심 리소스매니저 컴포넌트
- 리소스매니저의 보안 관련 컴포넌트
- 노드매니저
- 노드매니저 컴포넌트의 개요
- 노드매니저 컴포넌트
- 노드매니저 보안 컴포넌트
- 노드매니저의 중요 기능
- 애플리케이션마스터
- 개요
- 무결점 동작 상태
- 자원의 요건
- 스케줄링
- 스케줄링 프로토콜과 로컬리티
- 컨테이너 시작
- 종료 컨테이너
- 애플리케이션마스터 실패와 복구
- 조정과 출력 결과 커밋
- 클라이언트를 위한 정보
- 보안
- 애플리케이션마스터 종료의 마무리
- YARN 컨테이너
- 컨테이너 환경
- 애플리케이션마스터와 통신
- 애플리케이션 작성을 위한 정리
- 정리
- 8장 YARN의 커패시티 스케줄러
- 커패시티 스케줄러의 소개
- 멀티테넌시의 탄력성
- 보안
- 자원 인식
- 세부적인 스케줄링
- 로컬리티
- 스케줄링 정책
- 커패시티 스케줄러 설정
- 큐
- 계층형 큐
- 주요 특징
- 큐 사이의 스케줄링
- 계층형 큐의 정의
- 큐 접근 제어
- 큐의 커패시티 관리
- 사용자 제한
- 예약
- 큐의 상태
- 애플리케이션의 한계
- 사용자 인터페이스
- 정리
- 9장 아파치 하둡 YARN의 맵리듀스
- 하둡 YARN 맵리듀스 예제 실행
- 사용 가능한 예제 목록
- Pi 예제 실행
- 웹을 사용하는 모니터 예제
- Terasort 테스트 실행
- TestDFSIO 벤치마크 실행
- 맵리듀스 호환성
- 맵리듀스 애플리케이션마스터
- 애플리케이션마스터의 재시작 설정
- 완료된 태스크의 복구 설정
- 잡히스토리 서버
- 노드 커패시티 계산
- 셔플 서비스로 변경
- 기존 하둡 버전 1의 애플리케이션 실행
- org.apache.hadoop.mapred API의 바이너리 호환성
- org.apache.hadoop.mapreduce API의 소스 호환성
- 커맨드라인 스크립트의 호환성
- MRv1과 초기 MRv2(0.23.x) 애플리케이션 간의 호환성
- 맵리듀스 버전 1의 기존 코드 실행
- YARN 기반 아파치 피그 스크립트 실행
- YARN 기반 아파치 하이브 쿼리 실행
- YARN 기반 아파치 우지 워크플로우 실행
- 고급 기능
- 우버 잡
- 플러그인이 가능한 셔플과 정렬
- 정리
- 10장 아파치 하둡 YARN 애플리케이션 예제
- YARN 클라이언트
- 애플리케이션마스터
- 정리
- 11 장 아파치 하둡 YARN 분산 셸
- YARN 분산 셸 사용
- 간단한 예제
- 추가적인 컨테이너 사용
- 셸 인수 활용 분산 셸 예제
- 분산 셸 내부 구조
- 애플리케이션 상수
- 클라이언트
- 애플리케이션마스터
- 최종 컨테이너
- 정리
- 12장 아파치 하둡 YARN 프레임워크
- 분산 셸
- 하둡 맵리듀스
- 아파치 테즈
- 아파치 지라프
- 호야: YARN의 HBase
- YARN의 드라이어드
- 아파치 스파크
- 아파치 스톰
- REEF: 보존 가능한 평가기 실행 프레임워크
- 햄스터: 동일 클러스터에서 하둡과 MPI
- 정리
- 부록 A 추가적인 내용과 코드 다운로드
- 부록 B YARN 설치 스크립트
- 부록 C YARN 관리 스크립트
- 부록 D 나기오스 모듈
- 부록 E 자원과 추가적인 정보
- 부록 F HDFS 빠른 참조