HBase 소개

Nosql/HBase 2016. 8. 18. 23:53

# HBase

------------


1. 정의 : HDFS에 구현한 분산 컬럼 기반 database


2. hiostory :

- 2006년 말 : 구글의 빅테이블(구조화된 데이터용 분산 스토리지 시스템)을 모델 을 기반으로 시작

- 2007년 10월, HBase 배포판 open

- 2010년 5월, 하둡 서브프로젝트 > 아파치 최고 수준 프로젝트 로 등록

- 도입 사례 : 어도비, 스텀블 어폰, 트위터, 야후 등


3. pre requirements

- java 7 이상


4. architecture

 

- feature

- Master - Slaver(region server) 구조 이다

- Zookeeper : 분산 시스템 코디네이터

- region 단위로 auto sharding 을 지원


5. 데이터 모델

- Table

- Row들의 집합 (Row Key가 있으며 다수의 column family로 구성)

- Schema 정의서 Column Family 만 정의

- Row Key

- 임의의 Byte열로 사전순으로 내림차순 정렬

    - 빈 Byte문자열은 테이블의 시작과 끝을 의미

- 문자열, 정수 바이너리, 직렬화된 데이터 구조까지 어떤 것도 로우키가 될 수 있다

- Column Family

- Column들의 그룹으로 모든 컬럼패밀리의 Member는 같은 접두사를 사용

- NOSQL:Cassandra와 NOSQL:HBASE 는 NOSQL이라는 컬럼 패밀리의 멤버컬럼

- 컬럼패밀리 접두사는 반드시 표시할 수 있는 문자로 구성

- 테이블 스키마에서 정의의 한 부분을 먼저 지정해야 한다

- 모든 컬럼패밀리 멤버는 물리적으로 파일시스템에서 함께 저장

- 새로운 컬럼패밀리 멤버는 동적으로 추가가능

- Cell

- ROW KEY & Column & Version이 명시된 튜플

- 값은 임의의 Byte열이며 Timestamp

- 테이블 셀은 버전관리 된다 (오직 셀들만)


6. 논리 스토리지 구조

- 하나의 key-value (column)에 대한 data block

- Row key : sharding key 이면서 유일한 key

- Column Quailifier : 컬럼 명

- row size 계산

- physical key 에 해당하는 고정 값 들의 byte 합이 기본으로 저장된다

- 따라서 rowkey, column family name, column qualifier 의 이름은 짧게 유지하는 것이 좋다


6. Sharding 기준

    

- Row key 기준으로 Range Sharding 방식을 따른다

- Row range 단위로 물리 Region 을 생성

- Region 을 RegionServer 로 분산하여 관리


7. write / read 방식

- write

- step 1 : wal 파일에 transaction 정보 입력

- step 2 : memstore 에 데이터 기록 후 client 에 결과 return

- step 3 : memstore full 시 disk 에 write

- step 4 : disk compaction

- read

- step 1 : read from memstore

- step 2 : step 1 에서 결과를 받지 못하였을 때, read from block cache

- step 3 : step 2 에서 결과를 받지 못하였을 때, read from disk

          (block cache write 이후에 client 에게 전달)


8. replication

- master - slave replication : master(write) <- sync - slave

- master - master replication (== peer to peer) : 각각이 master 로 write 실행

- cyclic replication : write node <- replica - other node

- request 에 따라 매번 다른 node 에 write 를 요청하며 write 가 일어난 node 를 다른 node 에서 replication 한다


9. consistency level

- write consistency : wal 파일과 memstore 에 저장 성공이면 replica 의 성공여부와 상관없이 success

- read consistency : 선택한 하나의 node 에서 read 요청

(== cassandra 의 ONE level 과 유사)


10. DR 아키텍쳐

    - cluster 간 replication

- master cluster 는 wal reader 가 wal 파일 을 읽어 waledits 형태로 전송 준비를 함

- replication 우선순위 queue 에 waledits 를 저장

- slave cluster 는 queue 에서 오래된 waledits 부터 비동기 방식으로 순차적으로 처리

    - zookeeper 역할

    - slave cluster 등록

    - replication 시작/중지

    - queue 에 wal 등록

    - region server 의 장애 핸들링


참조

https://hbase.apache.org/book.html

http://wiki.gurubee.net/display/DEVSTUDY/NoSQL+HBase

Posted by 감각적신사
,

# Python WEB Project

-------------


1. python web 프로젝트 framework 선택

    - Django

    - MVC 기반 패턴대로 개발할 수 있도록 이미 구조화 되어 있음

    - ORM(Object-Relational Mappings) 기능 지원

    - 객체와 관계형 데이터베이스 간의 매핑

        - DBMS Driver 지원 (MySQL, PostgreSQL, Oracle 등)

- Viewing, template 엔진 제공

- session 관리 기능 지원

    - flask

        - 가볍고 심플한 Framework

        - 자유도가 아주 높다 == 원하는 라이브러리와 패키지 를 개발자가 붙여야 한다


2. 개발 환경

    - ubuntu 14.04

    - python 2.7.10


3. Django download

- https://www.djangoproject.com/download/


4. Django 설치 및 간단 실행

- 압축해제 tar xvfz Django-1.10.tar.gz

- 설치

- cd /download-path/Django-1.10

- sudo python setup.py install

- admin 파일 실행

- cd /download-path/Django-1.10/django/bin 

- python django-admin.py startproject myproject .

- cd /download-path/Django-1.10/django/bin/myproject

- python manager.py runserver 0.0.0.0:8000


5. postgreSQL 설치 및 실행

- 설치

- sudo apt-get libpq-dev postgresql postgresql-contrib

- DB 접속 및 데이터베이스 생성

- sudo su - postgres # postgres 유저 로그인

- psql               # postgres cli 접속

- CREATE DATABASE myproject; # DB 생성

- USER 생성 및 권한 부여

- CREATE USER myprojectuser WITH PASSWORD 'password';

- ALTER ROLE myprojectuser SET client_encoding TO 'utf8';

- ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';

- ALTER ROLE myprojectuser SET timezone TO 'Asia/Seoul';

- GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;

       


6. django 와 postgre 연결하기

- cd /download-path/Django-1.10/django/bin/myproject/

- vi setting.py

# 추가

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.postgresql_psycopg2',

'NAME': 'myproject',

'USER': 'myprojectuser',

'PASSWORD': 'password',

'HOST': 'localhost',

'PORT': '5432',

}

}

          

- python manage.py makemigrations

- python manage.py migrate

          

7. Django 실행

- cd /download-path/Django-1.10/django/bin/myproject/

- python manage.py runserver 0.0.0.0:8000

- admin 유저 생성 및 web 접속


참고


'개발 > python' 카테고리의 다른 글

Python multiprocess vs multithread  (0) 2018.05.24
django mysql rest api project  (0) 2018.03.11
Django 프로젝트에서 batch job 돌리기  (0) 2018.01.23
Django 프로젝트  (0) 2017.11.29
Django 프로젝트 생성 및 App 만들기  (0) 2017.08.27
Posted by 감각적신사
,

# Openstack 아키텍쳐

---------------


1. Openstack concept diagram : API 호출 관계 에 따른 구성도

 

- 모든 API 는 Keystone 을 통해 인증 이후 각 service 를 호출한다 

   (단, swift 인증은 거쳐도 되고 자체 인증으로 처리해도 된다)

- 이 구성을 하기 위한 설치 순서는

- Keystone

- Swift : Glance 가 저장할 img 파일 저장 용도

- Glance : Nova 에서 사용할 VM 이미지의 profile 보유

- Nova, Cinder, Newtron

- Ceilometer : 각 service 에 대한 미터링

- Horizon

- Heat


         

2. Openstack logical diagram : concept diagram 보다 밑단의 구성도

 

- nova, cinder 는 각각 오래 걸리는 API 호출로, message queue 서비스를 이용하여 처리한다

- 두 서비스의 flow 및 구성이 비슷하다

- 각 service 는 각자의 정보를 저장하는 database 를 보유하고 있으며, 

   keystone 과 통신할 때 인가 정보(policy backend 를 가지고 있다)

- horizon 에서 제공하는 서비스가 openstack 의 전체 기능은 아니다

   각 서비스에 대한 미구현한 API 기능이 있을 수 있다


3. Openstack 을 이용한 cloud 아키텍쳐 설계

- 사용 목적을 고려하여 tenant의 수와 각각의 역할, 필요한 service(nova, swift, cinder ... ) 을 생각한다

- 주요 아키텍쳐 방향

- 약결합 시스템(Loosely Coupled System) 으로 각각의 service 를 선택, 추가 하기 용이하다

- 필요한 service 를 선택할 수 있다 == 모든 service 를 반드시 설치해야 하는 것은 아니다

- backend service 를 선택할 수 있는 폭이 넓다

- keystone 이 필요한 RDB 는 mariaDB, MySQL 선택이 자유롭다

- keystone 이 필요한 memory DB는 memcachedDB, redis 선택이 자유롭다

- 환경의 제약이 없다

- 멀티 리전으로 구성하고자 한다면 keystone 을 따로 node 로 구성해야 한다

- 리전별로 service end point 가 다를수 있기 때문이다


4. Openstack 아키텍쳐 모델 sample

- 2 nodes : 컨트롤 node(nova-compute, nova-스케쥴러 포함) + 컴퓨트 node (+ 네트워크 node : 생략가능)

- 3 node : 컨트롤 node + 네트워크 node (NSX, ovs) + 컴퓨트 nodes 

         


'Cloud > Openstack' 카테고리의 다른 글

Openstack 주요 서비스 2  (0) 2016.08.16
Openstack 주요 서비스 1  (0) 2016.08.16
Openstack is  (0) 2016.08.16
Posted by 감각적신사
,