안녕하세요. 두 번째 이.빅.스 입니다.
“세계적 커피 브랜드 기업 S사의 위치, 교통 패턴, 지역 인구 통계 등의 데이터를 활용한 최상의 매장 입점 위치 분석”, “전자상거래 및 클라우드 웹 서비스 기업 A사의 사용자의 연령, 검색 기록, 취미 등에 기반한 주문 상품 예측”
4차 산업혁명 시대의 핵심 키워드인 “빅데이터”는 다섯가지의 특징으로 요약될 수 있습니다. 방대한 양(volume), 빠른 증가속도(velocity), 다양한 종류(variety)의 데이터로부터 가치를 추출하고 결과를 분석하는 기술을 뜻하며, 빅데이터를 통한 가치창출이 나날이 중요해짐에 따라 정확성(Veracity)과 가치(Value)도 중요해졌습니다. 위의 사례들이 그 대표적인 예입니다.
기업에서 흔히 말하는 “빅데이터를 도입한다” 라고 한다면, 조직의 내/외부에 존재하는 다양한 형태의 데이터를 수집, 처리하고 분석하여 데이터에서 의미 있는 가치를 추출해 조직의 전략적 의사결정에 활용하고, 비즈니스에 적용하는 행위라 할 수 있습니다.
이러한 빅데이터에 기반한 분석을 위해 처음으로 마주하는 난관은 단연 방대한 양과 다양한 종류의 데이터를 저장하고 효율적으로 빠르게 읽는 것입니다. 기존에는 정형화된 데이터들은 흔히 사용하는 데이터베이스 관리도구(RDB)를 통해 저장하였지만 그 양이 방대해짐에 따라, 기존의 데이터베이스 관리도구의 능력을 넘어섰고, 정형화된 형태가 아닌 비정형 데이터(이미지, 텍스트, CSV파일 등)의 저장, 디스크에 저장된 대용량의 데이터를 읽는 데에 걸리는 오랜 시간 등이 빅데이터라는 단어가 대중화된 초기의 큰 문제점이었습니다.
이러한 문제점을 해결하고자 2006년, 더그 커팅(Doug Cutting), 마이크 캐퍼렐라(Mike Cafarella)가 개발한 Hadoop이 등장합니다. “Hadoop이란, 대용량의 데이터를 분산 환경에서 처리할 수 있는 자바 기반의 오픈 소스 프레임워크입니다.” 10페이지의 책을 읽는 상황을 예로 들어보겠습니다. 한 사람이 한 페이지를 읽는 데에 걸리는 시간이 1초라고 가정하면, 책 한권을 모두 읽는 시간은 10초입니다. 여기서, 10명의 사람이 페이지를 나누어서 읽고 각 사람이 읽는 페이지가 서로 공유가 가능하다면 한 책을 모두 읽는 데에 걸리는 시간은 1초로 10배가 줄어듭니다. 마찬가지로 대용량의 데이터를 한 컴퓨터의 디스크에 저장하는 것이 아닌, 분할하여 클러스터화 된 여러 컴퓨터의 여러 개의 디스크에 나누고 복제하여 저장, 읽을 때에는 각 디스크에 흩어져 저장된 데이터들을 동시에 읽어 효율적으로 처리하는 환경이 앞서 언급한 분산 처리 환경이며, 이를 Hadoop의 모델 컨셉이라 할 수 있습니다. 또한 데이터를 file형식으로 저장하기 때문에 정형화된 데이터 뿐만 아닌 비정형 데이터들도 제약 없이 저장할 수 있습니다.
이러한 분산 처리 환경을 가능케하는 Hadoop의 핵심 코어인 HDFS, MapReduce에 대해 알아보겠습니다.
HDFS(Hadoop Distributed File System)
Hadoop의 분산 저장을 담당합니다. 대용량의 데이터 파일을 일련의 블록(block)으로 나누어 지정한 디스크들에 각각 저장하고, 내결함성을 위한 블록 복제를 지원하며, 사용자는 복제본의 수를 지정할 수 있습니다. 또한, 파일시스템으로 저장하게 되며, 형태(csv, json, xml, 이미지 등)에 제약을 받지 않습니다. HDFS는 크게 메타데이터의 관리, 데이터 저장의 명령을 수행하는, 중추 역할을 담당하는 NameNode와 실제 데이터가 저장되는 DataNode로 구분됩니다.
MapReduce
Hadoop의 분산 처리를 담당합니다. Map과 Reduce, 두 함수로 구성되며, Map함수는 input 데이터를 가공하여 데이터를 연관성 있는 데이터들로 분류하고 (key, value) 형태의 데이터로 추출합니다.
Reduce함수는 Map에서 출력된 데이터에서 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업을 진행합니다. MapReduce 작업이 끝나면 HDFS에 파일이 써지고, 시작할 때에는 HDFS로부터 파일을 가져오는 작업이 수행됩니다.
아래 예제는 Hadoop의 대표적 예시인 Word Count입니다. 여러 디스크에 분할 저장된 하나의 파일을 동시에 읽어 MapReduce를 통해 특정 단어의 빈도 수를 추출하는 예제입니다. 본 테스트는 3대(NameNode 1, DataNode 2)의 서버를 클러스터화 한 hadoop에서 진행하였습니다.
1. 파일 저장 확인
# 예제에 사용할 HDFS상의 파일 hadoop-env.sh 입니다. 해당 파일은 특정 폴더에 하나의 파일로 저장되어 보이지만, 실제 내부적으로는 DataNode로 지정한 2개의 서버의 디스크에 각각 분할되어 저장되어 있습니다.
2. wordcount 실행 및 결과 확인
# yarn jar [jar파일 경로] wordcount [파일이 위치한 폴더명] [결과를 저장할 폴더명]
yarn jar /home/hadoop/hadoop-3.1.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar wordcount conf output
위와 같은 결과가 나온다면 Hadoop의 MapReduce가 정상적으로 실행되었다는 것을 의미합니다.
서두에 언급한 바와 같이 빅데이터는 방대하고 많은 종류의 데이터를 저장하고, 그 데이터를 가공, 분석함으로서 새로운 가치를 추출하는 기술입니다. 방대하고 많은 종류의 데이터를 저장하는 Hadoop을 중심으로 하는 전후의 데이터의 수집, 가공, 분석에 대한 프레임워크들의 집합, 대표적인 빅데이터 생태계를 “하둡 에코 시스템(Hadoop Eco System)”이라 합니다.
하둡 에코 시스템은 오늘날 빅데이터를 활용하는 대부분의 기업에서 필수적으로 사용하고 있습니다. 대량의 데이터를 저장하고 가공, 분석하는데 이러한 프레임워크들이 없이는 굉장히 힘들기 때문이죠. 하지만 하둡 에코 시스템 내부의 프레임워크들은 초기 구축, 연동, 후 관리 및 운영이 상당한 전문성을 요구합니다. 이러한 설치, 운영을 초보자들도 쉽게 활용할 수 있도록 C사의 CDH, H사의 HDP라는 대표적인 제품들이 있었으나, 이 두 기업이 합병 후 해당 제품을 전면 유료화 하고, 그 가격을 높게 책정함으로써 이미 제품을 사용중이던 국내 기업들이 부담을 느끼고 있습니다. 이에 위 제품을 대체하고 더욱 향상된 기능의 하둡 에코 시스템 관리 툴을 오늘날 많은 기업에서 자체적으로 개발하는 추세입니다. 엑셈에서도 서비스 모니터링 및 운영 업무에 일관되고 안전한 플랫폼을 제공하기 위하여 EBIGs 솔루션을 제공합니다.
오늘은 하둡 에코 시스템 중 데이터의 저장을 담당하는 Hadoop에 대해 알아보았습니다.
Hadoop이 등장함에 따라, 사용자는 방대한 양의 데이터를 저장하고 읽는 것을 빠르고 효율적으로 수행할 수 있게 되었습니다. 물리적인 디스크 손상이 발생하더라도 다른 디스크의 중복 복제된 데이터를 통해 그 안정성도 높일 수 있으며, 데이터의 형태(정형, 비정형)에 제약 없이 데이터를 보관할 수 있게 되었습니다. 더 나아가 Hadoop을 중심으로 수집 / 가공 / 분석 프레임워크들이 모인 하둡 에코 시스템을 통해 빅데이터 기술은 과거와 달리 더 쉽고, 많은 가치를 창출할 수 있는 환경이 조성되었습니다.
하루가 마다하고 데이터의 가치는 나날이 증가하고, 그 양과 종류도 기하급수적으로 증가하고 있습니다. 데이터 시대에 살고 있는 지금, 데이터의 안전한 저장, 빠르고 효율적인 분석을 위해 Hadoop은 선택이 아닌 필수입니다.
기획 및 글 | 빅데이터 기술컨설팅팀 김찬웅
'엑셈 경쟁력 > 이만큼 재미있는 빅데이터 스토리' 카테고리의 다른 글
이.빅.스. | Flamingo의 오픈소스 (0) | 2023.08.31 |
---|---|
이.빅.스 | 빅데이터 가치를 위한 데이터 시각화 (0) | 2023.07.25 |
이.빅.스 | 기하급수적으로 수집되는 많은 양의 데이터는 어떻게 처리해야 할까? (0) | 2023.05.25 |
이.빅.스 | 실시간 데이터는 어떻게 활용할 수 있을까? (0) | 2023.03.30 |
이.빅.스 l 이만큼 재미있는 빅데이터 스토리, 시작! (0) | 2022.10.26 |
댓글