[Hadoop] Hadoop Ecosystems

hwwwa·2023년 1월 3일
0

🐘 BigData Programming

목록 보기
2/6
post-thumbnail
post-custom-banner

Hadoop Ecosystems

🔴 Core

  • Filesystems and I/O
    • Abstraction APIs. 추상화된 API
    • 원격 프로시저 호출(RPC) / Persistence(지속성)

🔴 Avro

  • Cross-language serialization
    • 원격 프로시저 호출(RPC) 및 데이터 직렬화 프레임워크
    • Persistence
    • Google ProtoBuf, FB Thrift와 유사

🟢 MapReduce

  • Distributed execution 분산 실행 (batch)
    • Programming model
    • Scalability 확장성 / fault-tolerance 장애에 대한 대응성

🟢 HDFS

  • Distributed storage (read-option)
    • Replication 복제 / scalability 확장성
    • Google filesystem(GFS)과 유사

🟢 Zoo Keeper

  • Coordination service. 코디네이션 서비스 시스템
    • 분산된 시스템 간의 정보 공유
    • 클러스터에 있는 서버들의 상태 체크
    • 분산된 서버들간에 동기화를 위한 Lock 처리 (Locking)
    • Google Chubby와 유사

🔵 HBase, Pig, Hive, ...

  • Web-scale의 data-intensive application을 위한 범용 인프라 개발이 목표

HBase

MapReduce & HDFS

  • 분산 스토리지 + computation
  • batch processing(일괄 처리)에 적합
  • 단점: 개별 항목에 액세스 또는 접근 불가

HBase

  • HBase는 HDFS를 기본 저장소로 하는 key-value 저장소
  • Batch & 랜덤 액세스 읽기/쓰기 가능
  • Originally developed at Powerset
  • Google의 Bigtable과 유사
  • Always access via primary key
  • Column-oriented database (컬럼 기반 데이터베이스)
    • Table: row의 집합
    • Row: column family의 집합
    • Column family: column의 집합
    • Column: key, value 쌍의 집합
    • 특정 컬럼의 전체 데이터 접근 시 효율적(sum, avg, ..)
      ex) HBase, Cassandra

HBase vs RDBMS

  • Different solution, similar problems
  • RDBMS
    • Row-oriented: 일부 데이터 접근 시 효율적
    • 고정된 Schema
    • ACID(Atomicity원자성, Consistency일관성, Reliability신뢰성, Isolation격리성)
  • HBase
    • Designed from ground-up to scale out, by adding commodity machines(여러개의 머신을 붙여 성능 향상)
    • 단순한 일관성있는 Scheme: atomic row writes
    • Fault tolerance (내결함성)
    • Batch processing (일괄 처리)
    • No (real) indexes

HBase vs MongoDB

  • 대부분의 RDB 컨셉은 MongoDB 및 HBase와 유사성을 가짐
    RDBMSMongoDBHBase
    TableCollectionTable
    RowDocumnetColumn Family
    No EquivalentShardRegion
    GROUP_BYAggrefation PipelineMapReduce

Pig

  • Data structures (multi-valued, nested)
  • Pig-latin: Data flow language
  • SQL에서 영감을 받은 절차적 언어(Procedural language)
    • but imperative (선언적이지 않음)
  • Execution enviroment
  • “5줄 미만의 non-boilerplate code”
    • boilerplate code: 최소한의 변경으로 여러곳에서 재사용되며 반복적으로 비슷한 형태를 띄는 코드
  • 단일 MapReduce 작업 작성은 지루하다
    • Boilerplates (mapper/reducer, create job, etc.)
    • Input / Output formats
  • 대부분의 task는 하나 이상의 MapReduce 작업이 필요

Frameworks Designs

Hive

  • Distributed data warehouse 분산 데이터 웨어하우스
  • SQL-like query language
  • Data mgmt 데이터 관리 / query execution 쿼리 실행
  • Data가 table에 속해야함
    • 하지만 기존 데이터도 사용 가능
    • Data loading optional (like Pig) - 하지만 권장됨
  • Partitioning columns
    • partitioning: data 저장 시 물리적으로 잘 나눠서 저장. 추후 불러올 때 퍼포먼스 이득
      • paritioning이 없는 데이터에서 4-5월만 불러올 때 1-3월도 스캔 필요

      • 데이터 저장 시 Hive에게 파티셔닝 지정 가능 → 4-5월의 위치를 알고있으니 풀 스캔 필요 없어짐

        hive> show partitions kiwi
        OK
        year=2016/month=10/day=11
        year=2016/month=11/day=17
        year=2016/month=11/day=18
        year=2016/month=11/day=28
        year=2016/month=11/day=29
        year=2016/month=12/day=13
        year=2016/month=12/day=5
        year=2017/month=1/day=5
        year=2017/month=1/day=7
        year=2017/month=1/day=9
        year=2017/month=2/day=1
        year=2017/month=2/day=2
        Time taken: 0.337 seconds, Fetched 12 row(s)
    • HDFS directory에 매핑됨
    • E.g. (date, time) → datadir/2009-03-12/18_30_00
  • Data columns (the rest): HDFS file에 저장됨
  • 가장 일반적인 데이터 타입 지원
  • 플러그형 직렬화 지원
  • Basic SQL
    • FROM subqueries
    • JOIN (only equi-joins)
    • Multi GROUP BY
    • Multi-table insert
    • Sampling
  • 확장성
    • Pluggable MapReduce scripts
    • User Defined Functions(UDF) - SQL에 삽입 가능
    • User Defined Types
    • SerDe (serializer / deserializer)

2022-2 KHU 빅데이터프로그래밍 수업을 기반으로 작성하였습니다.

post-custom-banner

0개의 댓글