초록 |
연구개발 목표 본 과제의 최종목표는 기존 빅데이터 에코시스템의 성능을 크게 뛰어넘는 초고성능 빅데이터 에코시스템을 개발하는 것이다. 이 빅데이터 에코시스템은 서로 다른 CPU와 메모리, 디스크, 네트워크 등의 이기종 서버와 클러스터를 갖춘 이기종 데이터센터에서 스스로 Heterogeneity를 자가 인식(self-awareness)하고 적응(self-adaptation)하여, 최적의 성능을 발휘하는 고속 빅데이터 플랫폼 및 시스템 소프트웨어들로 구성된다. 연구개발 내용 본 과제는 기존 하둡 에코시스템에 고성능 컴퓨팅 기술을 접목하여 하둡 에코시스템의 성능을 향상시키는 방향과, 고성능 컴퓨팅에 기반한 새로운 빅데이터 처리시스템을 개발하여 하둡 에코시스템을 고속화하는 두 개의 큰 방향으로 진행 중이다. [엔진 연구] 우선 고성능 컴퓨팅에 기반한 새로운 빅데이터 처리 시스템은 메모리를 최대한 활용하여 빠른 데이터 처리를 가능하게 한다. 최근의 클러스터 환경에서는 로컬디스크에서 데이터를 읽는 것보다 원격 메모리에서 데이터를 읽는 것이 더 빠르다는 것이 알려져 있다. 기존의 HDFS 기반 빅데이터 에코 시스템들과 달리 본 과제에서 개발하는 빅데이터 처리 시스템은 데이터의 로컬리티보다 로드밸런스를 더 고려하고 대형 클러스터의 방대한 분산 메모리를 최대한 활용하도록 설계하였다. 1) 1차년도에 엔진팀은 분산 공유 메모리를 최대한 활용할 수 있도록 분산 인메모리 키-밸류 스토어를 개발하였으며, 이 키-밸류 스토어의 컨텐트를 고려하는 태스크 스케줄러를 개발하였다. 이러한 분산 인메모리 키-밸류 스토어는 Spark의 RDDS와는 달리 사용자가 데이터를 캐싱할 것인지를 결정하는 방식이 아니라 OS의 버퍼 캐시와 같이 자체적으로 시스템이 최근에 사용된 데이터를 캐싱하는 방식을 사용한다. Spark의 RDDS는 인풋 데이터와 중간 결과물을 캐싱하는 용도로 사용하는데, 본 과제에서 개발한 분산 인메모리 캐시는 OS의 버퍼 캐시와 같이 동적으로 캐시된 데이터가 변화하는 것을 특징으로 한다. Spark와는 달리 중간 결과물은 디스크에 저장하는 것을 원칙으로 하여 시스템이 죽을 경우에, 디스크에 저장된 중간 결과물을 사용하여 복구할 수 있도록 구현하고 있다. 2) 이러한 분산 캐시 환경에서 맵리듀스 프레임워크를 개발하였고 기계학습을 위한 반복 작업을 지원하도록 프레임워크를 개발하였다. 이 프레임워크는 Java로 구현하지 않고 C++ 언어로 구현함으로써, 데이터를 전송할 때 Serialization과 Desrialization을 하지 않고, 태스크가 실행될 때 JVM 컨테이너를 생성하지 않아,성능을 크게 향상시킬 수 있었다. 빅데이터 처리 성능 향상 목표인 Hadoop 대비 60배 성능 향상을 달성하였고 반복작업/기계학습 응용의 1차년도 목표인 Hadoop 대비 60배 성능 향상도 달성하였다. 응용 패턴 통합 지원인 배치+반복 작업을 현재 지원하여 목표를 달성하였다. 3) 또한, C++ 언어 기반 프레임워크 상에서 SQL 쿼리를 지원하기 위해 DB 엔진을 현재 구현하는 중이다. 이 SQL 엔진은 복잡 쿼리 처리 성능 향상을 위하여 기존의 Row 메이저 분할 혹은 Column 메이저 분할 방식이 아닌 Value 메이저 분할방식을 사용하는데, Value 메이저 분할 방식을 사용함으로써 데이터 셔플을 최소화하고 성능을 개선하고자 한다. 4) 또한 빅데이터의 중요한 응용 중 하나인 그래프 데이터 처리 속도를 향상시키기 위하여 그래프의 정점(버텍스) 기반 분할 방법이 아닌 간선(엣지) 기반 분할 방법을 사용한 그래프 처리 엔진을 개발하였다. 이 그래프 엔진을 사용하여 1차년도 목표인 14억개의 정점을 가지는 그래프를 1초 이내에 처리하여 목표를 달성하였다. 간선 중심 분할 기법 이외에도 GPU를 사용하여 대규모 그래프를 CPU로부터 GPU로 스트림 전송하여 그래프 알고리즘을 병렬처리하는 기법을 개발하여, 하나의 GPU 서버로 수십 노드를 가진 클러스터 컴퓨터 성능을 내는 성과를 거두었다. [가속기 연구] 가속기 연구팀은 GPU를 이용한 맵리듀스 시스템의 성능 및 사용성 향상을 위한 연구를 수행하였다. 본 연구팀은 크게 다음과 같은 서로 유기적으로 연결되는 3가지의 주제에 대한 연구개발을 수행하였다. 1) 첫째, 맵리듀스 시스템에서 GPU와 CPU를 동시에 활용 가능하게 해주는 스케줄러를 설계, 구현하였다. 본 스케줄러는 하둡 기반의 맵리듀스 시스템을 기반으로 개발하였으며, 단일 노드에 다수의 CPU와 GPU가 장착이 된 시스템에서 CPU 맵태스크와 GPU 맵태스크의 이질성을 고려하여 주어진 응용 프로그램을 최적으로 실행할 수 있도록 설계하였다. 2) 둘째, 현존하는 맵리듀스 시스템 (하둡, 스파크 등)이 대부분 Java기반으로 구현된 점에 착안하여, Java 바이트 코드로부터 GPU 언어인 CUDA PTX를 생성할수 있는 Java2PTX 컴파일러와 이를 GPU에서 실행하는 계산 오프로더를 개발하였다. 3) 셋째, 맵리듀스 시스템을 이용하여 GPU 가속기능이 지원되는 컴퓨팅 코드 작성을 간단히 하면서도 성능은 기존 수작업으로 작성된 GPU 코드를 이용한 맵리듀스 코드에 필적하는 성능을 보이는 고수준 맵리듀스 전용 언어인 Vispark를 개발하였다. 이를 위해 스파크 맵리듀스 시스템을 기반으로 Python과 유사한 언어설계 및 언어번역기를 개발 하였으며, 다차원 정형 데이터의 분산 처리를 위해 스파크 RDD의 확장인 VRDD 및 노드간 직접통신 방법을 개발하였다. 또한 다양한 맵리듀스 고유 함수들을 개발하였다. [자원관리기술 연구] 자원관리기술 연구팀은 다중 빅데이터 워크로드 자원 관리를 위한 핵심 기술에 대한 연구를 수행하였다. 특히 다중 워크로드간의 자원 경쟁에 의한 간섭의 영향을 줄이는 핵심 요소 기술들을 중점적으로 연구하였다. 본 연구팀은 클러스터 레벨의 자원 관리 기술과 서버 레벨의 자원 관리 기술에 대해 다음과 같이 간섭 영향을 고려하는 4가지 주제에 대한 연구개발을 수행하였다. 1) 첫 번째로 빅데이터 워크로드에 대한 간섭을 고려한 성능 모델링 기법을 연구하였다. 메모리 관련 자원에 대한 간섭을 단계화 하는 기법을 기반으로 간섭 환경에서 분산 병렬 응용의 성능을 예측하는 방법론을 연구하였다. 또한, Grep, Sort,WC 등 대표 하둡 응용들에 대해 CPU, I/O의 다중 자원에 대한 간섭 영향을 분석하여 그 영향이 매우 클수 있음을 보이고, Regression 기반 하둡 성능 예측 모델을 개발하였다. 이 성능 예측 모델을 기반으로 간섭의 영향을 고려하는 기초적인 하둡 스케줄링 (클러스터 레벨) 방법을 개발하여, 빅데이터 응용의 성능이 간섭에 의해 저하되지 않도록 스케줄링하는 기법으로 성능이 향상되는 가능성을 보여 주었다. 2) 두 번째로, 이기종 노드의 집합으로 구성된 빅데이터 처리 클러스터에서 동적자원 변화를 고려한 고효율 빅데이터 워크로드 스케줄링을 위한 요소 기술을 연구 개발하였다. Hadoop 및 Spark의 다중 프레임워크 워크로드 실행이 가능한 이종 기기 Mesos 클러스터를 구성하여, 간섭에 의한 영향을 확인하고 Mesos 스케줄링 방식의 문제점을 파악하였다. 또한, 본 연구는 Mesos의 자원 분배 방식에서 다중 프레임워크 작동 시 발생하는 오버헤드를 실시간 예측 및 자원 충돌 상황을 분석해내고, 이를 방지하기 위한 워크로드 동적 분산 및 이동 기술과 스토리지 자원 통합 기술을 연구 개발하였다. 3) 세 번째로, 여러 워크로드가 동시에 실행되는 고성능 컴퓨팅 서버의 메모리 자원 성능 isolation을 위한 프로파일러 기법을 연구하였다. 데이터 접근이 많은 빅데이터 워크로드들은 지연시간이 짧은 캐시 메모리를 효율적으로 사용하고 메인 메모리로의 접근이 원활해야 고성능을 보장 받을 수 있다. 하지만 제한된 크기의 메모리 시스템 때문에 워크로드간에는 캐시 메모리와 메모리 컨트롤러를 차지하기 위한 경쟁상황이 발생하여 심각한 성능 저하가 발생할 수 있기 때문에 본 연구에서는 빅데이터 워크로드의 메모리 시스템 경합 원인 요소를 분석 하였다. 이 분석 결과를 바탕으로 캐시 메모리 오염 상황을 완화시켜줄 factor 및 메모리 컨트롤서 경합 상황을 완화시켜줄 factor를 모색하고 온라인 프로파일러를 개발하였다. 4) 네 번째로, 다중 워크로드가 같은 서버에서 실행될 때 메모리 자원 경쟁을 줄이기 위한 인메모리 빅데이터 |