4학년 공부 과정/분산 데이터베이스 9

하둡(Hadoop) - Apache Kafka

Apache Kafka의 등장 배경 💡 정의 Apache Kafka는 고성능 데이터 파이프 라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 수천 개의 회사에서 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼이다.. 아파치 카프카는 링크드인에서 발생하는 이슈를 해결하고자 개발된 기술이다. 링크드인에서 사용하던 기존 아키텍쳐에서는 데이터 처리의 복잡도가 증가했고, 데이터 파이프라인의 관리가 어려웠다는 문제점이 있었다 시간이 갈수록 애플리케이션 개수가 늘어나고 데이터 전송 파이프라인이 늘어나기 시작하면서 아키텍처가 점차 복잡해졌다. 카프카는 이 문제점들을 해결하고 기업의 대용량 데이터를 수집하고 사용자들이 이를 실시간 스트림을 할 수 있게 해줬다. LinkedIn의 사례(Before ..

하둡(Hadoop) - 주키퍼(Zookeeper)

주키퍼(Zookeeper) 주키퍼는 부분실패를 안전하게 처리하는 분산 애플리케이션 개발을 용이하게 한다 분산 시스템에 필요한 노드간 정보 공유, 노드 상태 체크, 노드간 공유데이터에 대한 배타적 접근 (Lock, 락) 처리 등을 위한 분산 코디네이션 서비스 시스템이다 분산 시스템의 중요한 상태정보, 설정 정보, 메타 데이터 등을 관리하므로 장애로 인한 문제 발생이 일어나지 않도록 해야한다 =>고가용성 보장 다수 노드로 ZooKeeper Ensemble 구성 리더와 추종자 역할을 수행하는 노드들의 집합 모든 노드는 동일한 데이터를 가진다 읽기 : 어떤 노드에서 읽어도 동일한 데이터를 읽는다 쓰기 : 어떤 노드가 데이터를 업데이트 하면 리더에 전송하고 이를 추종자노드들에 브로드캐스팅을 한다 주키퍼 그룹 멤버..

하둡(Hadoop) - HBase - 2

HBase HMaster Region Server는 각 테이블의 데이터를 관리한다. HMaster 전체 클러스터를 관리하고 Region Server를 조정한다. Region Server 조정이란 로드 밸런싱을 위해서 Region을 재할당하거나 복구하는 일을 수행한다. 클러스터에 있는 모든 Region Server들을 주키퍼를 사용해 모니터링한다. 로드 밸런싱 : 서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것을 의미한다. 너무 많은 로드 밸런싱도 문제가 발생할 수 있다(불균형의 문제 초래) 주키퍼를 이용해 클러스터 서버 상태를 관리하고 서비스들이 살아 있는지 사용 가능한지 모니터링 하고 실패 할 시 알림이 간다 클러스터간의 정보공유를 위한 저장소역..

하둡(Hadoop) - NoSQL Database, HBase - 1

NOSQL 💡 정의 "Not only SQL"로, SQL만을 사용하지 않는 데이터베이스 관리 시스템(DBMS)을 지칭하는 단어 (비관계형 데이터베이스) 기존의 관계형 DBMS의 ACID(Atomic, Consistency, Integrity, Duarabity) 특성을 제공하지 않지만 뛰어난 확장성, 성능 등의 특성을 보유한 비관계형, 분산 데이터 베이스들을 NoSQL로 표현한다 2000년대 후반 부터 SNS 등의 비정형 데이터를 처리하는 용도로 크게 성장중이다, 초고용량 데이터 처리 등 성능에 특화된 비관계형 데이터 저장소에 비정형 데이터를 저장하기 위한 분산 저장 시스템이다. 응용분야로는 소셜미디어, 웹 링크, 유저 프로필, 마케팅, 트위터, 이메일, 지도에도 사용된다. 종류 Redis, Cassan..

하둡(Hadoop) - 네임노드, 세컨더리 네임노드, 데이터노드 및 장애대응

네임노드(Namenode) 파일시스템의 네임스페이스르 관리하고 파일시스템 트리와 그 트리에 포함된 모든 파일과 디렉토리에 대한 메타데이터를 유지한다. 정보들은 네임스페이스 이미지(FsImage)와 에디트 로그(EditLog) 파일에 저장된다. ✔ Editlog : HDFS의 메타데이터에 대한 모든 변화를 기록하는 로그 파일, Namenode 로컬에 저장된다. ✔ FsImage : 파일 시스템의 네임스페이스와 파일에 대한 블록 매핑 정보를 저장하는 파일, 마찬가지로 Namenode 로컬에 저장된다. 세컨더리 네임노드(Secondary Namenode) EditLog가 커지지 않도록 주기적으로 네임스페이스 이미지를 에디트 로그와 병합한다. 네임노드의 백업용 노드가 아닌 정보를 합치기 위한 노드이다. 데이터노..

하둡(Hadoop) - 하둡 분산 파일시스템(HDFS)

분산 파일시스템 데이터가 단일 물리 머신의 저장 용량을 초과하게 되면, 전체 데이터셋 분리된 여러 머신에 나눠서 저장할 필요가 있다. 네트워크로 연결된 여러 머신의 스토리지를 관리하는 파일시스템을 분산 파일시스템이라고 한다. 분산 파일시스템은 네트워크 기반이므로 네트워크 프로그램의 복잡성을 모두 가지고 있다. 장점 1. 매우 큰 파일 수백 메가, 기가, 테라뿐만 아니라 최근에는 페타바이트 크기의 데이터를 저장하는 하둡 클러스터도 등장 2. 스트리밍 방식의 데이터 접근 가장 효율적인 데이터 접근 방식 -> 한 번 쓰고 여러 번 읽는 것 3. 범용 하드웨어 HDFS는 장애 발생 시 장애가 발생했다는 사실을 모르게 작업을 수행하도록 설계 단점 1. 빠른 데이터 응답 시간 HDFS는 높은 데이터 처리량을 제공하..

하둡(Hadoop) - 맵 리듀스

맵과 리듀스 맵 리듀스는 맵 단계와 리듀스 단계로 구분되고, 각 단계는 입력과 출력을 키-값의 쌍을 가진다. 맵 단계의 입력은 원본 데이터이며 데이터셋의 각 행의 타입을 텍스트로 인식하는 텍스트 입력 포맷을 선택해야한다. 맵리듀스 시스템은 JobTracker, TaskTracker로 구성되고 master-slave 구조이다. 전체적인 맵 리듀스의 흐름은 다음과 같다. Splitting(분할) - 우선 대용량의 입력 파일을 split한후, 맵 함수를 적용한다. - 대용량의 파일을 한꺼번에 처리할 수 없으므로 잘게 쪼개서 맵리듀스로 처리하는 방식이다. Mapping(매핑) - 분할된 데이터를 맵함수로 전달하고 맵함수는 해당 기준에 따라 문자 및 단어를 분리한다. Shuffling(셔플링) - Shufflin..

하둡(Hadoop) 개요

하둡(Hadoop)은 안정적이고 확장성이 높은 저장 및 분석 플랫폼을 제공한다. 범용 하드웨어에서 실행되고 오픈소스이다. SQL이나 RDBMS와는 다르고 코드는 대부분 JAVA로 작성된다는 것이 특징이다. 크기가 큰 데이터 셋을 디스크에 나눠서 저장하고 공유하게 되면 빠른 분석이 가능하고 분석 작업에도 탁월한 효과를 지니게 된다. 하지만 여러 개의 디스크를 병렬로 쓰거나 읽기 위해선 몇몇 문제를 고려해야 한다. 하드웨어 장애 데이터 손실을 막기 위한 방법은 데이터를 여러 곳에 복제하는 방법 - RAID 방식 HDFS와는 조금 다른 방법을 사용한다. 분할된 데이터를 분석 과정에서 다시 결합 많은 분산 시스템이 다중 출처의 데이터를 병합하는 기능을 제공하지만, 정합성이 안 지켜지는 경우가 많다. 맵리듀스의 ..

하둡(Hadoop)에 관하여

이번 학기에 분산시스템을 배우게 되었는데 교수님께서 Hadoop을 이용하여 수업을 하신다고 하셨다. 여기서 하둡이란 대용량의 데이터를 적은 비용으로 더 빠르게 분석 할수 있는 플랫폼이고 실무에서도 많이 쓰이는 툴 중 하나이다. 대용량 파일 저장하는 하둡 분산파일 시스템(HDFS), 저장된 분산 파일을 분산된 서버의 CPU와 메모리 자원을 이용하여 분석하는 맵리듀스(Mapreduce)로 구성되어 있다. 하지만 요즘은 맵리듀스 대신 스파크(Spark)를 많이 쓰는 추세이고 성능면에서 스파크가 더 좋기에 많이 쓰인다.