분류

2020년 2월 23일 일요일

빅알자 4.빅데이터 처리 성능. 스토리지 전략

빅데이터나 데이터나 시스템의 처리 성능은 대게 같은 곳에서 시작합니다. 처음은 컴퓨팅 파워. 즉 하드웨어 관점입니다. 이번엔 스토리지 전략에 대해 이야기해보겠습니다. 빅데이터를 저장만 하는 측면에서는 필요가 없고, 분석하고자 하는 시스템에서 필요한 이야기 입니다.

1. 하드웨어 성능 

흔히 컴퓨팅 파워라고 하는 것은 하드웨어의 어떤 부분에서 어떤 성능이 나오느냐를 평가하는 각 부분의 지표가 있지만 데이터 관점에서의 성능은 어떤 속도로 데이터를 읽어드리고, 처리하고 기록하느냐의 관점입니다.

즉, 조회 성능, 정렬 및 그룹화 성능, 기록성능 등이 있겠지요. 뭐 트랜잭션 처리 성능을 평가하기도 합니다.

컴퓨터 구성품 중 속도에 영향을 미치는 항목

그리고 이러한 성능들의 근원은 cpu, disk, memory, bus, network의 5가지 장비의 성능에 기인합니다. 이러한 성능들은 각각의 단위를 갖고 있고, 그 단위 중 일부는 주파수로 공개되고 있어 용량으로 환산할 수 없기에 공개된 기록을 기반으로 각각의 속도에 대해 알아보겠습니다.

데이터 전송 속도 비교

가) 하드웨어의 현재 공개된 최고 쓰기 속도 

장치 초당 읽기/쓰기 속도
CPU 2344.8GB/s
SSD 1.25GB/s
MEMORY(MCDRAM) 460GB/s
BUS 460GB/s
NETWORK 12GB/s

위 표에서 가장 주요하게 봐야 할 점은 SSD 즉 데이터 저장소의 속도가 가장 늦다는 것 입니다. (보편적으로는 500MB/s밖에 나오지 않습니다. ) 가장 속도가 늦는 장치가 데이터를 저장하고 있으니, 보편적인 데이터의 조회 속도는 저장소의 최저 속도가 기준이 될 수밖에 없습니다. 데이터가 메모리에 적재되지 않는 이상 조회도 연산도 할 수 없습니다. 

과거의 RDBMS에서는 이 문제를 해결하고자 메모리를 비대화 시켜 자주 쓰는 데이터는 메모리에 올려놓고, 찾아서 쓰는 방식을 선택했습니다. (HDD 120mb/s가 최고이던 시절) 그리고 스토리지 전략을 통해서 한 번에 여러 노드에서 데이터를 읽는 프로세스를 생각해냈습니다. 이 전략은 지금도 유효합니다. 

2. 스토리지 전략


앞서 설명했던 스토리지 전략의 하나인 RAID입니다. 여러 개의 디스크를 묶어 하나의 디스크처럼 사용할 수 있게 하는 기술이며, 파일 하나를 각각의 디스크에 여러 조각으로 분산시켜 각각의 디스크에서 병렬로 읽게 만들어 읽기 성능을 비약적으로 향상시키는 장치입니다. 

각각의 DISK에서는 500MB/s의 작은 속도밖에 내지 못하지만, 저장 파일을 각 노드에 분산하고, 병렬로 읽고, 결합하여 디스크 하나에서 읽는 속도보다 수배의 속도가 나옵니다.

정확한 원리를 바탕으로 구성된 스토리지 클러스터는 데이터 접근 성능을 크게 향상 시켜 빅데이터의 원활한 처리의 밑거름이 될 것입니다. 

3. 왜 스토리지 전략이 중요한가? 

물론 메모리에 주요 데이터를 올려서 처리하는 메모리 기반 프로세스는 언제고 필요한 전략입니다. 디스크는 메모리를 따라잡을 수 없으니까요. 하지만 스토리지 전략이 가장 기초가 돼야 하는 이유는 메모리를 아무리 늘렸다 한들 빅데이터 전체를 커버 할 수는 없기 때문입니다. 

예를 들자면 이런 겁니다. 가령 센서를 통해서 데이터가 주기적으로 발생한다고 칩시다. 

장치 ID와 특정 값을 발생시키는 태그유형 예 

이 센서 데이터가 1초마다 발생 시 일일 발생 건수는 86,400건 CSV 파일로 치면 약 2MB 매우 작은 양이지만, 연간으로 치면 750MB. 단일 SSD에서 1초에 조회할 수 있는 용량을 넘어버립니다. 그리고 이런 센서는 공장 하나에 수백~ 수천 개가 있기 때문에 연간 누적 데이터양은 100GB를 초월하게 되지요. 저희는 1000개가 넘어서 약 12Tera의 데이터가 쌓입니다. 

100개만 있다고 해도 71GB의 용량을 갖게 됩니다. 이 데이터에 대한 연간 집계를 내려면 데이터를 메모리에 올리는 것도 단일 SSD에서는 142초가 걸리게 되며, 메모리 용량이 충분치 않을 경우 MEMORY와 DISK의 SWAP이 일어나면서 속도는 더 지연되게 됩니다.

하지만 레이드를 통한 분산저장이 되어있을 경우 위 그림과 같이 4GB를 초당 로드한다면 17초로 8.2배의 로드 속도 향상이 발생합니다. SWAP은 동일하게 일어나더라도 읽고 쓰는 속도가 커버할 수 있는 크기가 되죠. 그리고 속도는 더욱 향상될 수 있습니다.

그리고 이 구성을 클러스터 형태로 더 크게 구성할 경우 소수점 이하의 시간 내에 로드가 가능해집니다.

최근 빅데이터 플랫폼 테스트베드의 기준이 되어가고 있는 아마존 AWS의 경우 이러한 처리들이 이미 되어있기에 실제 하드웨어를 구매하지 않고도 표준화 된 성능 테스트를 수행할 수 있기 때문입니다.

저장만 하는 관점에서는 전혀 필요 없지만, 분석이 필요한 시점에는 가장 필요한 프로세스가 됩니다. 

이상 스토리지 전략은 이 정도로 마치겠습니다. 
읽어주셔서 감사합니다. 

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

댓글 없음:

댓글 쓰기