ZERONOVA

Data, Open, Share, Platform, Cloud, Education

Facebook의 빅데이터 플랫폼 최근 현황 발표

leave a comment »

지난 9월 초 XLDB 2013에서 Facebook은 자신들의 빅데이터 인프라스트럭쳐에 대해 소개했다. 페이스북의 빅데이터 플랫폼의 최근 모습에 대해 들여다 볼 수 있는 좋은 발표다. 발표자료동영상(15분)이 공개되어 있으니 관심있는 분들은 한번 꼭 살펴 보시길… 이번 포스팅에서는 그 내용을 요약해 보고자 한다.

페이스북의 소프트웨어 인프라는 크게 두 가지로 구성되어 있다.

  • Transactional Infrastructure: 페이스북 서비스를 실행하고 운영하기 위한 인프라
  • Analytics Infrastructure: 서비스에서 모아진 데이터를 분석하기 위한 인프라

Transactional Infrastructure

데이터 종류에 따라 3가지 다른 종류의 저장 시스템이 담당하고 있는데 이들은 데이터 Read/Write 패턴이나 확장성에 따라 각각 특화되어 있다.

  • Social graph –> MySQL
  • Photo –> HayStack (Block storage로 최적화)
  • Chat –> HBase
페이스북 Transactional Infra

페이스북 Transactional Infra

Anaytics Infrastructure (발표의 주제)

페이스북의 모든 서비스 기반에는 Data-Driven이라는 기본 원칙이 깔려있고, 이를 가능하게 해 주는 것이 Analytics Infrastructure이다. 페이스북의 Data-Driven Products의 예를 보자면 아래 그림과 같다. 여기서 News feed의 경우 어떤 Post를 어떤 순서로 보여 줄 것인지 결정하는데 Machine Learning에 의해 데이터 기반으로 결정한다. 또한 Iterative development 문화가 정착되어 빠른 주기로 새로운 기능들이 들어가기 때문에 A/B Test가 중요해지고, 이 때 어떤 feature를 변경했을 때 다른 모든 주요 메트릭에 어떤 영향을 주는지 분석을 한다. 이와 같이 페이스북의 각 제품들은 대부분 Data-Driven으로 실행된다.

페이스북 Data-Driven Products

페이스북 Data-Driven Products

데이터 수집 과정

데이터 수집 과정은 아래 그림과 같이 Scribe에 의해 수십초 단위로 로그 저장소에 수집되고, 1시간 단위로 Data Warehouse (Hadoop)에 로드되어 다양한 배치 분석이 이루어진다. 운영 DB인 MySQL에서 사용자 정보를 하루 내로 가져와 싱크를 맞추는 것 같다. 보는 것처럼 Analytics Infra는 수초 단위의 실시간성이 크게 요구되지 않는다.

페이스북 Data Ingest

페이스북 Data Ingest

Hadoop & Hive 기반 Data Warehouse

Analytics Infra의 핵심에는 Hadoop과 Hive 기반의 Data Warehouse가 존재한다. 여기에는 매일 600 TB의 데이터가 들어오고, 10 PB 데이터가 처리된다. 쌓여있는 총 데이터양은 현재 250 PB라고 한다. 4년 동안 4000배 증가했고, 앞으로 곧 1 EB(Exabyte)에 도달할거라고 예측하고 있다. 이러한 엄청난 양의 데이터를 담기에는 아마 Hadoop이 유일한 솔루션일 것이다.

DW에서 핵심적인 업무는 배치 데이터 분석이고, 이것은 주로 Hive와 MapReduce에 의해 처리되고 있다. 잘 알려진 것처럼 Hive는 페이스북에서 Hadoop 기반 Data Warehouse를 구축하기 위해 직접 만든 배치 쿼리 엔진이고, 오픈소스화해서 지금은 배치 분석을 위해 가장 널리 활용되고 있는 툴이다. 본 발표를 들으면 알겠지만, Hive는 배치 분석이나 데이터 변환을 위해 페이스북에서 매우 열심히 사용하고 있고, 안정적으로 돌아가고 있다. SQL-on-Hadoop이 관심을 받으면서 페이스북이 Hive를 버리고, Presto로 갈아탄다라든가, Hive를 한물간 퇴물 취급하는 사람들이 있는데, 이 발표를 들으면 사실과 다르다는 것을 알수 있을 것이다.

Presto: Interactive Query Engine

배치 분석과 다른 니즈가 나오기 시작했는데, 주로 비즈니스 분석가나 데이터 사이언티스트들이 빠른 쿼리 결과를 원했다. 이를 위해 페이스북에서 활용 가능한 오픈소스를 찾아보았는데, 대부분 reliable하지 않고 scalable하지도 않아서, 2012년 8월부터 직접 개발하기 시작했다. 이 당시를 보면 Impala를 비롯해 SQL-on-Hadoop 제품이 여럿 나와 있었지만, 아마도 수준이 미흡했던 모양이다. 그래서 직접 개발한 제품이 Presto인데, 4명의 소규모팀이 6개월 정도 개발했단다. 현재 6개월이상 Production 환경에서 잘 돌아가고 있다고 하고, 곧 오픈소스로 공개할 것이라고 하니 한번 기대해 봄직하다. 발표를 들어보면 분석가들의 요구사항은 쿼리 결과가 100% 정확하지 않고 98% 정도만 되도 분석하는데는 지장이 없기 때문에 이러한 특징을 설계의 trade-off로 반영했다고 한다. 그 말인즉슨, 데이터베이스가 가지는만큼의 정확도와는 거리가 있을거라는 것이다. 따라서 Presto가 나오더라도 특징을 잘 살펴서 용도를 분명히할 필요가 있을 것 같다. 그나저나 Presto를 4명이 6개월 개발했다는건 정말 놀라운 일 아닌가!

Giraph: Graph Analytics

그래프 데이터 분석은 MapReduce와 잘 맞지 않기 때문에 역시나 외부에 가용한 오픈소스를 먼저 찾아봤다고 한다. 그때 발견한 것이 Giraph이고 출발점으로서 적합하겠다고 판단해서 페이스북 개발자들이 이 오픈소스 프로젝트에 적극 참여하여 작년에 많은 개선을 이뤘다고 한다. 지금은 1 trillion(1조) edge까지 확장 가능하다고 하니, 대용량 네트워크 분석에 관심있는 분들은 한번 체크해 봄직하다. 자세한 내용은 페이스북 노트를 참고하세요. (미처 몰랐는데, 그루터 최현식 박사GIraph 커미터네요, 훌륭하십니다!)

Facebook의 오픈소스 전략: 용도에 맞는 오픈소스 선택과 적극적인 오픈소스 프로젝트 참여

페이스북 인프라 구성을 잘 보면, 워크로드에 따라, 그리고 요구사항에 따라 용도에 맞는 오픈소스를 적절히 잘 선택한 것을 볼 수 있다. 배치 분석을 위해선 Hive를 사용하고, 인터랙티브 쿼리를 위해선 Presto, 그래프 분석을 위해선 Giraph. 최근 빅데이터 시장에선 마치 어떤 한 제품이 모든 문제를 해결해 줄 것처럼 얘기하는 경향이 있는데, 현혹되지 말고 각각이 특화되어 개발된 용도에 맞게 선택해서 구성하는 지혜가 필요하다. 또한, 페이스북은 그래프 분석의 경우, 처음부터 새로 만들지 않고, Giraph 프로젝트에 합류하여 완성도를 높여 사용했다. 이 또한 매우 실리적인 선택이고, 직접 개발하려는 경향이 강한 국내 개발 문화에서 배워야 할 부분이다.

Advertisements

Written by zeronova

2013/09/27 , 시간: 3:18 오후

Big Data에 게시됨

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: