일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- docker
- 코드워
- Python
- 스칼라
- programmers
- OOM
- go
- scala
- 알고리즘
- 튜토리얼
- Linux
- DP
- leetcode
- 문제풀이
- 동적프로그래밍
- 리눅스
- 프로그래머스
- 자바
- 주키퍼
- boj
- dynamic programming
- Java
- redis
- codewars
- Go언어
- gradle
- zookeeper
- HBase
- 파이썬
- golang
- Today
- Total
목록컴퓨터 과학/분산 시스템 및 빅데이터 (6)
파이문
컬럼 패밀리에는 TTL 이라는 값을 초 단위로 세팅할 수 있다. 그러면 HBase 는 자동으로 expiration time (TTL) 에 다다른 row 는 삭제 한다. 이 삭제 작업은 모든 버젼의 row 에 해당한다. (HBase row 에는 여러 버젼이 있다. 조회 시에 나오는 값은 가장 최신 버젼의 데이터이다.) TTL 시간 값은 인코딩 되어 있고 UTC 값이다. 컬럼 패밀리에 TTL 거는 예 hbase(main):002:0> create 'ttl_demo', {'NAME' => 'cf','TTL' => 20} # 아님 요렇게도 가능하다. (결과는 같다.) hbase(main):003:0> alter 'ttl_demo', NAME => 'cf', TTL => 20 Store file(HFile) 에는..
https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zab+vs.+Paxos https://raft.github.io/
주키퍼를 통한 리더 선출 HBase 를 비롯한 많은 분산 시스템에서는 주키퍼를 통해 일관성, 가용성 (CAP 이론중 CA) 을 보장 받고 있다. Leader Election (리더 선출) 다양한 다른 분산 시스템과 같이 주키퍼를 이용해 고 가용성 어플리케이션을 설계할 일이 생겨서, 리더 선출 방법들을 살펴 보았다. 이 방법은 최선이 아닐 수 있다. 리더 선출 준비 우선 임의의 path 를 지정한다. 여기서는 /election 이라고 하겠다. /election 하위에, 가용하는 서버 목록의 정보들을 Ephemeral-sequential 모드로 생성하는 것이 핵심이다. 만약 서버가 1번부터 10번까지 총 10개 있다고 해보자. (혹은 10개의 프로세스라고 볼 수도 있다.) 1번 서버(혹은 프로세스) 가 /e..
Zookeeper 주키퍼는 기본적으로 분산 시스템을 위한 코디네이터다. 주키퍼 주키퍼는 데이터를 디렉토리 구조로 관리하며 key-value 스토리지 처럼 key 로 접근 가능하다. 물론 value 를 사용하지 않아도 된다. 그럴 땐 임의로 "" 와 같이 빈 문자열을 넣어준다. 이러한 디렉토리 구조는 (당연하겠지만 tree 형태) 계층을 가지고 있고 각 데이터 노드를 znode 라고 부른다. 이러한 znode를 다루는 주키퍼 작업을 recipe 라고 부른다. 주키퍼의 쿼럼 주키퍼의 쿼럼은 적어도 하나의 앙상블 (서버군) 과 겹쳐야 하며 과반수가 넘어야 한다. 만약 서버가 5대라면 쿼럼은 3개여야 한다. 만약 5대의 앙상블 서버 들 중 2대만 쿼럼으로 지정한다면 아래와 같은 시나리오가 발생한다. 서버 s1,..
Split Brain 이란? 시스템의 두 부분 이상이 독립적으로 진행되어 시스템이 일관되지 않게 동작하는 것을 말한다. 분산 시스템에서 마스터-슬레이브 상태에서 네트워크 이상으로 인해 슬레이브는 마스터가 이상이 있다고 판단한다. 때로는 맞을 수도 있고 때로는 오탐일 수도 있다. 만약 잘못된 판단임에도 슬레이브 중 하나가 마스터로 선출이 되면 두 개의 마스터가 존재하게 된다. 이런 경우를 Split Brain 스플릿 브레인이라고 부른다.
데이터 분산 방법에는 크게 두 가지가 있다. 바로 복제(replication) 와 샤딩(sharding) 이다. 복제(replication) 복제는 같은 데이터를 복사해 여러 노드에 분산하는 방법이다. 복제에는 크게 마스터-슬레이브 (master-slave) 와 peer-to-peer 두 가지 방법이 있다. 마스터-슬레이브 마스터-슬레이브의 경우 여러 노드에 데이터를 복제하여 사용하는 방법이다. 이 때 노드를 마스터 노드와 슬레이브 노드라고 부르며, 모든 쓰기는 마스터에서 행하고 읽기는 마스터나 슬레이브에서 처리 된다. 쓰기가 실행 될 경우, 데이터는 마스터에서 슬레이브로 복제된다. 읽기를 마스터 노드와 슬레이브 노드에서 처리하므로, 읽기가 많이 발생하는 작업에서 성능 효과를 얻게 된다. (더 많은 읽기..