카이도스의 Tech Blog

Hadoop 클러스터 - 스터디 본문

Hadoop

Hadoop 클러스터 - 스터디

카이도스 2024. 1. 15. 20:30
728x90
반응형

하둡 관련 설명

더보기
  • 설정값
    • hdfs-site.xml : 하둡 파일시스템(HDFS)과 관련된 환경 정보를 설정
    • hadoop-env.sh : • Hadoop을 실행하는 쉘스크립트 파일, JDK Path, Classpath, 데몬 옵션 등 설정
    • core-site.xml : HDFS와 Mapreduce에서 공통적으로 사용할 정보들을 설정, hdfs-site와 mapred-site의 공통 설정 부분
    • mapred-site.xml : MapReduce의 어플리케이션 정보를 설정
    • yarn-site.xml : Resource Manager, Node Manager 정보를 설정
    • yarn-env.sh : YARN을 실행하는 쉘스크립트 파일
  • 프로세스
    • QuorumPeerMain : 주키퍼
    • NodeManager : 하둡 인프라 관리
    • JournalNode : edits 정보(즉, 파일 시스템의 journaling 정보)를 저장하고 공유하는 기능을 수행하는 서버
    • DFSZKFailoverController : NameNode 모니터링, active 죽으면 standby를 (JournalNode의 Editlog모두 읽은 후) active로 전환 Zookeeper 정보 갱신
    • ResourceManager : 전체 클러스터에서 가용한 모든 시스템 자원을 관리
  • yarn-site.xml 설정값
# Memory 관련 옵션
< yarn.nodemanager.resource.memory-mb >
이 옵션은 각 노드 매니저가 컨테이너 할당에 사용할 메모리 크기를 나타낸다.
서버마다 yarn 에서 관리하고 있는 노드 매니저가 하나씩 있는데(서버 당 하나씩 총 20개),
이 노드 매니저가 container 를 만들 때 사용할 수 있는 메모리 크기를 말한다.
예를 들어, 위의 값이 20gb 라면,
1gb 짜리 container 를 20개 만들 수 있고,
5gb 짜리 container 4개를 만들 수 있다.

우리의 가정에서는 하나의 서버에 128gb 메모리가 있으므로
yarn.nodemanager.resource.memory-mb 값을 128gb 로 잡아두면
하나의 서버가 갖는 모든 메모리를 yarn 이 사용하게 한다는 의미가 된다.

하지만 그렇게 하지 않는데, 이유는 서버가 yarn 말고 돌려야 할 다른 소프트웨어들이 많기 때문이다.
예를 들면 서버 os.
따라서 하나의 서버의 전체 메모리 크기에서 적정 양만큼 제외한 값을 container 만드는 데 사용할 수 있도록
yarn.nodemanager.resource.memory-mb 값을 지정한다.
예를 들어 서버 하나의 크기가 128gb 니까, 8gb 는 os가 돌아갈 메모리로 남겨두고 남은 120gb 를
yarn.nodemanager.resource.memory-mb 값으로 지정하는 것이다.

yarn.nodemanager.resource.memory-mb의 default 값은 8gb이다.

< yarn.scheduler.maximum-allocation-mb >
이 옵션은 container 에 할당할 수 있는 최대 memory 크기를 의미한다.
기본값은 8gb 이다.
기본값 8gb 가 적용되었다는 상황을 가정해보자.
예를 들어 spark 에서 어떤 app 을 구동시키는 데 6gb memory 가 필요하다면,
8gb 보다 작기 때문에 6gb 만큼 container 를 만들어서 app 에 제공할 수 있다.
만약 app 을 구동시키는 데 10gb memory 가 필요하다면,
8gb 보다 크기 때문에 container 를 만들어서 제공할 수 없어 에러를 내보낸다.

< yarn.scheduler.minimum-allocation-mb >
이 옵션은 container 에 할당하는 memory 의 단위를 의미한다.
기본값은 1gb 이다.
기본값 1gb 가 적용되었다는 상황을 가정해보자.
예를 들어 spark 에서 어떤 app 을 구동시키는 데 800mb memory 가 필요하다면,
1gb container 를 만들어서 app 에 제공한다.
왜냐하면 1gb 가 memory 를 제공하는 단위이기 때문이다.
만약 app 을 구동시키는 데 1.9gb memory 가 필요하다면,
2gb container 를 만들어서 app 에 제공한다.
만약 app 을 구동시키는 데 2.1gb memory 가 필요하다면,
3gb container 를 만들어서 app 에 제공한다.
# CPU 관련 옵션
< yarn.nodemanager.resource.cpu-vcores >
이 옵션은 각 노드 매니저가 컨테이너 할당에 사용할 cpu 코어 개수를 의미한다.
노드 매니저가 container 를 만들 때 사용할 수 있는 코어 개수를 말한다.

예를 들어 코어 개수가 20개라면,
1코어짜리 container 20개를 만들 수 있고,
2코어짜리 container 10개를 만들 수 있겠다.
기본 값은 8이다.

< yarn.scheduler.maximum-allocation-vcores >
이 옵션은 container 에 할당할 수 있는 최대 viertual cpu 코어 수를 의미한다.
maximum 코어 수가 10이라는 상황을 가정해보자.

예를 들어 spark 에서 어떤 app 을 구동시키는 데 5개 코어가 필요하다면,
10개 보다 작기 때문에 5개 코어 만큼 container 를 만들어서 app 에 제공할 수 있다.
만약 app 을 구동시키는 데 12개 코어가 필요하다면,
10개 보다 크기 때문에 container 를 만들어서 제공할 수 없어 에러를 내보낸다.

< yarn.scheduler.minimum-allocation-vcores >
이 옵션은 container 에 할당하는 virtual cpu 코어의 단위를 의미한다.
minimum 코어 수가 3이라는 상황을 가정해보자.

예를 들어 spark 에서 어떤 app 을 구동시키는 데 1개의 코어가 필요하다면,
3개 코어 만큼의 container 를 만들어서 app 에 제공한다.
왜냐하면 3개가 cpu 를 제공하는 단위이기 때문이다.

만약 app 을 구동시키는 데 4개 코어가 필요하다면,
6개 코어 만큼의 container 를 만들어서 app 에 제공한다.

 

728x90
반응형
Comments