[중요] Oracle 연결을 해봤으니 이제 HIVE를 연동하여 원하는 정보를 담은 테이블을 옮겨본다.
1. Hive?
Hadoop은 System이 많아서 참 헷갈리는데, Kafka나 Zookeeper Sqoop과 같은 대부분의 친구들은 목적이 명확하고 사용법이 잘 명시되어 있어서 이해하기가 쉽다. 하지만 유독 Hadoop DB라는 Hive, Impala나 Spark, Presto 친구들은 무슨 말 하는지도 잘 모르겠고(내가 빡대가리라서?ㅎ) 정확한 사용법도 잘 모르겠다. 그래서 찾아봄.
일단 HDFS에 대해 이해가 필요하다. 분산 환경에 데이터를 저장하는 기능인데 직접 구성해봤다면 이해하기 편하다. Master + Slave 구조에서 하나의 파일을 특정 사이즈로 분리한 뒤 N개로 복제하여 분산 환경에 저장하는 것이다. 이 과정에서 디스크 IO를 줄일 수 있어 매우 빠르게 읽을 수 있고! 데이터가 유실될 확률을 줄여준다. Master는 계속해서 하트비트로 Slave를 확인하고 Master 자체도 HA 구성이 가능하다. 빠질 수 없는 우리의 YARN은 하둡 과정에서 리소스 관리를 해준다.
하지만 이해ㅋ한ㅋ만큼ㅋ 사용할 수 있다면 얼마나 좋을까? 이 정도 이해하는 것도 오랜 시간이 걸렸고... 그것은 남들도 마찬가지일 것이다. HDFS 그대로 사용하는건 무리가 있다. Map-Reduce를 직접 짜보면 알지만 작성이 까다롭고 개발자가 아닌 이상 쉽지 않다. 그래서 여러 에코 시스템이 나온 것이다. 더 쉽고, 더 편하게 분산처리 할 수 있게 말이다.
HIVE의 존재또한 위 과정과 일맥상통한다. ANSI SQL에 익숙한 사람들이 Map-Reduce를 편하게 진행하기 위한 도구인 것이다. 정확히 말하면 Database는 아니고(왜 Mysql이 필요한지 여기서 깨달았다) DW인 것이다. Hive Architecture를 보면 더 이해가 쉽다.
직접 저장하지 않고 Metastore를 이용한다. 이 것을 어디에 구성하는지는 Hive를 구성하다보면 알게된다. 다른 RDB에 하는데 이 곳에서는 HDFS 상의 데이터를 Table 형식으로 저장하고 있다. 여기서 스파크가 따-란 하고 등장한다.
Map-Reduce의 자체적인 단점을 막기 위해 Spark가 사용된다. Hive는 방식을 따라갈 뿐이다. 이 분이 너무 정리를 잘해놓으셔서 링크 건다
2. Oracle to Hive
(1) 대충 이해했으니 실제로 해본다. Hive는 HDFS 상에 자신의 데이터를 가지고 있다. 먼저 옮겨줄 테이블의 폴더를 만들어준다.
(2) Hive 테이블을 만들어준다. 이 때에 3가지 절차를 밟아야 한다.
- Table is stored as ORC
- Transactional Property is set to "True"
- The Table is Bucketed
hive> CREATE EXTERNAL TABLE
> REAL_TIME_KEYWORD(REAL_DATE STRING, KEYWORD STRING)
> CLUSTERED BY (REAL_DATE) INTO 3 BUCKETS
> ROW FORMAT DELIMITED
> STORED AS ORC
> LOCATION '/user/hive/warehouse/real_time_keyword'
> TBLPROPERTIES('transactional'='true');
Hive Metastore 어지간하면 바꾸지 말자..^-^ 하루 종일 고생했ㄸ ㅏ..★
(3) 이제 NiFi를 Configure 해준다.
하지만 희안하게 ~ 안됨~~~~~~~~~~~~~~~~~~ ㅎㅎ
이렇게 서로 연결도 됐는데 세팅의 문제 같다 . . . . . . . . . . . . 막상 들어오는 데이터가 없다
큐에도 들어가고 ... 그러는데도 .. 따흐흑.
SELECT 여러번의 문제는 cron에서 스케줄링을 조정해주면 되었다.
오라클은 어제 한 그대로 했는데 이 친구는 오류도 안뜨고 (더 답답) 좀 더 해봐야겠다.. 성공하면 .. 수정해서 포스팅..
찾아보니 NiFi는 Hive 2.3.~ 버전과 호환이 잘 안된다고 한다... 재설치해서 다시 포스팅해야겠다.
링크 : https://stackoverflow.com/questions/49079577/apache-nifi-puthivestreaming-is-not-connecting
'미분류 > Hadoop' 카테고리의 다른 글
Hadoop은 앞으로 어떻게 될까? (0) | 2019.08.22 |
---|---|
ERROR ) NiFi due to java.net.ConnectException: Connection refused Error (0) | 2019.04.19 |
NiFi 활용기 ) NiFi와 Oracle 연동하기 (0) | 2019.04.17 |
Hadoop - Kafka 설치하기 (0) | 2019.04.11 |
Hadoop - Oozie 설치하기 (0) | 2019.04.10 |