• 빅데이터 란?
    • 옛날에는 분석이 불가능 했지만, IT 기술의 발전으로 다룰 수 있게된 방대한 양의 데이터. (ex: 교통정보, 검색정보, SNS, ... )
    • (글로벌 빅테크 서비스가 생활화 되면서... 데이터가 터져나와 ㅎㅎ)
    • (기존엔 전형화된 수치자료 중심 이였다면... 비정형의 문자,영상,위치 등등 다양한 데이터를 다룰수있게 되 ㅎㅎ)
    • (즉, "주민번호-이름-나이-성별" 같은 개인식별정보 에서 더 나아가 ->"당신이 어디에서 무엇을하며~ 선호하는것이 뭔가?" 를 찾는식!)
    • Volume(대용량) : large volume of data.
    • Variety(다양성) : number and type of data sources. structured & unstructed.
    • Velocity(급속성) : frequency of updates. real-time stream. batch processing.
  • 빅데이터 활용예
    • 1) ZARA : Supply Chain Analytics. 유통 데이터으로 예측을 최적화 시켜 매출 극대화.
    • 2) 국세청 : 탈세 예방 시스템으로 국민 등골 쪽쪽 빨아먹기 ㅋㅋㅋ
    • 3) 티맵 : 실시간 교통분석. 체증해소. 에너지절약.
    • 4) 구글번역 : 도서정보 및 유엔 의회 자료 -> 64개의 언어 자동번역.
    • 5) 신한카드 : 2200만명 정보 분석...
  • 1) 하둡 (HDFS)
    • Hadoop Distrituted File System
      • 사용자 -> (200MB 데이터) -> Client -> NameNode
      •                                                                     =>> DataNodes
      • https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html
    • Client :
      • BLOCKSIZE : 요청받은 데이터를 블록단위(128MB or 64MB) 로 분리.
      • REPLICATION : 각 블록을 분산저장 (보통 3-Copy)
    • NameNode
      • 블록단위의 데이터를 저장할 DataNodes 의 주소를 관리.
      • 각종 메타정보 (블록,노드,...) 를 관리.
      • SPOF (Single Point Of Failure) = 네임노드가 죽으면, HDFS 전체가 마비 됨...
      • HEARTBEAT 및 BLOCKREPORT 기반으로 손상된 블록을 관리. 
    • DataNodes
      • Client -[checksum|data]-> <-[ack]- DataNode
      • 전송받은 블록을 Replication-Pipeline 에 따라 Packet(동일한 데이터집합) 저장.
      • 저장완료 블록을 NameNode 에 통보.
      • 주기적으로 HEARTBEAT 를 NameNode 에 전송. 
      • 주기적으로 BLOCKREPORT (체크썸을 기반으로 유효한 모든 블록 목록) 를 NameNode 에 전송.
  • 2) MapReduce
    • 맵리듀스 란?
      • 대용량의 분산되어있는 데이터를 기반으로 자동화된 병렬처리를 하기위해~ 2004년 구글에서 발표한 프로그래밍 모델. 
      • 함수형 프로그래밍에서 일반적으로 사용되는 Map() 및 Reduce() 를 기반으로 구성.
        • 예) Map(in_Key, in_Value) -> (k, v) list
          • 분산되어 있는는 데이터를 key,value 쌍으로 묶는 과정!
        • 예) Reduce(k, v list) -> (out_Key, out_Value) list
          • 해당 key를 기준으로 (필터링&정렬) 데이터에서 결과를 추출하는 과정!
      • http://www.incodom.kr/hadoop_총정리
    • 함수형 프로그래밍
      • function : 변하지않는 정의역에 '값'을 받아서 -> 해당되는 치역에 '값'으로 처리.
      • functional : immutable한 input을 -> (Parrelal하게) -> immutable한 output으로 처리.
      • 동작(함수)를 정의해두고, IN&OUT을 개발하는 구조. 
      • 패러다임의 변화
        • Transistor Vs Frequency
          • CPU 속도의 물리적 한계 봉착!!!
          • 무어의 법칙 : 트랜지스터 성능은 24개월마다 2배로 증가한다.
          • 즉, 이젠 CPU Core를 늘려~ 병렬처리를 잘해야 한다.
        • mutable VS immutable
          • Multi-Thread 병렬처리를 잘하기 위해선, Thread-safe한 보장 해야한다.
          • 하지만, 개발자가 직접 배타제어(Mutual Exclusion) 하는것은... 매우 고단해 왔다.
          • 즉! immutable 하게 데이터를 다루는 Functional Language가 등장.
        • input -> (function) -> output -> (function) -> output -> ...
          • 각각에 State는 immutable 하기 때문에, 각각에 처리는 Thread-safe 함.
          • 즉, 각각 독립적으로 병렬처리가 가능하여, Scalable이 아주 뛰어나게 됨.
    • 세부 단계 처리과정
      • Splitting : 대량의 데이터를 분할하여 저장.
        • 예) K1 = 첫번째 라인 , V1 = "Dear Bear River" 값 그자체. (일반적으로 키는 관련이 없는것? 으로 간주 된다고 함)
      • Mapping : 분할된 데이터를 input으로 -> 처리후 -> output 결과들을 뽑아냄.
        • 예) List(K2, V2) = [{"Dear": 1}, {"Bear": 1}, {"River": 1}] 
      • Shuffling : mapping 결과들의 (필터링후~) key를 해싱기준으로 정렬하여, 해당 values를 저장.
        • 예) K2 = "Bear" , List(V2) = [1, 1]
      • Reducing : shuffling 데이터를 input으로 -> 처리후 -> output 결과들을 뽑아냄.
        • 예) K3 = "Bear" , V3 = 2
  • 3) Hadoop Ecosystem
    • 한 10년은 된거같은 이야기 인가...
      • https://www.analyticsvidhya.com/blog/2020/10/introduction-hadoop-ecosystem
      • https://www.edureka.co/blog/hadoop-ecosystem
      • https://inkkim.github.io/hadoop/Hadoop-Ecosystem이란
    • Sqoop
      • 각종 DBMS 데이터를 -> HDFS 으로 import/export
      • 예) MySQL, Oracle, JDBC, DataWarehouse, NoSQL, ...
    • Flume
      • 각종 원천 혹은 실시간성 데이터를 수집 -> HDFS 으로 입수
      • 확장성, 신뢰성(고성능), 다양성, 관리성, 개방성 등등의 강점을 지님.
    • Zookeeper
      • 분산 시스템의 클러스터에 자원을 관리.
      • 이벤트 처리.
    • ...
    • HBase
      • Column-Family 계열의 데이터베이스
      • 대용량 데이터를 안정적으로 처리
    • Hive
      • HDFS 를 기반으로 '유사 SQL' 을 제공하는 데이터 웨어하우스
      • select, join, group by, limit 등등 지원
    • Pig
      • '데이터 흐름' 기반의 (데이터를 처리하는) 스크립트 프로그래밍 언어
      • Set, List, Array, Tuple 등등의 타입 제공
    • Oozie
      • 워크플로우 스케쥴링&모니터링 코디네이터. (XML 기반, DAG)
      • HTTP, CLI, 웹UI 등등 제공.
      • 다양한 Action-Node(잡 어플리케이션) 을 지원하고 제어 함. (MR, Pig, Hive, Java, ...)
    • ...

-끝-

'MQ' 카테고리의 다른 글

SQS  (0) 2020.05.16
RabbitMQ (AMQP)  (0) 2020.04.30
Elastic Stack 란?  (1) 2020.04.12
flafka (flume + kafka)  (0) 2019.06.08
kafka x zookeeper  (0) 2019.05.18

+ Recent posts