Big Data/HBase&Phoenix 8

Phoenix - 설치

Phoenix 는 NoSQL 데이터베이스인 HBase 를 관계 데이터베이스 처럼 사용할 수 있게 하는 오픈소스입니다.표준 SQL, JDBC API, ACID 트랜잭션등을 제공합니다. 그럼 설치 방법에 대해 알아보겠습니다. (HBase는 stand-alone 또는 distrbuted 모드로 설치가 완료된 상태라고 가정합니다.)설치1. 먼저 phoenix 바이너리 버전을 다운로드 받습니다.(hbase 버전과 호환되는 버전을 받아야 합니다.) $ wget http://mirror.apache-kr.org/phoenix/apache-phoenix-4.8.0-HBase-1.1/bin/apache-phoenix-4.8.0-HBase-1.1-bin.tar.gz 2. 다운로드 파일의 압축을 해제합니다. $ tar zx..

Phoenix Query Server

Phoenix Query Server(PQS) 는 Phoenix 와 HBase 간의 통신을 위한 또 하나의 방법입니다. (기존 : phoenix thick client) Phoenix 는 버전 4.4 부터 thin 클라이언트와 stand-alone 서버를 도입하였습니다. PQS 는 클라이언트를 위해 phoenix 커넥션을 관리하는 Java 서버이며, 클라이언트는 최소한의 dependency 만을 가지고 구현된 JDBC driver 입니다.PQS 는 JDBC(Client)-Http(Server) 구조의 데이터베이스 드라이버를 구현하기 위한 프레임워크인 Avatica 를 기반으로 구현되어있기 때문에 Avatica 와 마찬가지로 두 가지 형태의 전송 메커니즘을 제공합니다.JSONProtocal Buffers(..

HDP 2.4 에서 phoenix 4.4 에서 4.8 버전으로 업그레이드 하기

1. Phoenix 의 4.8 버전을 다운로드 하고 압축을 풀어줍니다. $ wget http://mirror.navercorp.com/apache/phoenix/apache-phoenix-4.8.0-HBase-1.1/bin/apache-phoenix-4.8.0-HBase-1.1-bin.tar.gz$ tar zxvf apache-phoenix-4.8.0-HBase-1.1-bin.tar.gz 2. 기존 ambari 를 통해 설치한 4.4 버전의 라이브러리 파일들과 실행 파일들 백업하고, 기존 심볼릭 링크 파일들을 제거합니다. # 라이브러리 파일 백업$ cd /usr/hdp/current/phoenix-server$ mv phoenix-4.4.0.2.3.2.0-2950-client.jar phoenix-4.4..

Phoenix - Joins (조인)

Phoenix 는 표준 SQL 조인 문법을 조인합니다. 아래와 같이 3개의 거래 관련 테이블과 row들이 있다고 가정해보겠습니다.(Orders, Customers, Items) Orders 테이블 :OrderIDCustomerIDItemIDQuantityDate1630781 C004 I001 650 09-01-20131630782 C003 I006 2500 09-02-20131630783 C002 I002 340 09-03-20131630784 C004 I006 1260 09-04-20131630785 C005 I003 1500 09-05-2013 Customers 테이블 :CustomerIDCustomerNameCountryC001 Telefunken GermanyC002 Logica BelgiumC0..

Phoenix - Row timestamp

Phoenix v4.6 부터는 phoenix 컬럼에 HBase 의 native row timestamp 를 맵핑할 수 있는 방법을 제공합니다. 이는 HBase 에서 제공하는 시간 범위에 대한 다양한 최적화의 이점을 얻을 수 있습니다. ROW_TIMESTAMP 로 설계된 컬럼은 특정 제약을 가지게 됩니다. TIME, DATE, TIMESTAMP, UNSIGNED_LONG 타입의 primary key 컬럼만 ROW_TIMESTAMP 로 사용 가능하나의 primary key 컬럼만 ROW_TIMESTAMP 로 사용 가능컬럼의 값은 null 이 될 수 없음 (HBase 의 row timestamp 와 직접 맵핑되기 때문에)테이블을 생성할 때만 선언 가능ROW_TIMESTAMP 컬럼의 값은 음수는 불가 (epoc..

Phoenix - Paged Queries (페이징 쿼리)

Phoenix 에서 페이징 쿼리를 사용하기 위해서는 아래 두 가지를 방법을 이용하여 처리할 수 있다.Row Value Contructors (RVC)OFFSET 과 LIMIT (4.8 버전 이상부터 지원)Row Value Constructors (RVC) 를 이용한 방법OFFSET (LIMIT) 은 익숙한 개념이나 Row Value Constructors 는 좀 생소하다.RVC 는 괄호에 묶여있는 컬럼들을 순차적으로 정렬된 새로운 값을 만들어 낸다고 보면 된다. 아래 예를 들어 보자. 1WHERE (last_name,first_name) = ('Jane','Doe')cs last_name, first_name 을 RVC 로 정의하고, 조건으로 ‘Jane’ 과 ‘Doe’ 로 묶었다. 위 절을 다시 풀어보면..

Phoenix - Salted Tables

HBase의 sequential write(순차적 쓰기)에서 row key 가 만약 일정하게 증가하게 되면, region server 에 hotspotting (region 서버 한 곳에 집중적으로 쓰기 작업이 이루어지는 경우) 을 유발시킬 수 있다.Row key 를 salting 함으로써 이러한 문제점을 완화 시킬 수 있다. Phoenix 는 특정 table에 salting byte를 이용하여 row key 를 salting 하는 방법을 제공한다.Table 생성 시 “SALT_BUCKETS” 이라는 속성에 값(1~256)을 할당하여 사용할 수 있따. CREATE TABLE table (a_key VARCHAR PRIMARY KEY, a_col VARCHAR) SALT_BUCKETS = 20; Salte..

Phoenix - Secondary Index

Phoenix의 document 를 기반으로 작성한 보조 인덱스에 대한 내용이다. 뒷 부분으로 갈 수록 이해하기 어려워 뒷부분은 거의 document 내용 그대로이다. HBase 에서는 primary row key 에 의해 정렬된 단일 인덱스만 존재함primary row key 이외의 방법으로 레코드에 접근하는건 잠재적으로 table 을 full scan 하는 위험이 있음secondary indexing (인덱스로 형성한 column 이나 expression) 이 새로운 축을 따라 검색이나 range scan을 가능하게 함으로써 row key를 대체 covered indexes (index 페이지에서 row 식별자를 통해 index column 외의 데이터는 실제 데이터에 접근) 일종의 보조 인덱스ind..