카이도스의 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