아파치 하둡은 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크야.
Hadoop (High-Availability Distributed Object-Oriented Platform)
자바 소프트웨어 프레임워크로 대량의 자료(빅데이터)의 분산 저장과 분석을 위한 분산 컴퓨팅 솔루션이다. 일반적으로 하둡파일시스템(HDFS)과 맵리듀스(MapReduce)프레임워크로 시작되었으나, 여러 데이터저장, 실행엔진, 프로그래밍 및 데이터처리 같은 하둡 생태계 전반을 포함하는 의미로 확장 발전 되었다. 한문장으로 정리하면, 데이터의 양이 너무 많으니 분산해서 저장한다는 의미이다.
하둡에서의 빅데이터
빅데이터란 한대의 컴퓨터로는 저장하거나 연산하기 어려운 규모의 거대 데이터를 의미해. 따라서 빅데이터 같은 경우는 여러대의 컴퓨터로 나눠서 일을 처리해야하지. 이를 분산이라고 해. 또한 큰 데이터를 한번에 저장하기는 힘들어. 이러한 데이터를 알아서 여러대의 컴퓨터에 나눠서 저장해주고, 필요시 알아서 불러오는 시스템이 하둡인거지. 같은 내용을 중복되게 저장을 하기 때문에 손실되더라도 복구가 가능해. 이러한 하둡의 장점은 분석 시 나눠서 데이터를 분석하고 합치면 돼서 매우 빠르다는 점이야. 하지만 저장된 데이터를 변경하는 것이 불가능하고, 실시간 데이터와 같은 신속한 작업에서는 부적합하다고 볼 수 있어.
정형데이터 뿐만 아니라 비정형데이터도 사용이 가능하기 때문에, 모든 분야에서도 활용가능하다고 할 수 있어.
하둡의 동작흐름은 다음과 같아.
데이터가 들어오면, 데이터를 쪼개. 그리고 그 데이터를 분리해서 저장하지. 따라서 데이터를 쪼갠 후에 어느 데이터 노드에 저장이 되어 있는지를 기록해 놓는 부분(메타데이터)이 필요해. 정리하면, 하둡에서 데이터를 저장하기 전에 네임노드에서 분산을 하고 저장위치를 분배해. 그 후에 여러 개 중에 지정된 데이터 노드에 저장을 한다고 간단히 이해할 수 있어.
하둡의 중요한 기능인 HDFS와 맵리듀스에 대해 알아보자
하둡 분산형 파일시스템(HDFS)는 하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일시스템으로 실시간 처리보다는 배치처리를 목적으로 설계되었다. 따라서 작업량이 작거나 빠른 데이터 응답이 필요한 작업에서는 적합하지 않다.
기본적으로 HDFS는 데이터를 블록 단위로 나누어 저장해. 따라서 큰 데이터를 나누어 저장하므로 단일 디스크 보다 큰 파일도 저장이 가능해. 만약 블록단위가 256MB라면 1G파일은 4개의 블록으로 나누어 저장돼. 블록단위보다 작은 크기의 파일이라면 파일을 나누지 않고 그대로 저장할 수 있어.
블록에 문제가 생겨 데이터가 손실되는 경우를 막기 위해 HDFS는 각 블록을 복제하여 중복으로 저장해. 즉, 하나의 블록은 3개의 블록으로 복제되어 저장되는거지. 따라서 1G 데이터를 저장할 때 3G의 저장공간이 필요하다고 할 수 있어.
참고로 HDFS는 읽기 중심을 목적으로 만들어 졌기 때문에 파일의 수정은 지원하지 않아. (읽는 속도를 높인다.)
맵리듀스는 HDFS의 데이터의 지역성을 이용해서 처리 속도를 증가시켜. 데이터를 처리할 때 데이터를 알고리즘이 있는 곳으로 이동시켜 처리하지 않고, 데이터의 위치에서 알고리즘을 처리하여 데이터를 이동시키는 비용을 줄일 수 있지.
HDFS는 다음 글에서 자세히 알아보자