분류

2020년 3월 8일 일요일

빅알자 5.빅데이터 처리 성능. 네트워크 전략

개요 

빅데이터 처리에 스토리지와 네트워크 전략이 필요한 이유는 어디까지나 빅데이터를 쌓아두던 기존 관점이 아닌 활용하기 위해 다양한 분석이 필요해지는 시점에서 하드웨어 성능이 따라주지 못하는 현상을 가장 많이 보고 있기 때문입니다.

빅데이터의 초기 수집에는 일반 PC급의 성능으로 충분히 모든 일을 진행할 수 있습니다. 예를 들어 초당 1회씩 시그널을 보내는 장비가 10만개 있다 하더라도 하둡 클러스터 5개정도면 저장하는데 지장도 없고, 카프카 멀티큐도 1개면됩니다.

하지만 Petabyte 급의 성능은 다릅니다. 일반적인 시스템 구성에서 하둡 클러스터를 아무리 늘린다 한들 성능이 나오지 않습니다.

http://sortbenchmark.org/
위 사이트를 확인해보면 빅데이터의 정렬 성능을 밴치마크 해놓은 자료를 볼 수 있습니다.

그중 눈에 띄는 것은

Tencent Sort
Apache Spark
Hadoop
이 세 가지인데요 각각의 하드웨어 성능에 대해 이야기 해보겠습니다.

1. 정렬 성능 이란 ? 

정렬 성능은 특정 기간의 데이터 혹은 전체 기간의 데이터를 기준으로 데이터의 순위를 매기는 프로세스 입니다. 즉 전체 데이터를 메모리에 올려 순서를 매긴 후 결과를 제공하는 일입니다.

따라서 적절한 정렬 메모리가 확보되지 못한다면 기존 시스템에서 성능 문제가 발생하곤 했습니다. 그런데 빅데이터? 에서의 적절한 성능은 어느 정도 일까요?

Petabyte는 현존하는 어느 컴퓨팅 시스템에서도 한 번에 메모리에 올릴 수 없을 만큼 거대한 양 입니다. 이것이 분할되어 있다 하더라도 문제는 여전히 나아지지 않습니다.

일반적인 PC의 메모리는 많아봐야 32GB 일 것이고, 클러스터를 10대 한다고 해도 320GB, 클러스터를 100대 한다면 32TB, Petabyte에는 도저히 미치지 못합니다. 따라서 연산할 수 없는 데이터는 디스크에 메모리를 내렸다가 다시 올리는 SWAP 이라는 행위를 반복하면서 정렬을 할 수 밖에 없습니다. 디스크 입출력이 반복되면서 IO 부하가 발생하고, 이 때문에 다른 프로세스를 처리하지 못하는 상황이 발생합니다.

그래서 스토리지 전략과 네트워크 전략이 필요합니다.

2. 필요한 장비의 속도

Petabyte를 1초 만에 처리하는 시스템은 현재 어디에도 없습니다. 있다면 자랑하려고 sortbenchmark.org에 등록했을 것 입니다. 검증된 결과를 기준으로 시스템의 도입 여부를 결정하기 때문에 팔기 위해서라도 등록을 하게 됩니다.

탐구해볼 시스템의 성능은 아래와 같습니다.

Tencent Sort(2016) 성능 비고
성능 44.8TB/min
cpu 2 OpenPOWER 10-core POWER8 2.926 GH
memory  512 GB
disk 1.2TB NVMe SSD 1 TB: 3,500/1,000 MB/s
8 TB: 3,500/2,600 MB/s
network 100Gb Mellanox ConnectX4-EN 12 GB/s
병렬 nodes 512
Apache Spark(2014) 성능 비고
성능 4.7TB/min
cpu 2.5Ghz Intel Xeon E5-2670 v2
memory  244GB 
disk 8x800 GB SSD 1,750/1,750 MB/s
network 25 Gbps (3GB/s) 3GB/s
병렬 nodes 207 
Hadoop(2013) 성능 비고
성능 1.42TB/min
cpu 2 2.3Ghz hexcore Xeon E5-2630
memory  64GB 
disk 12x3TB disks 120  MB/s
network 10 Gb/s 1.2GB/s
병렬 nodes 2100

성능에 대한 해석을 해보자면 비고를 보시면 간단합니다. Disk와 network 속도에 의해 좌우되는 것이 명확하게 보입니다.

맨 밑에 하둡이 야후 시스템입니다. 딱 봐도 노드만 늘리면 되겠지 하고 만든 것 같습니다. 2013년 이니 그럴 만 합니다.

네트워크 성능을 보면 1.2GB/s와 3GB/s의 성능 차는 정확하게 3배가 납니다. 즉 병렬 노드의 네트워크 성능이 데이터 크기를 따라가지 못하고 있다고 생각하시면 됩니다.

그리고 1등인 tencent 의 경우 네트워크는 물론 디스크까지 성능을 잘 끌어주고 있습니다. 2016년도 당시 최고 시스템이라고 봐도 과언이 아닙니다. Mellanox 스위치의 경우 현재 200Gb/s를 지원해주는 것으로 알고 있습니다. 약 3200 만원입니다.

spark는 아마존 EC2를 사용한 환경입니다. 아마존의 스펙 중 네트워크 부분은 클라우드이기 때문에 처리속도를 저 정도로 해둔 것 같습니다.

1위인 tencent 시스템과 spark의 성능 차를 보면 좀 더 명확히 보입니다. 디스크의 읽기 쓰기 속도가 받쳐준 이후는 네트워크 속도가 성능을 좌우하게 됩니다.

즉. 기술이 어쩌고, 인 메모리 프로세스가 어쩌고 이야기하기 전에 하드웨어의 성능이 제대로 갖춰지지 않으면 Petabyte처리는 무슨 기술을 써도 느려터지게 쓴다는 말입니다. 2013년 하둡 클러스터 환경을 가지고 Petabyte를 처리하는 것은 드루이드 할애비가 와도 안 될 일입니다.

3. 왜 이런 현상이 나타나느냐? 

뭐 지난번에도 언급했지만 연산이라는 것은 메모리에 올리고 전송하고 저장하는 일의 반복이기 때문입니다.
클러스터 노드가 있는 환경의 처리 순서는 대략 이렇습니다.

1. 마스터가 슬레이브에 데이터 요청
2. 슬레이브가 데이터 파일을 로드, 전송
3. 마스터가 메모리에 데이터를 로드, 초과 데이터는 디스크에 메모리 형태로 저장
4. 현재 메모리를 정렬하고 결과를 디스크 저장
5. 디스크에서 정렬되지 않은 메모리 데이터 로드

4번 5번을 디스크 스왑이라고 하며 이 부분 때문에 디스크의 속도가 빠른 것이 중요합니다. 솔직히 메모리 속도까지 올라와줬으면 좋겠지만.. PCI-E5가 나와야 한다고 합니다.

그리고 네트워크 성능은 디스크가 500MB/s이상을 내며 단일 노드 라면 10Gb/s로 충분하지만 다중 노드라면 100Gb/s 이상의 속도는 나와야 합니다.

스위치는 개별 노드에 100Gb/s 속도를 내는 것 같이 이야기를 결론적으로 마스터가 받아드릴 수 있는 데이터 량은 스위치 최대 속도 단일라인과 다른 게 없습니다. 따라서 마스터 장비의 네트워크는 다중화 되어야 하며 이런 전체적인 조화를 만들어내야 Petabyte 데이터의 분석은 비로소 가능해집니다.

이상 네트워크 전략은 이 정도로 마치겠습니다. 
읽어주셔서 감사합니다. 

빅데이터 개념잡기 '빅알자'는 여러 페이지로 이루어질 것 입니다.

댓글 없음:

댓글 쓰기