최근 몇 년간 다양한 cloud 서비스가 개발/확산으로 WEB, WAS, Storage 심지어 ERP까지 AWS, Azure, Google cloud와 같은 public cloud 서비스를 이관하고 있다.Public cloud 서비스의 가장 큰 장점은 확장성과 비용이기 때문에많은 데이터를 저장해야 하고 다수의 node가 필요한 hadoop cluster를 구축하기 좋은 선택이다. 그리고 같은 이유로 block storage(HDFS)를 사용하는 대신 object storage를 사용하기 시작했다. * * * Bigdata 시스템에서 왜 object storage를 사용할까? 1. HDFS capacity overhead를 줄여준다. HDFS는 fault tolerance를 보장하기 위해서 데이터블록을 3..
hdfs_balancer HDFS Balancer 수행 간단 수행 명령어 sudo -u hdfs hdfs balancer [-policy ] [-threshold ] [-blockpools ] [-include [-f | ]] [-exclude [-f | ]] [-idleiterations ] [-runDuringUpgrade] 옵션이 필요 이상으로 많은 것 처럼 보인다. 하지만 모두 필요에 의해서 만들어진 것이니 간단히 보고 넘어가면 좋을 듯 하다.hdfs dfsadmin -setBalancerBandwidth 1073741824 // 1GB로 대역폭을 변경 그 밖에도 parameter 설정을 통한 많은 옵션들이 존재한다. 자세한 사항은 아래를 참고하라. (https://community.hortonw..
Hive Partitioning 개요 Hive 파티셔닝의 개념은 RDBMS 와 크게 다르지 않다. 테이블을 하나 이상의 키로 파티셔닝 할 수 있으며, 이것은 각 테이블에 데이터가 얼마나 저장될 것이냐를 기준으로 설정하면 된다. 예를 들어 테이블이 id, name, age 3개의 칼럼으로 구성되어 있고 age로 파티셔닝 하기로 설정하였더만, 같은 나이를 갖는 row 들이 물리적으로 같이 저장된다. 파티션 테이블 일반적으로 non-partition 테이블은 아래와 같이 선언할 수 있다. create table salesdata_source( salesperson_id int, product_id int, date_of_sale string ) 이와 같은 구조를 'data_of_sale' 로 아래와 같이 파티..
Hive LLAP 사이징 및 설정 Hive LLAP 사이징 및 설정1. 기본 클러스터 설정1) LLAP 를 수행할 YARN 노드를 설정하라.사용자 요구 및 사용하는 작업workload에 따라서 일반적으로 클러스터의 15~50%의 노드를 LLAP로 사용하거나, 전체 클러스터를 LLAP 노드로 설정할 수 있다. Hive LLAP를 수행하기 위한 3가지 YARN container 종류가 있다. 데이터를 직접 처리하는 execution daemon 쿼리 수행을 관리하기 위한 쿼리 코디네이터, TEZ AMsexecution daemon을 모니터링 하고 AM을 실행하기 위한 SliderLLAP에 할당된 용량의 대부분이 execution daemon에 의해서 사용된다. 최적의 결과를 위해서 YARN 노드 전체가 ex..
* Apache HBase Write Path - Apache Hbase 는 hadoop의 HDFS를 기반으로 하는 database이다. HDFS 상의 파일은 생성 후에 오직 append 기능만을 제공하며 read 작업 수행 시 block 단위로 full-scan 이 이루어지는데, HBase를 사용하면 HDFS 상의 데이터를 랜덤액세스random access 하거나 업데이트update 가능하도록 해준다. HBase는 어떻게 low-latency로 이런 read/write 를 제공할 수 있을까? - Hbase write path는 hbase의 put/delete 연산이 어떻게 이루어지는지에 대한 방법을 나타낸 것으로 client 에서 시작하여 region server를 거쳐 결국에는 HFile이라고 불리는..
SETUP Non-transactional mutable 인덱스는 region server 와 master server에 특별한 설정을 함으로써 phoenix가 해당 테이블에 대해 mutable 인덱싱을 수행하는 것을 보장한다. 만약 올바르게 설정이 되어 있지 않다면 세컨더리 인덱싱을 사용할 수 없다. 아래의 값들을 hbase-site.xml 에 추가하고 난뒤 클러스터를 rolling restart 수행해야 한다. 각 region 서버에 다음 설정을 추가해야 한다. hbase.regionserver.wal.codec org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec 위의 properties는 커스텀 WAL edits을 쓰게 설정하고 인덱스 업데이..
Secondary Indexing Secondary index 는 기존에 HBase에서 설정된 primary row key가 아닌, 별도의 primary 접근 경로를 추가해 통해 데이터에 직접 접근하는 방식이다. (HBase에서는 primary row key를 사전적순서로 정렬된 하나의 Index만 가지고 있다.) primary row가 아닌 다른 방식으로 데이터를 접근하기 위해서는 설정한 filter 값과 상관 없이 내부적으로 full-scan(테이블의 모든 rows에 접근)이 이루어져야 한다. 하지만 secondary index를 이용하면 미리 설정한 column 이나 expression 을 통해서 row key 에 접근할 수 있고 full-scan이 아닌 range-scan 이나 point-look..
* Transaction (beta 기능) Phoenix는 기존 HBase 의 row-level 의 트랜잭션을 넘어서, Phoenix는 여러 row나 table을 대상으로 트랜잭션을 지원하는데, Apache Tephra를 통해서 ACID를 보장한다. Tephra는 현재의 트랜잭션에 대한 snapshot을 제공하는데, 이는 multi-version의 동시성 제어를 지원한다. 이 기능을 사용하기 위해서는 phoenix 에서 다음과 같은 두 단계의 설정이 필요하다 1. hbase-site.xml 에 다음 property 추가 phoenix.transactions.enabled true 2. server-side(hmaster) hbase-site.xml 에 트랜잭션 매니저 설정값 입력. (Tephra의 'Tr..