람다 아키텍처 편집하기
최신판 | 당신의 편집 | ||
2번째 줄: | 2번째 줄: | ||
== 개요 == | == 개요 == | ||
− | 람다 아키텍처는 [[아파치]] [[스톰]] 개발자인 나단 마즈(Nathan Marz)가 제안한 개념으로, 실시간 [[레이어]]와 배치 레이어를 결합하여 [[빅데이터]]의 실시간 분석을 지원하는 [[아키텍처]]를 의미한다. 예를 들면, 배치 분석을 통해 일자별로 통계를 생성하고, 당일 데이터는 별도의 실시간 통계를 유지한 다음, 이를 합쳐서 실시간 분석을 제공한다. [[하둡]](Hadoop) 기반으로 람다 아키텍처를 구현할 때에는 일반적으로 하둡 분산 파일 시스템(Hadoop Distributed File System)에 적재된 데이터를 [[맵리듀스]](Map Reduce)나 [[ | + | 람다 아키텍처는 [[아파치]] [[스톰]] 개발자인 나단 마즈(Nathan Marz)가 제안한 개념으로, 실시간 [[레이어]]와 배치 레이어를 결합하여 [[빅데이터]]의 실시간 분석을 지원하는 [[아키텍처]]를 의미한다. 예를 들면, 배치 분석을 통해 일자별로 통계를 생성하고, 당일 데이터는 별도의 실시간 통계를 유지한 다음, 이를 합쳐서 실시간 분석을 제공한다. [[하둡]](Hadoop) 기반으로 람다 아키텍처를 구현할 때에는 일반적으로 하둡 분산 파일 시스템(Hadoop Distributed File System)에 적재된 데이터를 [[맵리듀스]](Map Reduce)나 [[하이브]](Hive)로 배치 분석하고, 스톰이나 [[스파크]] 같은 스트리밍 솔루션으로 실시간 집계를 수행한 뒤, 이를 [[에이치베이스]](HBase)나 [[관계형 데이터베이스 관리 시스템]](RDMS)에서 통합하여 실시간에 가까운 분석을 유지한다. 이와 같은 구성은 의도한 대로 실시간 빅데이터 분석을 지원하기는 하지만, 이티엘(Extraction, Transformation, Loading) 작업부터 시각화 단계에 이르기까지 독립적인 다수의 구성요소를 통합하여 개발해야 하므로 구축 및 운영에 있어서 많은 어려움이 있다. |
인터넷에 연결되는 수십만 대의 [[사물인터넷]](IOT) 센서 데이터를 실시간으로 분석할 때에는 더욱 어려움이 따른다. 실무에서는 센서 데이터에 포함된 식별자를 기준으로 원본 데이터에 다양한 메타데이터를 추가하여 분석을 수행하는 사례를 흔히 볼 수 있다. 예를 들면, 셋톱박스의 식별자를 연령, 지역, 상품명 등으로 맵핑하여 다양한 분석을 수행하게 된다. 가장 흔한 설계 오류는 아래와 같이 [[스트리밍]] 솔루션에서 로그가 수신될 때마다 관계형 데이터베이스 관리 시스템을 대상으로 매번 쿼리하는 구성이다. 아키텍처에서는 [[데이터베이스]]에 대한 메타데이터 쿼리가 네트워크 스택의 레이턴시를 포함하여 1밀리초 이내에 응답한다고 하더라도 1000TPS를 내기 어려운 구성이 된다. 일반적으로는 실시간 스트리밍 처리와 배치 분석이 별개의 솔루션으로 구성되는데, 이렇게 다수의 컴포넌트로 구성된 아키텍처에서 가장 큰 성능의 병목은 메모리에 있는 데이터를 바이너리로 직렬화하고 네트워크 I/O를 수행하는 연동 구간에 존재한다.<ref name="차">〈[https://ko.logpresso.com/documents/post-lambda 차세대 람다 아키텍처]〉, 《로그프레소》</ref> | 인터넷에 연결되는 수십만 대의 [[사물인터넷]](IOT) 센서 데이터를 실시간으로 분석할 때에는 더욱 어려움이 따른다. 실무에서는 센서 데이터에 포함된 식별자를 기준으로 원본 데이터에 다양한 메타데이터를 추가하여 분석을 수행하는 사례를 흔히 볼 수 있다. 예를 들면, 셋톱박스의 식별자를 연령, 지역, 상품명 등으로 맵핑하여 다양한 분석을 수행하게 된다. 가장 흔한 설계 오류는 아래와 같이 [[스트리밍]] 솔루션에서 로그가 수신될 때마다 관계형 데이터베이스 관리 시스템을 대상으로 매번 쿼리하는 구성이다. 아키텍처에서는 [[데이터베이스]]에 대한 메타데이터 쿼리가 네트워크 스택의 레이턴시를 포함하여 1밀리초 이내에 응답한다고 하더라도 1000TPS를 내기 어려운 구성이 된다. 일반적으로는 실시간 스트리밍 처리와 배치 분석이 별개의 솔루션으로 구성되는데, 이렇게 다수의 컴포넌트로 구성된 아키텍처에서 가장 큰 성능의 병목은 메모리에 있는 데이터를 바이너리로 직렬화하고 네트워크 I/O를 수행하는 연동 구간에 존재한다.<ref name="차">〈[https://ko.logpresso.com/documents/post-lambda 차세대 람다 아키텍처]〉, 《로그프레소》</ref> | ||
49번째 줄: | 49번째 줄: | ||
|align=center|인-메모리 | |align=center|인-메모리 | ||
|- | |- | ||
− | |align=center| | + | |align=center|하이브<br>(Hive) |
|align=center|하이브큐엘, 자바 | |align=center|하이브큐엘, 자바 | ||
|align=center|하둡 | |align=center|하둡 |