On Premise 환경에서 Hadoop Cluster Scale Out 하기전 서버 검토

Q·2023년 9월 30일
0

개요

  • 운영하던 Hadoop Cluster의 메모리, 디스크 용량 등의 리소스 부족으로 신규 서버를 추가해야하는 상황이 발생하였다.
  • On Premise 환경에서 어떻게 추가할 서버의 성능을 검토하는지 자세하게 알아본다.

✅ 하드웨어 성능 측정

  • 하드웨어(cpu, disk, network) 의 성능을 측정한다.
  • 아래는 성능 측정 과정의 예시를 보여준다.
  • 아래 절차대로 하드웨어 성능 측정을 진행한다.

✅ cpu 성능 측정

< 목적 >
cpu 가 99% 까지 사용될 때 서버에 이슈가 있는지 확인하기 위함.
여기서 이슈란, ssh 원격 접속이 느려지는 이슈를 의미한다.
(cpu 가 과도하게 사용되어도 하둡 서비스엔 이상이 없다고 함)
그래서 cpu 가 99% 사용되는 동안 ssh 접속이 원활하게 되는지 확인한다.
< 방법 >
cpu 는 dd 라는 명령어를 이용하여 성능을 측정한다.
cpu 를 99%까지 사용하기 위해 의미없는 랜덤 데이터를 생성 후 gzip 으로 압축하는 작업을 진행한다.
작업이 진행중인 동안 ssh 접속을 시도해본다.
위 테스트를 최소 3 번 이상 수행한다.
< 성능 측정 스크립트 >

#!/bin/bash
for i in $(seq 1 ${NUM})
    (dd if=/dev/urandom bs=1M count=1000 | gzip > /dev/null)&
ps -ef | grep "dd if=/dev/urandom"

실행 : 
• ./cpu_run.sh 50

해설 :
• 스크립트 실행시 NUM 값을 받는다. NUM 값을 넣지 않으면 5가 된다.
• NUM 값 만큼 for문이 동작한다.
• 1M 짜리 random number 파일을 1000개 만들어 gzip 으로 압축하고 버린다.
• 위의 작업이 동시에 background 로 NUM 번 만큼 동작한다.
• ps -ef 를 통해 실행한 작업이 실제 돌고있는지 확인한다.
• mpstat 명령어를 이용하여 1초당 갱신되는 cpu 사용률을 확인한다(총 30번 갱신) |

✅ disk 측정

< 목적 >
disk 자체가 정상적인지 확인 
< 방법 >
disk 성능을 보기 위해 dd 명령어를 사용한다.
throughput 이 100mb 이상인지 확인한다.
disk 상태를 보기 위해 smartctl 명령어를 사용한다.
status 가 OK 인지 확인한다.
OK 가 아니라면 아래 링크에서 상태를 확인한다.
https://ko.wikipedia.org/wiki/S.M.A.R.T. 
< disk 성능 측정 스크립트 : dd >

#!/bin/bash
for disk in $(df | grep '/data' | sort | awk '{print $6}')
    sudo mkdir ${DIR}
    for i in $(seq 1 ${NUM})
        (sudo dd if=/dev/zero bs=1M count=1000 of=${DIR}/${i} oflag=direct 2>> ./write_result)
    for i in $(seq 1 ${NUM})
        (sudo dd if=${DIR}/${i} bs=1M of=/dev/null iflag=direct 2>> ./read_result)
    cat ./write_result | grep "MB/s" | awk '{sum+=$8; cnt++} END {print sum/cnt}'
    cat ./read_result | grep "MB/s" | awk '{sum+=$8; cnt++} END {print sum/cnt}'
    rm ./write_result
    sudo rm -r ${DIR}
done

실행 : 
• ./disk_dd_run.sh

해설 :
• 스크립트 실행시 NUM 값을 받는다. NUM 값을 넣지 않으면 5가 된다.
• NUM 값 만큼 for문이 동작한다.
• df 명령어를 통해 디스크의 path 를 가져오고 그 개수에 맞게 for 문을 동작한다.
• 1M 짜리 dump 파일을 1000개 만들어 DIR 에 쓰면서 쓰기 성능을 측정한다.
• 위에서 쓴 DIR 내 파일들을 읽으면서 읽기 성능을 측정한다.
• 쓰기/읽기 측정 결과는 write_result, read_result 에 쓴다.
• awk 를 이용하여, 측정 결과를 바탕으로 평균을 구한다.
• 좀 더 자세한 설명 : https://soft.plusblog.co.kr/48 
< disk 상태 측정 스크립트 : smartctl >

#!/bin/bash
do
done

실행 : 
• ./disk_smartctl_run.sh

해설 :
• df 명령의 결과 중 /data 가 포함된 행만 추린다.
• 그 중 첫번째 column 의 값만 가져오고 그 값을 기준으로 for 문을 돌린다.
• smartctl 의 인자값으로 넣어준 후 grep 을 통해 smartctl 의 status 결과값만 확인한다. 

✅ network 성능 측정

< 목적 >
네트워크의 Latency 와 Throughput 을 측정한다.
Latency 가 크면 Hadoop 성능에 영향을 미치게 된다.
10 ms 내로 동작하는지 확인한다.
< 방법 >
Latency 는 ping 을 이용한다.
ping 명령어는 성능 측정의 대상이 되는 신규 서버에서 실행한다.
같은 랙(72-76)에 있는 서버들에 ping 을 보내고, 다른 랙(-71 혹은 master, admin)에 있는 서버들에 ping 을 보낸다.
총 5번 ping 을 주고받고, avg 결과를 본다.
throughput 테스트는 스킵한다.
테스트를 진행하면 해당 서버가 사용하는 네트워크 선을 사용하는 다른 서버에 영향을 줄 수 있기 때문.
< ping 명령어 >

ping -c 5 [ping 을 받을 서버] | tail -n1

실행 : 
• ping -c 5 hostname1 | tail -n1 # 외부 랙
• ping -c 5 hostname2 | tail -n1 # 내부 랙
• ping -c 5 hostname3 | tail -n1 # 내부 랙

랙이 내부인지, 외부인지는 https://asset2.zuminternet.com/manager/team/11493/ 으로 확인
profile
Data Engineer

0개의 댓글