들어가며

  우리에게 주어진 데이터가 1GB라고 생각해보자, 1GB의 크기를 갖는 데이터를 관계형 데이터베이스에 저장을 하고, 데이터를 처리하는데는 큰 어려움이 없을 것입니다. 하지만 데이터의 크기가 10GB, 100GB로 증가한다고 생각하면, 우리가 갖고 있는 컴퓨터의 성능을 업데이트를 해야 합니다. 하지만 만약 1TB, 10TB, 100TB로 데이터의 크기가 커진다면 어떻게 해야할까요? 그렇게 된다면 우리는 여러 컴퓨터를 이용해 분산으로 처리하는 방법을 사용해야 합니다. 하루에 처리할 내용을 몇시간에 처리하는게 일하는데 더 효율적이니 분산으로 처리하는게 좋을것 같습니다. 

  그렇다면 데이터가 어떻게 갑자기 늘어났을까요? 최근 스마트폰이 등장하면서 Facebook, Twitter, RFID readers, sensor 등의 데이터가 기하급수적으로 늘어나고 있습니다. 이러한 데이터들은 unstructed 데이터의 형태로 수집이 되고, 수집된 데이터에서 유용한 정보를 추출하는 데이터의 처리의 양 또한 상당히 커지고 있습니다. 그렇다면 어떻게 처리를 할 수 있을까요? 아마도 Hadoop이 답이 될 수 있습니다.

Big Data란 무엇일까요?

  인터넷이 널리 보급됨에 따라 32억명이 인터넷을 사용한다고 합니다. 전세계 인구가 75억정도면 거의 절반은 인터넷을 하고 있습니다. 이처럼 인터넷이 보급되고, 스마트폰이 등장함에 따라 생산되는 데이터의 양은 엄청납니다. 하루에 Twitter는 7TB의 데이터를 생산하고, Facebook에서는 600TB의 데이터가 생산이 되고 있습니다. 하지만 여기서 주목해야할 점은 이렇게 수집되는 모든 데이터의 약 80%정도는 unstructed 데이터의 형태를 나타내고 있습니다. 이말은 즉, 우리가 보유하고 있는 데이터는 많지만, 이 많은 데이터에서 유용한 정보를 추출하기 위해서는 어마어마한 데이터 처리가 필요합니다.

Hadoop이란 무엇일까요?

  Hadoop은 Apache Foundation의 오픈소스 프로젝트로써, Java로 개발된 framework를 말합니다. Hadoop은 commodity hardware를 사용해 대용량의 unstructed, semi-structed 데이터를 처리하는데 최적화 되어 있습니다. (여기서 언급하는 commodity hardware는 범용적으로 우리가 사용하는 컴퓨터를 말합니다.) 하지만 batch처리로 많은 데이터를 저장하지만, 요청한 처리에 대해서는 즉각적으로 답을 받을 받는 framework는 아닙니다. 

Hadoop과 연관되어 있는 오픈소스 프로젝트



Lucene, Hbase Hive, Pig, Spark, ZooKeeper, Ambari, Avro, UIMA, YARN, MapReduce

  • Lucene - Java로 구현된 텍스트 검색 엔진
  • Hbase - Hadoop의 데이터베이스
  • Hive - Hadoop files에 저장되어 있는 데이터를 쿼리할때 사용
  • Pig - 대용량의 데이터를 처리하기 위해 필요한 MapReduce Code를 생산해 주는 high level language
  • Spark - 인메모리 클러스터 컴퓨팅 framework
  • Zookeeper - 분산시스템에서 naming, configuration service를 중앙에서 관리
  • Ambari - Web UI를 통해서 hadoop clusters를 관리하고 머니터링
  • Avro - 데이터 Serialization system
  • UIMA - unstructed 데이터의 분석을 위한 architecture
  • YARN - 빅데이터 applications을 위한 large-scale operating system
  • MapReduce - 대용량의 데이터를 처리하기위한 소프트웨어 프레임워크

[참고] Big Data University - Hadoop Fundamentals I

+ Recent posts