Top

하둡 맵리듀스 최적화와 튜닝 [MapReduce 성능 최적화를 위한 Hadoop 클러스터 구성과 튜닝]

  • 원서명Optimizing Hadoop for MapReduce (ISBN 9781783285655)
  • 지은이칼레드 타니어
  • 옮긴이김현준
  • ISBN : 9788960775848
  • 14,000원
  • 2014년 07월 23일 펴냄
  • 페이퍼백 | 136쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 데이터 과학

책 소개

요약

오픈소스인 하둡(Hadoop)에서, 클러스터 구성 및 최적화는 사용자의 기술과 경험적인 영향을 많이 받는다. 맵리듀스(MapReduce)의 경우 하위 인프라에 추가로 수행될 맵리듀스 애플리케이션과 데이터, 사용자의 특성까지 고려하여 구성하고 튜닝해야 한다. 이 책에는 맵리듀스와 맵리듀스의 성능에 대해 개괄하고, 맵리듀스 클러스터 최적화 구성, 리소스 병목을 찾아내고 해결하는 저자의 소중한 노하우가 담겨있으며, 맵리듀스 애플리케이션과 데이터에 따른 맵리듀스의 각 단계별 상세한 튜닝법을 설명한다. 아울러 맵리듀스 애플리케이션 개발자가 반드시 숙지하고 있어야 할 코딩 기술과, 사용자의 맵리듀스 애플리케이션 성능을 극대화 할 수 있는 다양한 시스템 관련 튜닝(OS, JVM, GC, I/O 등)과 체크리스트, 그리고 애플리케이션 성능과 개발자의 생산성을 함께 높일 수 있는 맵리듀스 템플릿 코드를 제공한다.

이 책에서 다루는 내용

■ 하둡 클러스터 노드 규모 산정
■ 자원 병목을 찾아내기 위한 하둡 맵리듀스 성능관련 카운터 활용법
■ 최적의 맵퍼와 리듀서 구성
■ 압축과 컴바이너 활용을 통한 맵과 리듀서 태스크 처리율 최적화
■ 다양한 최적화 기법 이해와 클러스터 최적화의 모범사례
■ 사용자의 하둡 클러스터 취약점 발견
■ 맵리듀스 성능에 영향을 주는 요인

이 책의 대상 독자

하둡 관리자 혹은 개발자, 맵리듀스 사용자, 하둡 입문자가 클러스터와 애플리케이션을 최적화하는 데 매우 유용한 도서다. 맵리듀스 애플리케이션 개발 경험이 있다면, 마지막 장의 맵리듀스 클래스 템플릿 코드를 이해하는 데 도움이 된다.

이 책의 구성

1 장, 맵리듀스의 이해: 맵리듀스 내부 동작 방식과 성능에 영향을 주는 요인을 찾아본다.

2 장, 하둡 설정 개요: 하둡 설정 파일과 맵리듀스 성능 관련 설정을 연구하고. 추가로 하둡 맵리듀스 활동 내역을 모니터링하는 데 사용하는 하둡 지표와 다양한 성능 모니터링 툴을 살펴본다.

3 장, 시스템 병목 검출: 하둡 맵리듀스 성능 튜닝 절차와 성능 기준치 작성 요령을 배운다. 그리고 하둡 카운터를 이용해 리소스 병목과 취약점을 찾는 방법을 배운다.

4 장, 리소스 취약점 발견: 하둡 클러스터 상태와 CPU와 메모리 사용량, 대규모 I/O 스토리지와 네트워크 전송량을 확인한다. 하둡 클러스터를 구축할 때 필요한 정확한 리소스 산정 방법을 배운다.

5 장, 맵과 리듀스 태스크 성능 향상: 맵과 리듀스 태스크 실행 성능을 향상시키는 기술을 배운다. 블록 크기의 중요성을 배우고 스필 레코드 수 절감 방법, 맵과 리듀스 처리율 측정, 맵리듀스 설정 튜닝 방법을 학습한다.

6 장, 맵리듀스 최적화: 맵과 리듀스 태스크 최적화를 위한 컴바이너와 압축 기술의 적절한 적용 예시를 살펴보고 다양한 애플리케이션 코드 최적화 기술을 학습한다.

7 장, 모범 사례와 권장 사항: 하둡 클러스터를 최대한 활용하기 위한 각종 장비와 소프트웨어의 체크리스트, 권장 사항, 튜닝 기법을 소개한다.

저자/역자 소개

저자 서문

맵리듀스는 데이터마이닝과 웹 인덱싱 같은 대규모 또는 데이터 집약적인 애플리케이션에 매우 중요한 병렬 처리 모델이다. 하둡은 맵리듀스의 오픈소스 구현체이며, 빠른 응답시간이 요구되는 클러스터 컴퓨팅 작업에 많이 활용되고 있다.

대부분의 맵리듀스 프로그램은 데이터 분석을 위해 작성되며, 작업 완료까지 오랜 시간이 걸린다. 많은 업체에서 요구된 시간 안에 완료가 가능한 대규모 데이터 심화분석 작업으로 활용한다. 성공적인 활용을 위해 맵리듀스의 I/O 효율성은 아직 개선이 필요한 부분이다. 경험에 의하면 미숙하게 구성된 하둡 클러스터는 맵리듀스 작업 성능을 크게 저하시킨다.

이 책에서는, 맵리듀스 최적화 문제의 개요, 결점 발견 방법, 하둡 클러스터 자원을 최대한 활용한 입력 데이터 처리 방법을 살펴보게 된다. 먼저 맵리듀스 내부 동작방식을 설명하고 성능 저하 원인을 고민해본다. 2 장부터는 하둡 지표와 성능 관련 툴을 이용하여 CPU와 메모리, 대규모 I/O 스토리지, 네트워크 전송과 같이 성능에 취약한 리소스를 분석한다.

이 책은 저자의 실제 경험을 바탕으로, 작업의 병목을 최대한 제거하고 운영 환경의 맵리듀스 작업 성능을 극대화 하는 방법을 단계별로 소개한다. 마지막으로 하둡 클러스터 튜닝의 모범 사례와 권장 사항을 다루고, 맵리듀스 템플릿 클래스를 소개한다.

저자 소개

칼레드 타니어(Khaled Tannir)

1980년부터 컴퓨터 관련 지식을 쌓기 시작했다. 전설적인 싱클레어(Sinclair) Zx81 기종과 코모도어(Commodore) 개인용 제품(Vic20, Commodore 64, Commodore 128D, Amiga 500)을 이용해 프로그래밍에 입문했다.

전자공학 학사학위를 마치고 시스템 정보설계학 석사학위를 졸업 논문과 함께 이수했다. 마지막으로 연구석사학위를 끝으로 교육인생의 종지부를 찍었다. 칼레드는 마이크로소프트 인증솔루션개발자(MCSD, Microsoft Certified Solution Developer)이며 20년 이상 소프트웨어 솔루션의 개발/구현과 기술 발표를 선도해왔다.

지금까지 프랑스와 캐나다의 다양한 회사에서 인프라 엔지니어와 시니어 개발자, 엔터프라이즈 솔루션 아키텍트로 경험을 쌓아왔고 현재는 개인 IT 컨설턴트로 일하고 있다.

마이크로소프트 닷넷(.NET)과 서버시스템, 오라클 자바 기술에 뛰어나며, 온라인/오프라인(인터넷/데스크탑) 애플리케이션 설계와 시스템 전환, 다국어 애플리케이션에 경험이 많다.

항상 새로운 주제로 연구를 진행해왔으며, 새로운 것을 배우고, 프랑스와 북아메리카, 중동 국가에서의 새로운 모험을 찾는다. 많은 서버와 모니터, 아두이노(Arduino), 넷두이노(Netduino), 라즈베리 파이(RaspBerry Pi), 닷넷 개지티어(.Net Gadgeteer) 같은 각종 오픈소스 전자기판, 윈도우폰, 안드로이드폰, iOS폰을 구비한 IT & 전자 연구실을 보유하고 있다.

EGC 2012(세계 데이터마이닝 포럼, 프랑스 보르도 대학)에 참여하여 ’클라우드 컴퓨팅 환경에서의 데이터 분산 최적화 기술’을 주제로 워크샵 세션과 발표를 진행한 바 있다. 이 발표의 목적은 클라우드 컴퓨팅 환경에서 k-means와 Apriori 데이터 마이닝 알고리즘을 이용한 최적화 방법을 정의하기 위함이었다.

『RavenDB 2.x Beginner’s Guide』(Packt 출판)의 저자이기도 하다. 현재 클라우드 컴퓨팅과 빅데이터 박사학위를 목표로 두고 있으며, 해당 기술을 배우는 데 열정이 넘친다.

야경과 풍경 촬영, 여행, 비디오 게임, 아두이노/닷넷 개지티어를 응용한 재미있는 도구 만들기를 즐긴다. 가족과 아내와 지내는 시간은 그 무엇보다 소중한 시간이다.

이메일 주소 contact@khaledtannir.net 로 연락할 수 있다.

옮긴이의 말

오픈 소스 하둡 맵리듀스를 설치해보고 실행해본 독자라면 특별한 튜닝 및 최적화 작업 없이도 사용 가능함을 알 것이다. 진입 장벽은 그리 높지 않지만 깊게 파고들수록 내부 구조가 더욱 복잡하다고 알려져 있는 프레임워크라서 그런지 가상서버 3~4대만 있으면 하둡 튜토리얼 사이트를 보고 뚝딱 설치할 수 있다. 심지어 개인 PC 한 대로도 설치가 가능하다. 설치가 완료되고 wordcount 예제를 실행해보면 “에이 별 거 아니네.”라는 생각이 든다. 하지만 이러한 빈 껍데기 상태의 맵리듀스 클러스터를 어디다 쓸 수 있을까? 데이터 크기가 조금만 늘어나거나 맵리듀스 애플리케이션 코드와 구성이 복잡해져도 잡 처리속도가 느려지고, 특정 단계에서의 진행률이 오랜 시간 지속됐던 경험이 많았다. 더욱 답답한 건 그 원인을 알 수 없는 것이다.

하둡은 오픈 소스인 만큼, 클러스터 구성 및 최적화는 사용자의 기술과 경험적인 영향을 많이 받는다. 맵리듀스의 경우 하위 인프라에 추가로 수행될 맵리듀스 애플리케이션과 데이터, 사용자의 특성까지 고려해서 구성하고 튜닝해야 한다.

이 책에는 이러한 내용이 고스란히 담겨있어, 하둡 맵리듀스 클러스터 운영자와 애플리케이션 개발자에겐 필수 지침서로 권장한다. 맵리듀스 클러스터 최적화와 애플리케이션 개발에 관한 다양한 체크리스트와 노하우가 담겨있어, 책상 책꽂이에 꽂아두고, 이 책의 내용을 습관처럼 숙지하고 응용한다면 소중한 자산이 될 것이다. 이 책 개요에 소개된 바와 같이, 하둡 경험이 없는 독자라도 쉽게 이해할 수 있도록 맵리듀스 프레임워크에 대한 전반적인 설명도 담겨있다.

옮긴이 소개

김현준

텍사스 오스틴 주립대학교 컴퓨터과학 학사학위를 이수했으며, 오스틴의 브랜딩 및 마케팅 업체에서 SEO와 웹 분석가로 활동했다. Rackspace의 클라우드 서비스를 처음 접하면서 클라우드와 분산 시스템에 관심을 가지게 됐다. 이후 한국 SK C&C 클라우드 컴퓨팅 팀에서 3년간 클라우드와 빅데이터 기술을 경험했으며, 현재는 쿠팡에서 빅데이터 기반 웹 분석, 고객 및 소비자 분석 업무를 맡고 있다. 주요 관심분야는 고객관리 및 분석과 빅데이터 기술의 접목이다.

목차

목차
  • 1장 맵리듀스의 이해
    • 맵리듀스 모델
    • 하둡 맵리듀스 개요
    • 하둡 맵리듀스 내부 구성
    • 맵리듀스 성능에 영향을 주는 요인
    • 정리

  • 2장 하둡 설정 개요
    • 하둡 설정 연구
      • mapred-site.xml 설정 파일
        • CPU 관련 설정
        • 디스크 I/O 관련 설정
        • 메모리 관련 설정
        • 네트워크 관련 설정
      • hdfs-site.xml 설정 파일
      • core-site.xml 설정 파일
    • 하둡 맵리듀스 지표
    • 성능 모니터링 툴
      • 척와의 하둡 모니터링
      • 강글리아의 하둡 모니터링
      • 나지오스의 하둡 모니터링
      • 암바리의 하둡 모니터링
    • 정리

  • 3장 시스템 병목 검출
    • 성능 튜닝
    • 성능 기준치 작성
    • 리소스 병목 검출
      • 메모리 병목 검출
      • CPU 병목 검출
      • 스토리지 병목 검출
      • 네트워크 병목 검출
    • 정리

  • 4장 리소스 취약점 발견
    • 클러스터 취약점 발견
      • 하둡 클러스터 노드 상태 확인
      • 입력 데이터 크기 확인
      • 대규모 I/O와 네트워크 트래픽 발생 확인
      • 병렬 태스크 부족 증상 확인
      • CPU 경합 발생 확인
    • 하둡 클러스터 규모 산정
    • 올바른 클러스터 구성
    • 정리

  • 5장 맵과 리듀스 태스크 성능향상
    • 맵 태스크 성능향상
      • 입력 데이터와 블록 크기의 영향
      • 작고 분할이 안되는 파일 처리
      • 맵 단계의 스필 빈도 줄이기
      • 맵 태스크 처리율 계산
    • 리듀스 태스크 성능향상
      • 리듀스 태스크 처리율 계산
      • 리듀스 실행 단계 성능향상
    • 맵과 리듀스 설정 튜닝
    • 정리

  • 6장 맵리듀스 태스크 최적화
    • 컴바이너 활용
    • 압축 활용
    • 적절한 Writable 자료형 사용
    • 스마트한 자료형 재사용
    • 맵퍼와 리듀서 코드 최적화
    • 정리

  • 7장 모범 사례와 권장 항목
    • 하드웨어 튜닝과 운영체제 권장 설정
      • 하둡 클러스터 체크리스트
      • 바이오스 튜닝 체크리스트
      • 운영체제권장설정
    • 하둡모범사례와권장사항
      • 하둡설치
      • 권장하둡튜닝
      • 맵리듀스 클래스 템플
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[ p58 5행 (개행오류) ]

hadoop jar hadoop-test.jar TestDFSIO -write -nrFiles 10
-fileSize 1000hadoop
jar
hadoop-test.jar TestDFSIO -read -nrFiles 10 -fileSize 1000
->
hadoop jar hadoop-test.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
hadoop jar
hadoop-test.jar TestDFSIO -read -nrFiles 10 -fileSize 1000