전체 글 1383

Hive 매니지드 테이블 및 외부 테이블

Hive 매니지드 테이블 및 외부 테이블 · Version : Hive 하이브에는 매니지드 테이블과 외부 테이블이라고 불리는 테이블 저장 방식이 있다. 이 둘의 차이점은 데이터 소유자가 하이브이냐, 아니냐로 크게 구분할 수 있다. 매지니드 테이블 (Managed Table)은 내부 테이블이라고도 불리며 하이브 속성(hive.metastore.warehouse.dir)에서 정의한 디렉터리의 하위 디렉터리를 만들어서 데이터를 저장한다. 하이브에서 매니지드 테이블을 삭제할때 테이블내의 데이터가 삭제된다. 외부 테이블은 테이블을 생성할때, EXTERNAL 키워드를 사용하며, LOCATION절에서 지정한 위치에 데이터가 존재한다는것을 하이브에게 알려준다. 하이브에서 외부 테이블을 삭제하면, 하이브 내에서 스키마만..

HDFS 저장소에 데이터를 압축해서 저장하면 더 좋을까?

HDFS 저장소에 데이터를 압축해서 저장하면 더 좋을까? · Version : HDFS HDFS 클러스터에서 데이터를 저장할때, 압축을 해서 보관하는것이 더 좋을까? 그냥 저장하는 것이 좋을까? 결론부터 말하면 반은 맞고 반은 틀리다. 즉, 압축의 특성을 잘 이해하고 사용하면 좋지만, 그렇지 못할경우 오히려 HDFS의 장점을 활용하지 못할 수도 있다. 맵리듀스가 처리할 데이터를 압축하는 방법을 고려할때, 압축 포맷이 분할을 지원하는지 여부를 이해하는것이 중요하다. 예를들어 HDFS에 1GB의 데이터 파일을 저장한다고 가정한다. 64MB 블록으로 처리할 경우 16개의 블록으로 나뉘어 HDFS에 저장된다. 맵 리듀스에서 이 파일을 입력 데이터로 사용할 경우 16개의 독립적으로 처리되는 입력 분할을 생성할 것..

Hive 테이블

Hive 테이블 · Version : Hive 하이브에서 테이블을 생성 할때에는 SQL 규칙을 따르지만 테이블의 데이터 파일 생성 위치나 사용할 포맷등 확장기능을 사용하여 유연성을 제공한다. CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later) [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])] [COMMENT table_comment] [PARTITIONED BY (col_name d..

HiveQL과 Hive 데이터베이스

HiveQL과 Hive 데이터베이스 · Version : Hive HiveQL은 Hive에서 사용하는 쿼리 언어이다. SQL과 유사하지만 SQL과 다르며 표준 ANSI SQL을 지원하지 않는다. 하이브는 로우(ROW) 레벨의 삽입과 변경, 삭제를 지원하지 않으며, 트랜잭션 또한 지원하지 않는다. 하지만 하둡이 지원하는 범위 안에서 성능 확장을 위해 다양한 기능을 제공하며, 사용자가 정의한 확장과 외부 프로그램을 하이브와 연동할 수도 있다. 하이브에서 데이터베이스 개념은 단지 테이블의 카탈로그 또는 네임스페이스이다. 데이터베이스는 논리적인 그룹을 구성할 수 있으며 대규모 작업시 동일한 테이블명의 충돌을 방지할수도 있다. 데이터베이스를 별도로 지정하지 않으면 기본 데이터베이스(default)를 사용한다. 아..

Hive 텍스트파일 인코딩

Hive 텍스트파일 인코딩 · Version : Hive 텍스트 데이터의 필드를 구분할때, 탭(TAB) 또는 콤마(,)를 많이 사용한다. 이러한 일반적인 구분 기호는 데이터안에 콤마나 탭이 포함되어 있을 경우 전체 데이터 필드가 맞지 않는문제가 발생할 수 있어 주의해야 한다. 하이브도 탭 또는 콤마 같은 필드 구분자를 지원하지만 앞에서 말한 이유 때문에 일반적으로 잘 사용하지 않는 여러 제어 문자를 기본 구분 기호로 사용한다. 아래표는 하이브에서 제공하는 구분기호이다. 만약 필드에서 탭으로 분리하려면 ‘\t’를 사용하고, 콤마의 경우 ‘,’를 사용한다. 구분기호 설명 \n 레코드 줄 바꿈 ^A 모든 컬럼을 분리한다. CREATE TABLE 문에서 명시적으로 지정할때는 8진수 코드 ‘\001’을 사용한다...

Impala Connection refuse Error

Impala Connection refuse Error - Couldn't open transport for hd-master:26000 (connect() failed: Connection refused) · Version : CDH 6.3 파이썬의 pyimpala를 사용하여 Hadoop Impala에 데이터를 입력하는 클라이언트가 있는데, 어느날부터 아래와 같은 오류를 출력하며 데이터가 입력되지 않았다. InternalException: Error requesting prioritized load: Couldn't open transport for hd-master:26000 (connect() failed: Connection refused) Error making an RPC call to Cat..

Hive 데이터 타입

Hive 데이터 타입 · Version : Hive Hive는 여러 크기의 정수형과 부동소수점, 불린형과 임의의 길이를 가지는 문자열, TIMESTAMP, BINARY 타입등을 제공한다. 각각의 데이터형은 자바로 구현되어 있어 자바 데이터 타입과 동일하게 하이브에서 사용된다. 타입 크기 리터럴 문법 예제 TINYINT 1바이트 정수형 20 SMALLINT 2바이트 정수형 20 INT 4바이트 정수형 20 BGINT 8바이트 정수형 20 BOOLEAN TRUE 또는 FALSE TRUE FLOAT 단정도 부동 소수점 3.14159 DOUBLE 배정도 부동 소수점 3.14159 STRING 문자의 시퀀스, 또는 문자열 설정가능. 작은 따옴표 및 큰따옴표 사용가능 ‘Hello Hive’, “Hello Hive”..

NoSQL 특징및 분류

NoSQL 특징및 분류 NoSQL은 아래와 같은 속성을 가지고 있다. · Key-Value (키-밸류) 값 또는 이를 응용한 데이터 모델 · 상대적으로 값싼 다수의 하드웨어를 이용 · 데이터는 분산된 노드에 파티션 및 복제되어 저장 · 데이터의 정합성 보다 단절내성에 대한 요구사항에 목적 · 2단계 커밋의 트랜잭션 수준보다, 정족수 기반의 트랜잭션 선호 데이터 모델은 아래와 같이 분류 할 수 있다. · Key-Value : 가장 단순한 데이터 모델로, 키와 바이너리 타입의 값을 저장소에 저장하는 구조이며, 데이터 조회또하 키로만 조회할 수 있다. · Column : 관계형 데이터베이스와 비슷하게 데이터는 컬럼에 저장되며, 트에빌, 컬럼등과 같은 스키마가 존재한다. · Document : 데이터의 저장단위..

NoSql, MemoryDB 2020.06.09

HDFS 데이터 저장소에는 RAID구성이 필요할까

HDFS 데이터 저장소에는 RAID구성이 필요할까 · Version : HDFS HDFS 클러스터에서 데이터노드 저장소 용도로 RAID(Redundant Array of Independent Disks)를 사용하면 이득이 있을까? 결론부터 이야기하면 이득이 없다. HDFS는 노드간에 복제하는 기능이 있어 RAID가 제공하는 중복성(redundancy)은 필요하지 않기 때문이다. 또한 성능 향상을 위해 흔히 사용하는 RAID 0 (Striping)은 모든 디스크에 DHFS 블록을 연속적으로 배열하는 HDFS의 JBOD (Just a Bunch of Disks)방식보다 느리다는 것이 밝혀졌다. 그 이유는 RAID 0의 읽기/쓰기 동작의 경우 RAID 배열에서 가장 느린 디스크의 속도에 의해 제한을 받기 때문..

CAP 이론

CAP 이론 관계형 데이터베이스는 ACID 속성을 가지고 있으며 안전하게 저장하고 정합성을 보장하는데 주목적이 있다. · Atomicity(원자성) : 트랜잭션과 관련된 모든 작업들이 정상적으로 수행 되었는지, 아니면 모든 작업들이 수행되지 않았는지를 보장한다. 원자성은 중간 단계까지 실행되고 실행이 실패하는 일은 없도록 한다. · Consistency(일관성) : 트랜잭션 실행이 성공적으로 완료되면 언제나 일관성 있는 데이터베이스 상태로 유지한다. · Isolation(고립성) : 트랜잭션이 실행되는 동안 다른 트랜잭션의 작업이 끼어들지 못하게 보장한다. 즉, 다른 트랜잭션에서 중간단계의 데이터를 확인할 수 없다. · Durability(지속성) : 성공적으로 수행된 트랜잭션은 영원히 유지되어야 한다...

NoSql, MemoryDB 2020.06.08