ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [빅데이터 전문가의 하둡관리] 3. 간단한 하둡 클러스터 생성 및 환경 설정
    Software Development/Big Data 2022. 9. 25. 20:19

     

    http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788931555752

     

    빅데이터 전문가의 하둡 관리 - 교보문고

    스파크 얀 HDFS 관리, 튜닝 및 보안 비법 대공개! | 빅데이터 전문가의 하둡 관리 데이터 양이 많은 페이스북같은 기업에서 서버의 트래픽이 몰리지 않고 사용자가 빠른 피드백을 받도록 하려면?

    www.kyobobook.co.kr

    위 책의 내용을 읽으며 공부한 내용을 요약 및 정리한 글입니다. 자세한 내용은 위 책에서 알 수 있습니다.

     

    이번에는 가상 분산 하둡 클러스터 설치 및 설정을 통해 하둡 클러스터를 적절하게 설치하고 설정하는 방법을 이해한다.

    이를 통해서 하둡 시스템의 환경 설정을 마스터해보자.

     

    하둡 배포판과 설치 타입

    하둡 배포판

    • AWS
    • 아파치 Bigtop: 하둡 패키지를 개발하고 테스팅하기 위한 프로젝트
    • 클라우데라
    • 호튼웍스: 아파치를 이용하는 호튼웍스 데이터 플랫폼이라는 100% 오픈소스 빅데이터 플랫폼 제공 HDP는 무료이며 수입의 대부분은 기부금으로 충당
    • IBM
    • 맵알: 하둡에 기반해 맵리듀스 프레임워크를 제공. HDFS나 맵리듀스 리엔지니어링을 통해 고성능 제공
    • 피보탈
    • 브이엠웨어
    • 완디스코

    하둡 설치 타입

    • 독립형: 모든 하둡 서비스는 하나의 JVM에서 동작하고 데몬은 없다. 데이터 저장 시에 HDFS가 아닌 로컬 파일 시스템을 사용. 자신의 코드를 실행하는 개발자에게 적합.
    • 가상 분산형: 실제 멀티노드 클러스터의 시뮬레이션. 실제 분산 클러스터처럼 모든 서비스를 설정할 수 있다. 모든 데몬은 단일 노드에서 동작.
    • 완전 분산형: 각각의 프로세스들을 위한 데몬이 있고, 데몬은 다중 서버를 통해 운영한다.

    가상 분산 하둡 클러스터 설정하기

    커널 매개변수의 수정

    관리자들이 리눅스 서버의 커널 설정을 기본값으로 두는 것은 흔한 일이지만, 설정을 조정해 클러스터의 성능을 높일 수 있다.

    아래는 하둡 클러스터에서 반드시 고쳐야 하는 리눅스 커널 매개변수 값들이다.

     

    파일의 한계값 증가

    클러스터에 있는 파일 디스크립터의 에러를 방지하기 위해 단일 사용자나 프로세스가 한 번에 가질 수 있는 파일 수의 한계를 상향 조정해야 한다. 초깃값은 128개이다.

    ulimit -Sn
    
    ulimit -Hn

    우리는 ulimits 한계값을 최소한 4096까지는 올려야 한다. /etc/security/limits.conf를 다음과 같은 값으로 수정한다.

    • soft nofile 4096
    • hard nofile 4096

    커널 설정을 변경하면, 다음 명령으로 변경된 세팅을 로드할 수 있도록 한다.

    sysctl -p

    다음 명령으로 새로운 설정이 반영됐는지 확인할 수 있다.

    sysctl -a
    설정 설명
    fs.file-mx=6815744 최대 파일 디스크립션 수
    fs.aio-max-nr=1048576 동시 발생하는 I/O 리퀘스트의 최대 수
    net.core.rmem_default=262144 네트워크 읽기 버퍼 기본 크기
    net.core.wmem_default=262144 네트워크 쓰기 버퍼 기본 크기
    net.core.rmem_max=16777216 네트워크 읽기 버퍼 최대 크기
    net.core.wmem_max=16777216 네트워크 쓰기 버퍼 최대 크기
    net.ipv4.tcp_rmem=4096 262144 16777216 네트워크 읽기 윈도 사이즈 최소, 기본, 최댓값
    net.ipv4.tcp_rmem=4096 262144 16777216 네트워크 쓰기 윈도 사이즈 최소, 기본, 최댓값

    디스크를 위한 noatime 세팅

    noatime, nodiratime 옵션을 설정하여 리눅스 파일 시스템에서 파일이나 디렉토리를 읽을 때 불필요한 쓰기 오퍼레이션을 막을 수 있고, 클러스터 성능이 좋아진다.

     

    디스크 I/O 속도 테스트

    디스크 성능을 측정할 때 hdparm -t 명령을 사용할 수 있다.

    hdparm -t /dev/sda1

    이 데스트에서 70MB/sec 이상의 속도가 나지 않으면 잠재적 문제가 될 수 있다.

     

    서버 BIOS 세팅 확인

    성능 최적화를 위해 디스크 드라이버의 IDE 에뮬레이션 기능을 끈다.

     

    NIC 결합

    NIC 연결을 통해 네트워크 처리량과 회복력을 늘린다.

     

    NTP 활성화

    클러스터의 시간이 동기화되어야 한다. /etc/sysconfig/ntpd 파일을 수정한 후 ntp를 사용할 수 있도록 해 모든 클러스터 노드가 이 네트워크 시계에 동기화되도록 해야 한다.

     

    DNS 확인

    IP 주소가 아니라 호스트네임을 사용해 클러스터 노드를 확인한다. 모든 노드가 DNS와 reverse DNS에 설정돼 있어야 한다.

     

    Swap 비활성화

    데이터노드는 swap을 비활성화.

     

    SELinux 비활성화

    7 ~10% 정도 클러스터의 성능을 저하시킬 수 있다.

     

    IPv6 비활성화

    네트워크 관련 하둡 설정 매개변수를 위한 값을 0.0.0.0으로 설정하고, 하둡 IPv6 주소에 바인딩한다.

     

    IP 테이블 비활성화

    하둡을 설치하는 동안, 네트워크 방화벽을 끄고 확인하는 것이 좋다.

     

    ulimits 설정

    limits를 설정해 사용자가 이용할 수 있는 클러스터 리소스를 제한한다. 파일 크기, 스택 크기, 처리의 우선순위와 같은 운영 시스템 자원에 대해 soft 설정, hard 설정을 할 수 있다.

     

    THP 간결화

    THP로 인해 하둡의 성능이 저하될 수 있다. 다음 라인으로 /etc/rc.local 파일에 디프레크먼트 기능을 비활성화하는 것이 좋다.

    echo 'never' > defrag_file_pathname(/sys/kernel/mm/transparent_hugepage/defrag)

     

    네트워크 연결 확인

    패스워드 없이 SSH 연결할 수 있어야 한다.

     

    하둡 설정하기

    하둡은 여러 개의 설정 파일을 이용한다. 각각의 설정 파일은 클러스터 오퍼레이션에 영향을 미친다. HDFS 오퍼레이션이나 얀 오퍼레이션 등에 영향을 미친다. 클러스터의 각 노드들은 설정 파일에 대한 복사본을 갖고 있다. 예를 들어, 워커 노드에서 데이터노드 데몬을 시작하면 하둡 관련 환경 설정을 위해 hdfs-site.xml 파일을 찾는 식이다.

     

    하둡 클러스터를 위한 설정 파일

    • 환경 설정 파일
      • hadoop-env.sh
      • mapred-env.sh
      • yarn-env.sh
    • 디폴트 설정 파일
      • core-default.xml
      • hdfs-default.xml
      • mapred-default.xml
      • core-site.xml
    • 사이트별 설정 파일
      • hdfs-site.xml
      • core-site.xml
      • mapred-site.xml
      • yarn-site.xml

    환경 설정 파일

    환경 설정 파일은 하둡 데몬이 실행되는 다양한 환경을 설정한다.

    • HDFS 데몬: 네임노드, 세컨더리 네임노드, 데이터노드
    • YARN 데몬: 리소스매니저, 노드매니저, 잡히스토리서버

    데이터노드와 노드매니저를 제외하고는 HDFS와 얀 데몬은 각 노드별로 하나만 실행된다.

     

    읽기 전용 디폴트 설정 파일

    읽기 전용 디폴트 설정 파일은 코어 하둡, 얀, HDFS, mapred에 적용되는 기본 설정을 담고 있다. 이 파일을 수정할 수 있는 파일이 아니다. 사이트 설정 파일로 설정해야 한다. 

    디폴트 파일의 목표

    • 모든 사용 가능한 설정 매개변수들을 명시
    • 설정 매개변수의 디폴트 값을 명시

    사이트 설정 파일

    클러스터의 동작을 변경할 수 있는 많은 매개변수가 이 파일에 포함돼 있기 때문에 사이트 설정 파일은 모든 하둡 환경에 가장 중요한 설정 파일이다.

    • core-sitel.xml: 코어 하둡 설정
    • mapred-site.xml: 맵리듀스 설정
    • hdfs-site.xml: HDFS 설정
    • yarn-site.xml: 얀 설정

    이외의 하둡 관련 설정 파일

    log4j/properties: 로깅 설정

    hadoop-metric.properties: 하둡 메트릭스 설정

    allocations.xml: Fair Scheduler 설정

    capacity-scheduler.xml: Capacity Scheduler 설정

    include, exclude 파일: 어떤 호스트를 하둡 클러스터에 포함시키고 제외시킬지를 명시하는 데 사용

     

    설정 파일 간의 설정 우선순위

    hdfs-site.xml과 yarn-site.xml과 같은 파일만이 아니라 JobConf 또는 Job 객체를 통해 지정할 수 있다. 데이터 노드나 클라이언트에 있는 hdfs-site.xml, yarn-site.xml 같은 파일을 사용할 수도 있다.

    1. JobConf나 Job 오브젝트에 명시한 설정.

    2. 두 번째 우선순위는 클라이언트 있는 mapred-site.xml 같은 설정 파일.

    3. 세 번째는 데이터노드의 설정 파일에 있는 설정 매개변수.

    4. 앞선 순위의 설정 과정에서 값이 설정되지 않은 매개변수값이 있다면, mapred-default.xml 파일의 설정값이 적용.

     

    특정 매개변수를 변경하고 싶지 않다면, final 태그를 사용해 명시할 수 있다.

    <property>
    	<name><arttriute></name>
    	<final>true</final>
    </property>

    설정값 우선 순위

    1. 애플리케이션 코드

    2. 커맨드라인 코드

    3. 클라이언트 XML 파일

    4. 노드에 있는 XML 파일

    5. 디폴트 XML 파일

     

    클러스터의 모든 데이터노드의 설정을 변경하려면, 네임노드는 클러스터의 모든 데이터노드를 위한 설정 파일을 갖고 있다. 설정을 변경하면 데이터노드에 변경 사항을 적용하기 위해 클러스터에 있는 모든 데이터노드 데몬들 재시작해야 한다. 

     

    변수 확장과 설정 매개변수

    설정 매개변수의 값으로 설정한 값은 항상 내부 변수들로 계산.

     

    하둡 데몬 환경 설정

    직접 다음 파일에 포함돼 있는 하둡 환경 변수 설정해 하둡의 주요 데몬 프로세스 환경을 변경할 수도 있다.

    • hadoop-env.sh
    • mapred-env.sh
    • yarn-env.sh

    하둡 환경 설정하기

    hadoop-env.sh 파일에서 하둡에 특화된 환경 변수들을 설정해야 한다. JAVA_HOME, HADOOP_HEAPSIZE, HADOOP_LOG_DIR, HADOOP_CONF_DIR

     

    core-site.xml 파일로 코어 하둡 속성 설정하기

     

    기본적인 HDFS 매개변수 설정하기

    • fs.dafaultFS는 네임노드 서비스를 위해 디폴트 파일 시스템의 이름과 호스트와 포트 정보를 명시
    • hadoop.http.staticuser.user 값을 이용해서 디폴트 사용자명을 지정

    이외의 유용한 매개변수

    • fs.trash.interval: HDFS에서 삭제해 쓰레기통에 들어가 있는 파일을 얼마나 보관할지를 결정.
    • hadoop.tmp.dir: 로컬 파일 시스템과 HDFS 모두에 임시 디렉토리를 지정.

    mapred-site.xml파일로 맵리듀스 설정하기

    yarn-site.xml로 얀 설정

    • yarn.nodemanager.aux-services: 노드매니저에게 mapreduce.shuffle이라는 보조 서비스를 실행할 필요가 있다는 것을 알려주는 역할을 한다.
    • yarn.nodemanger.aux-services.mapreduce.shuffle.class: 맵리듀스가 셔플 기능을 수행하는 방법을 지정.

    hdfs-site.xml 파일로 HDFS 설정하기

    네임노드, 데이터노드, 세컨더리 네임노드와 같은 모든 HDFS와 관련 하둡 컴포넌트들을 제어

    새로운 하둡 클러스터 운영하기

    분산 파일 시스템 포맷하기

    HDFS를 사용하기 전에 반드시 포맷이 선행돼야 한다. 포맷은 한 번만하면 된다.

     

    hdfs 계정으로 로그인한 후에 포맷을 한다.

     

    얀 서비스 시작하기

    yarn 계정으로 로그인해 얀 서비스를 시작.

    • 리소스매니저
    • 노드매니저
    • 잡히스토리서버

    댓글

Designed by Tistory.