나그네소
GOLDILOKCS HADOOP 본문
hadoop 관련 파일 |
hadoop 관련 ticket |
[ wiki ]
ticket-2792
What Hadoop |
[ Hadoop ]
> Key-Value 형식의 비정형 데이터들을 Map/Reduce? 방식을 이용하여 여러 저장소에 분산 저장하고 관리하는 시스템을
위한 Software Framework
> 하둡(Hadoop)은 대용량 데이터의 관리와 분석에 적합한 시스템이다. '빅 데이터'에 대한 관리와 데이터웨어하우스의 병렬 처리에
대한 요구가 증가하고 클라우드와 분산 컴퓨팅이 유행하면서 가장 많이 언급되고 있는 솔루션이다.
하둡은 여러 컴퓨터로 구성된 클러스터에 걸쳐 있는 대용량 데이터를 분산 처리하기 위한 프레임워크로써 자바 기반의 오픈소스
소프트웨어이다. 하둡은 크게 하둡 분산 파일 시스템(HDFS, Hadoop Distributed File System)과 맵리듀스(MapReduce)로 구성된다.
[ Sqoop ]
스쿱(Sqoop)은 하둡과 관계형 데이터베이스 간의 데이터 전송을 위한 도구로써, 오픈소스 소프트웨어이다. 사용자는 스쿱을 사용하여
관계형 데이터베이스 시스템(RDBMS)에서 하둡 분산 파일 시스템(HDFS, Hadoop Distributed File System)으로 데이터를 가져오고(import)
다시 RDBMS로 내보낼(export) 수 있다.
스쿱은 가져올 데이터를 스키마로 표현하기 위해 데이터베이스에 의존하여 이 과정의 대부분을 자동화한다. 스쿱은 데이터 import와
export를 위해 맵리듀스를 사용한다. 맵리듀스는 장애 내구성(Fault Tolerance)과 병렬 작업(Parallel Operation)을 제공한다.
[ Connector ]
하둡 커넥터(Connector)는 하둡과 DBMS 서버 사이의 효율적인 데이터 전송을 용이하게 하며, 운영 데이터는 DBMS에서, 데이터 분석은
하둡에서 처리할 수 있도록 해 준다. 즉, DBMS 하둡 커넥터는 하둡에서의 데이터 처리를 위해 사용자가 DBMS 서버에 접속하여 데이터를
HDFS 또는 Hive로 내보내도록 해 준다.
DBMS 하둡 커넥터는 스쿱 기반으로 동작하며 스쿱이 제공하는 거의 모든 기능을 지원한다. 또한, 스쿱과 유사한 커맨드 라인 인자 구조를
사용하기 때문에, 이전에 스쿱을 사용한 경험이 있는 사용자들은 수월하게 사용할 수 있을 것이다.
hadoop 기반 지식 |
[ Hadoop (HDFS) ]
* Key-Value 형식의 비정형 데이터들을 Map/Reduce? 방식을 이용하여 여러 저장소에 분산 저장하고 관리하는 시스템을
위한 Software Framework
* Java로 구현됨
[ Aparch Spark ]
- Hadoop 용으로 개발된 open source In-memory Big Data 분석 프로그램
- Scalar 라는 언어로 구현되어 있음(개발자는 APP 개발 시 JAVA, Python, Scalar, SQL, R 등 중에 선택 가능)
- HDFS(Hadoop Distributed File System) 뿐만 아니라 다른 저장소 타입도 지원 가능
[ 시스템 구성 방식 분류 ]
- Hadoop의 HDFS에 직접 접속 후 데이터를 가져와서 DBMS 내에서 질의 처리 후 export
- Greenplum(pipelined?), Altibase(batch)
Aparch Spark가 관리하는 저장소 중 한 개로 동작하며 데이터 입출력 기능한 수행(JDBC)
- Greenplum, SAP HANA
[ Greenplum ]
- 방식 1 : gphdfs ( Greenplum이 Hadoop File System에 접근하는 프로토콜 명, Java agent(JVM), text command tool )
- 방식 2 : Greenplum Spark Connector
> 준비
- 관련 environment variable : JAVA_HOME, HADOOP_HOME
- 관련 db 프로퍼티 :gp_hadoop_target_version, gp_hadoop_home
> 권한 부여
- gphdfs 프로토콜을 사용하기 위한 권한을 사용자에게 부여
- GRANT INSERT(SELECT) ON PROTOCOL gphdfs TO 사용자;
- Greenplum admin OS 사용자에게 Hadoop 디렉토리/파일에 접근하기 위한 OS 권한 부여
> External Table에 gphdfs protocol을 명시
- Hadoop HA cluster에서 LOCATION 절은 논리적 nameservices id (hdfs-site.xml configuration file의 dfs.nameservices 프로퍼티)를 참조.
- 예를 들어, dfs.nameservices 가 mycluster 이면 LOCATION 절은 아래의 format을 가진다
> 압축방법 명시
- compress : true/false
- compression_type : BLOCK or RECORD
- codec_level : 1 ~ 9
> 지원하는 hdfs 파일 포맷
- CSV
- TEXT
- Schema + Data가 한 파일에 저장됨(JSON 형태)
- Parquet
- 압축효과 극대화를 위해 Columnar 방식으로 저장됨
> 테이블 생성 예
-
readable external table for an HDFS file named filename.txt on port 8081CREATE EXTERNAL TABLE ext_expenses (name text,date date,amount float4,category text,desc1 text )FORMAT 'TEXT' (DELIMITER ',');
-
set of readable external tables that have a custom format located in the same HDFS directory on port 8081=# CREATE EXTERNAL TABLE ext_expenses (name text,date date,amount float4,category text,desc1 text )FORMAT 'custom' (formatter='gphdfs_import');
-
HDFS directory for a writable external table on port 8081 with all compression options specifiedCREATE WRITABLE EXTERNAL TABLE ext_expenses (name text,date date,amount float4,category text,desc1 text )FORMAT 'custom' (formatter='gphdfs_export');
> 업무처리 방식
- 데이터 입/출력방식 : 자체 제작한 agent를 이용한 batch 처리
- 질의 처리 엔진 : DBMS의 SQL processing engine
> 장단점
- 장점
- SQL로 모든 업무를 처리하니 APP 개발이 쉽다.
- 단점
- 데이터를 읽고 쓰는 agent 프로그램 및 프로토콜이 필요하다(Goldilock가 개발한다면).
- streaming 처리나 병렬 처리 등은 확인 안됨
- machine learning등의 AI 처리는 불가능
[ Altibase ]
- open source 프로그램인 sqoop을 이용하여 hadoop과 연결한다.
- sqoop은 JDBC API를 이용하여 DB와 연결 및 동작(export/import)한다.
- sqoop이라는 툴을 OS Prompt 상에서 실행시켜 데이터를 export/import 한다(SQL 로 불가)
- sqoop이 공식적으로 지원하지 않기때문에 Alibase에 커스터마이징 된 ConnManager? 및 SqlManager? 클래스(Altibase 하둡 커넥터)를 다운받아 사용한다.
> 업무처리 방식
- 데이터 입/출력방식 : Hadoop 데이터 ETL 툴인 open source 프로그램 'sqoop' 을 이용한 batch 처리
- 질의 처리 엔진 : DBMS의 SQL processing engine
> 장단점
- 장점
- SQL로 질의를 처리하니 사용자에 익숙하다.
- 단점
- sqoop에서 연결 및 SQL 처리에 필요한 JDBC class 제공 필요
- input(OS 명령) -> SQL 처리 -> output(OS 명령) 형식으로 APP를 개발해야 함
- streaming 처리나 병렬 처리 등은 확인 안됨
- deep learning등의 AI 처리는 불가능
[ SAP HANA ]
> SAP(HANA) VORA
- Aparch Spark를 SAP에서 확장한 프로그램
- SAP HANA를 저장소로 이용할 수 있음
> 업무 처리 방식
- 데이터 입/출력방식 : open source 인 Spark를 이용한 batch 처리
- 질의 처리 엔진 : Spark의 Big Data processing engine
> 장단점
- 장점
- 빠른 데이터 분석 성능
- machine learning등의 AI 처리 지원
- Hadoop 외에도 다양한 데이터 저장 형식 지원
- 일반 JDBC만 제공하면 되는 듯(확인 필요)
- 단점
- SQL로 분석하는 것이 아니라 함수를 만들어서 하는 것이라서 APP 개발이 조금 번거롭다.(최종 테이블 생성 후에는 'Spark SQL'로 SQL 질의 가능)
Hadoop 과 DBMS 연동 방안 |
[ Hadoop DBMS 연동 ]
: Apache Spark 과 같은 역할을 하는 것중 국내 제품 타조가 있지 않을까.
[ Altibase Hadoop ]
알티베이스의 경우 Hadoop 1.0 버전에 접속을 지원하는 sqoop 1.4.4를 기준으로 지원한다.
분석 결과 대략 1000라인 미만의 java 소스로 이루어 진 것으로 생각된다.
'sunjesoft > Goldilocks Util' 카테고리의 다른 글
Goldilocks 넷볼트(백업 솔루션) (0) | 2019.06.18 |
---|---|
Goldilocks 쿠버네티스 (0) | 2019.06.12 |
GOLDILOCKS ODBC 설치 (0) | 2019.01.30 |
Goldilocks PPC64LE 설치 및 IBM 설정 (0) | 2019.01.18 |
Goldilocks Docker 사용 (0) | 2019.01.18 |