Drill
- 스키마가 정해지지 않은 데이터에 대해 SQL 쿼리를 실행할 수 있다.
- HDFS, MongoDB, S3, Azure, GCP, JSON 등 다양한 파일 시스템의 상위에 위치할 수 있다.
- JDBC 드라이버를 통해 시각화 도구나 관계형 DB에 연결할 수 있다.
- 처리속도가 빠르지만 시스템에 설계되지 않은 상황에서는 효율적이지 않다.
- 다른 DB 테이블을 조인할 수 있다.
Drill 쿼리
- 평점 데이터 Hive로
CREATE DATEBASE movielens;
- u.data 업로드
- 스파크를 통해 몽고디비에 데이터 적재
spark-submit --packages arg.mongodb.spark:mongo-spark-connenctor_2.11:2.0.0 MongoSpark.py
- Drill 설치
wget <http://archive.apache.org/dist/drill/drill-1.12.0/apache-drill-1.12.0.tar.gz>
tar-xvf apache-drill-1.12.0.tar.gz
bin/drillbit.sh start-Ddrill.exec.port=8765
- 127.0.0.1:8765에 접속하면 드릴 UI를 확인할 수 있다.
- hive에서 metastore를 thrift://localhost:9083으로 변경
- 드릴은 기본적으로 SQL과 똑같다.
- 몽고디비나 하이브에 연결하여 각 DB의 언어가 아니라 SQL로 데이터를 쿼리할 수 있다. → HDFS, HBase에도 연결할 수 있다.
- 다른 테이블 조인
SELECT u.occupation, COUNT(*) FROM hive.movielens.ratings r JOIN mongo.movielens.users u ON r.user_id = u.user_id GROUP BY u.occupation;
Phoenix
- HBase에서 SQL을 사용하고 싶을 때 제격이다.
- 대기 시간이 매우 짧다.
- 사용자 정의 함수를 사용할 수도 있다.
- 맵리듀스, 스파크, 하이브 등과 함께 통합할 수 있다.
- why?
- 빠르다.
- Hbase 데이터를 쓸 건데 SQL이 필요하다면 적절하다. → 드릴보다 HBase 최적화
- SQL을 쓸 수 있어 편하다.
- 피닉스 아키텍처
- HBase 아키텍처 위에서 작동한다.
- 피닉스 사용방법
- CLI
- API
- JDBC
Phoenix의 간단한 사용
- HDP 2.6.5라면 설치는 넘어가도 된다.
- python sqlline.py
- 테이블 생성
CREATE TABLE IF NOT EXISTS us_population(
start CHAR(2) NOT NULL,
city VARCHAR NOT NULL,
population BIGINT
CONSTRAINT my_pk PRIMARY KEY (state,city));
- 피닉스는 INSERT가 아닌 UPSERT 지원
UPSERT INTO US_POPULATION VALUES ('NY', 'New York', 8143197);
UPSERT INTO US_POPULATION VALUES ('CA', 'LA', 2123184);
Phoenix와 Pig 통합
- 테이블 생성
CREATE TABLE IF NOT EXISTS user(
USER_ID INTEGER NOT NULL,
AGE INTEGER NOT NULL,
GENDER CHAR(1),
OCCUPATION VARCHAR,
ZIP VARCHAR
CONSTRAINT my_pk PRIMARY KEY (USER_ID));
- pig에 데이터 로드 코드 다운
wget <http://media.sundog-soft.com/hadoop/phoenix.pig>
pig phoenix.pig
Presto
- 드릴과 비슷한 기능을 한다.
- why?
- 드릴+카산드라 커넥터를 사용할 수 있다.
- 페이스북, 에어비앤비, 드롭박스 등 다양한 기업에서 사용하고 있다.
- 여러 소스의 데이터를 결합하여 전체 조직에서 분석할 수 있다.
- 오픈 소스다.
- 카산드라, 하이브, 몽고디비, 카프카, MySQL 등과 연결 될 수 있다.
Presto 설치
wget <https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.268/presto-server-0.268.tar.gz>
tar-xvf
wget <http://media.sundog-soft.com/hadoop/presto-hdp-config.tar.gz>
tar-xvf
wget <https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.268/presto-cli-0.268-executable.jar>
bin/launcher start
localhost:8090에 접속
Presto와 Cassandra 통합
- 카산드라 이용
service casssandra start
nodetool enablthrift
cqlsh --cqlversion="3.4.0"
- 프레스토 설정(카산드라와 하이브 동시에 연결)
cd etc/catalog
vi cassandra.properties
connector.name=cassandra
cassandra.contact-points=127.0.0.1
bin/launcher start
bin/presto --server 127.0.0.1:8090 --catalog hive, cassandra
- 쿼리
SELECT u.occupation, count(*) FROM hive.default.rations r join cassandra.movielens.users u on r.user_id=u.user_id GROUP BY u.occupation;
- 다양한 커넥터에 대한 내용은 공식문서를 참고하면 자세히 알 수 있다.Drill
- 스키마가 정해지지 않은 데이터에 대해 SQL 쿼리를 실행할 수 있다.
- HDFS, MongoDB, S3, Azure, GCP, JSON 등 다양한 파일 시스템의 상위에 위치할 수 있다.
- JDBC 드라이버를 통해 시각화 도구나 관계형 DB에 연결할 수 있다.
- 처리속도가 빠르지만 시스템에 설계되지 않은 상황에서는 효율적이지 않다.
- 다른 DB 테이블을 조인할 수 있다.
- 평점 데이터 Hive로
CREATE DATEBASE movielens;
- u.data 업로드
- 스파크를 통해 몽고디비에 데이터 적재
spark-submit --packages arg.mongodb.spark:mongo-spark-connenctor_2.11:2.0.0 MongoSpark.py
- Drill 설치
wget <http://archive.apache.org/dist/drill/drill-1.12.0/apache-drill-1.12.0.tar.gz> tar-xvf apache-drill-1.12.0.tar.gz bin/drillbit.sh start-Ddrill.exec.port=8765
- 127.0.0.1:8765에 접속하면 드릴 UI를 확인할 수 있다.
- hive에서 metastore를 thrift://localhost:9083으로 변경
- 드릴은 기본적으로 SQL과 똑같다.
- 몽고디비나 하이브에 연결하여 각 DB의 언어가 아니라 SQL로 데이터를 쿼리할 수 있다. → HDFS, HBase에도 연결할 수 있다.
- 다른 테이블 조인
PhoenixSELECT u.occupation, COUNT(*) FROM hive.movielens.ratings r JOIN mongo.movielens.users u ON r.user_id = u.user_id GROUP BY u.occupation;
- HBase에서 SQL을 사용하고 싶을 때 제격이다.
- 대기 시간이 매우 짧다.
- 사용자 정의 함수를 사용할 수도 있다.
- 맵리듀스, 스파크, 하이브 등과 함께 통합할 수 있다.
- why?
- 빠르다.
- Hbase 데이터를 쓸 건데 SQL이 필요하다면 적절하다. → 드릴보다 HBase 최적화
- SQL을 쓸 수 있어 편하다.
- 피닉스 아키텍처
- HBase 아키텍처 위에서 작동한다.
- 피닉스 사용방법
- CLI
- API
- JDBC
- HDP 2.6.5라면 설치는 넘어가도 된다.
- python sqlline.py
- 테이블 생성
CREATE TABLE IF NOT EXISTS us_population( start CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINT CONSTRAINT my_pk PRIMARY KEY (state,city));
- 피닉스는 INSERT가 아닌 UPSERT 지원
Phoenix와 Pig 통합UPSERT INTO US_POPULATION VALUES ('NY', 'New York', 8143197); UPSERT INTO US_POPULATION VALUES ('CA', 'LA', 2123184);
- 테이블 생성
CREATE TABLE IF NOT EXISTS user( USER_ID INTEGER NOT NULL, AGE INTEGER NOT NULL, GENDER CHAR(1), OCCUPATION VARCHAR, ZIP VARCHAR CONSTRAINT my_pk PRIMARY KEY (USER_ID));
- pig에 데이터 로드 코드 다운
Prestowget <http://media.sundog-soft.com/hadoop/phoenix.pig> pig phoenix.pig
- 드릴과 비슷한 기능을 한다.
- why?
- 드릴+카산드라 커넥터를 사용할 수 있다.
- 페이스북, 에어비앤비, 드롭박스 등 다양한 기업에서 사용하고 있다.
- 여러 소스의 데이터를 결합하여 전체 조직에서 분석할 수 있다.
- 오픈 소스다.
- 카산드라, 하이브, 몽고디비, 카프카, MySQL 등과 연결 될 수 있다.
- 카산드라 이용
service casssandra start nodetool enablthrift cqlsh --cqlversion="3.4.0"
- 프레스토 설정(카산드라와 하이브 동시에 연결)
cd etc/catalog vi cassandra.properties connector.name=cassandra cassandra.contact-points=127.0.0.1 bin/launcher start bin/presto --server 127.0.0.1:8090 --catalog hive, cassandra
- 쿼리
SELECT u.occupation, count(*) FROM hive.default.rations r join cassandra.movielens.users u on r.user_id=u.user_id GROUP BY u.occupation;
- 다양한 커넥터에 대한 내용은 공식문서를 참고하면 자세히 알 수 있다.
반응형
'데이터 엔지니어링 > Hadoop' 카테고리의 다른 글
Sec.6 NoSQL & Hadoop (0) | 2022.01.25 |
---|---|
Sec5. Hadoop & RDB (0) | 2022.01.25 |
Sec4. Spark (0) | 2022.01.25 |
Sec3. Pig (0) | 2022.01.25 |
Sec2. HDFS & MapReduce (0) | 2022.01.25 |