데이터 레이크의 과제는 사유 형식이나 시스템에 종속되지 않는 것이다. 종속은 다른 용도를 위해 데이터를 시스템 안팎으로 이동하거나 다른 툴을 사용해 데이터를 처리하는 역량을 제약하고, 데이터 레이크를 단일 클라우드 환경에 묶을 수도 있다. 따라서 기업은 데이터를 개방 형식으로 저장하고 개방형 표준 기반 인터페이스를 통해 액세스할 수 있는 개방형 데이터 레이크를 구축하도록 노력해야 한다. 데이터 저장, 데이터 관리, 데이터 처리, 운영, 데이터 액세스, 거버넌스, 보안을 포함한 시스템의 모든 측면에서 개방형 원칙을 고수해야 한다.
개방 형식은 개방형 표준을 기반으로 해서 특정 벤더의 사유 확장 없이 공개 커뮤니티 중심의 프로세스를 통해 개발되고 공유되는 형식이다. 예를 들어 개방형 데이터 형식은 ORC나 파케이(Parquet)과 같이 사양이 커뮤니티에 게시되어 어느 조직에서나 해당 형식으로 된 데이터를 읽는 툴과 애플리케이션을 만들 수 있는, 플랫폼 독립적이고 기계가 읽을 수 있는 데이터 형식이다.
일반적인 데이터 레이크에는 다음과 같은 기능이 있다.
- 데이터 흡수와 저장
- 지속적 데이터 엔지니어링을 위한 데이터 처리 및 지원
- 데이터 액세스와 소비
- 디스커버리 가능성(discoverability), 보안, 규정 준수를 포함한 데이터 거버넌스
- 인프라 및 운영
다음 절에서는 각 기능의 개방성 요건에 대해 설명한다.
데이터 흡수와 저장
개방형 데이터 레이크는 애플리케이션, 데이터베이스, 데이터 웨어하우스, 실시간 스트림과 같은 소스로부터 데이터를 흡수한다. 데이터를 포맷해서 ORC, 파케이와 같이 플랫폼 독립적이고 기계가 읽을 수 있으며 액세스와 분석에 최적화되고 정보 재사용을 저해하는 제약 없이 소비자에게 제공 가능한 개방형 데이터 형식으로 저장한다.개방형 데이터 레이크는 풀(pull) 기반과 푸시(push) 기반 데이터 흡수를 모두 지원한다. 풀 기반 흡수는 배치 데이터 파이프라인을 통해 지원하며, 푸시 기반 흡수는 스트림 처리를 통해 지원한다. 두 가지 유형의 데이터 흡수에서 개방형 데이터 레이크는 데이터 변환을 위해 SQL, 아파치 스파크와 같은 개방형 표준을 지원한다. 배치 데이터 파이프라인에서는 호수의 데이터 집합에 대한 행 수준 삽입과 업데이트(UPSERT)를 지원한다. 스냅샷 격리(더 일반적으로는 ACID 구문)가 포함된 UPSERT 기능은 데이터 파티션이나 전체 데이터 집합을 다시 쓰는 경우에 비해 작업을 대폭 간소화해준다.
개방형 데이터 레이크의 흡수 기능은 데이터 무손실을 보장하며 정확히 한 번 또는 최소 한 번 이상 쓰고 스키마 변동성을 처리하며 가장 최적화된 데이터 형식으로 적절한 파티션에 쓰고 필요할 때 데이터를 다시 흡수하는 기능을 제공한다.
데이터 처리와 지속적 데이터 엔지니어링 지원
개방형 데이터 레이크는 다양한 데이터 소스의 원시 데이터를 표준화된 개방 형식으로 저장한다. 그러나 데이터 탐색, 인터랙티브 분석, 머신러닝과 같은 사용 사례에서는 원시 데이터를 처리해서 사용 사례에 맞는 신뢰할 수 있는 데이터 집합을 생성해야 한다. 데이터 탐색과 머신러닝 사용 사례의 경우 사용자가 각자의 분석 요구에 맞게 지속적으로 데이터 집합을 정제한다. 따라서 모든 데이터 레이크 구현은 사용자가 데이터 엔지니어링과 인터랙티브 분석 및 머신러닝과 같은 사용 사례 사이에서 반복 개발을 할 수 있도록 해야 한다. 데이터 파이프라인을 제작, 모니터링, 디버깅하는 인터랙티브한 기능이 포함된 지속적 데이터 엔지니어링이라고 생각하면 된다. 개방형 데이터 레이크에서 이러한 파이프라인은 SQL, 파이썬, 아파치 스파크, 아파치 하이브와 같은 오픈 소스 툴과 표준 인터페이스를 사용해서 제작된다.데이터 액세스와 소비
데이터 레이크에서 가장 가시적인 결과는 데이터 레이크를 통해 실현되는 사용 사례의 유형이다. 데이터 탐색, 인터랙티브 분석, 머신러닝 등 어떤 사용 사례에서든 데이터 액세스가 핵심이다. 데이터 액세스는 SQL 또는 파이썬이나 R, 스칼라와 같은 프로그래밍 언어를 통해 가능하다. 인터랙티브 분석의 표준은 SQL이지만 머신러닝, 딥 러닝과 같은 더 고차원적 애플리케이션에는 프로그래밍 언어가 사용된다.개방형 데이터 레이크는 사유 확장 없는 표준 기반의 SQL 구현을 통해 데이터 액세스를 지원한다. 따라서 외부 툴에서 ODBC, JDBC와 같은 표준을 통해 데이터에 액세스할 수 있다. 또한 개방형 데이터 레이크는 R, 파이썬, 스칼라와 같은 표준 프로그래밍 언어와 텐서플로우(TensorFlow), 케라스(Keras), 파이토치(PyTorch), 아파치 스파크 MLlib, MXNet, 사이킷-런(Scikit-learn)과 같은 수치 계산 및 머신러닝을 위한 표준 라이브러리를 통한 프로그램식 액세스도 지원한다.
데이터 거버넌스 – 디스커버리 가능성, 보안, 규정 준수
데이터 흡수와 데이터 액세스가 잘 구현되면 데이터를 평등한 방식으로 폭넓은 사용자에게 제공할 수 있게 된다. 여러 팀이 데이터에 액세스하기 시작하면 데이터 설계자는 거버넌스와 보안, 규정 준수를 위한 관리 감독을 실시해야 한다.데이터 디스커버리
데이터 자체는 찾고 이해하기 어려우며 항상 신뢰성이 보장되는 것도 아니다. 사용자는 자신의 사용 사례에서 데이터를 신뢰하려면 먼저 데이터 집합을 발굴(discover)하고 프로파일링해서 무결성을 확인해야 한다. 데이터 카탈로그는 다양한 메커니즘을 통해 메타데이터의 질을 높이고 이를 사용해서 데이터 집합을 문서화하고 디스커버리를 보조하기 위한 검색을 지원한다.첫 번째 단계는 필요한 데이터 집합을 발굴하는 것이므로 탐색을 위해 최종 사용자에게 메타데이터를 노출하고 데이터의 위치와 포함된 내용을 파악하고 특정 질문에 답하는 데 유용한지 여부를 확인하는 것이 필수적이다. 디스커버리에는 포맷, 표준화, 라벨, 데이터 형태 등을 밝히기 위한 데이터 집합의 인터랙티브 프리뷰를 지원하는 데이터 프로파일링 기능이 포함된다.
개방형 데이터 레이크에는 개방형 메타데이터 리포지토리가 있어야 한다. 예를 들어 아파치 하이브 메타데이터 리포지토리는 메타데이터에 대한 벤더 종속을 방지하는 개방형 리포지토리다.