본문 바로가기

미분류/Hadoop

NiFi 활용기 ) NiFi와 Oracle 연동하기

사이드 시나리오

  1.  Python을 이용하여 네이버 실시간 검색어를 크롤링하게 한다.
  2.  Cron 혹은 다른 스케줄을 이용하여 분 당 데이터를 ORACLE에 쌓도록 한다.
    •  이렇게 하면 하루에 대략 28,800개의 Keyword 데이터가 쌓인다.
  3. 적재한 데이터를 필요에 따라 HIVE나 SPARK에 옮겨준다. HDFS는 덤
  4. 선택 기간에 따라 가장 많이 언급된 키워드, 언급된 키워드들이 어떠한 공통점을 가지고 있는지 분석하도록 한다.
  5. 그중 한 키워드를 선택하면 기간에 따라 네이버 블로그를 일정 량 크롤링하여 단어 분석을 한다.

 2단계까진 파이썬 내에서 구축하고 쉘로 돌려주면 된다. 하지만 3단계에서 데이터를 어떻게 가져올지 선택해야 했다.. 사실 SQOOP을 사용하면 쉽고 간편하지만 데이터의 흐름을 보고 싶으니 NiFi를 사용한다. 연동 과정이 Hadoop 초보자에게 조금 까다로웠기 때문에 포스팅해본다.

1. NiFi를 설치한다.

- 메모리를 많이 잡아먹고, 적게 줄 경우 튕기는 경우가 생기므로 넉넉하게 잡아주도록 한다.

- [이 곳]에서 다운로드한다.

- 적당한 곳에 tar -xvf로 파일을 풀어주고 PATH에 등록한다.

- 포트가 겹치지 않게 conf 파일을 수정해주고 nifi.sh start를 통해 백그라운드에서 실행되도록 한다.

- http://[IP:PORT]/nifi로 접속해본다. 

- 귀여운 친구가 맞이한다. 

2. 오라클을 연동한다.

- 먼저 ojdbc를 lib 안에 넣어준다.

마크다운 쓰다가 바꾸니까 엄청 적응하기 힘들다. 여기서 절 대 다른 ojdbc 버전을 넣어주면 안 된다. 다른 친구들은 길 잘 찾아가서 습관적으로 다 넣어줬는데 제대로 jdbc 파일을 못 찾아서 한 시간 고생했다.

- Trouble Shooting : jdbc 잘 넣었는데 안될 때 >>  NiFi Restart 해준다. lib를 바로 읽어오지 않는다.

Trouble Shooting : failed to process session due to oracle.jdbc.driver.t4cconection 웅앵웅 거릴 때 >> jdbc 버전이 안 맞거나 서로 충돌하는 경우다. 하나씩 넣어준다

- Trouble Shooting : cannot create poolableconnectionfactory 웅앵웅 >> 이따 설정할 때 나오겠지만 sid 부분에 콜론 대신 /를 넣어준다.

3. 연동 테스트를 위해 Processor에서 QueryDatabaseTable을 드래그해준다.

- 이것저것 많은데 얘가 제일 기본인 것 같다.

- 더블 클릭하여 configure 해준다.

- Database Type은 Oracle 버전에 맞게 선택해주면 된다.

- Table Name이나 WHERE도 마찬가지.

- Database Connection Pooling Service의 화살표를 눌러서 DBCP를 세팅해준다.

- URL은 jdbc:oracle:thin:@//IP:PORT/SID

- 나머지는 그림 참고. 보면 driver를 lib 위치에서 알아서 읽어오는 것 같은데 나는 고라니 같은 멘탈이라 잡아줬다.

- User / Password도 여기서 세팅해준다.

4. Processor에서 원하는 OutPut을 선택해준다. 난 File로 떨어뜨리고 싶어서 PutFile을 했다.

- 얘도 더블클릭해서 대충 해준다.

- 디렉터리 잘 안 하면 파일 폭탄 맞아서 눈물 나니까(내가 그랬음) 잘해준다. 한 개씩만 하게 해 줄 수 있을 거 같은데 아직 세팅을 다 못함...

5. Query 웅앵에서 화살표를 누른 후 OutPut 쪽으로 움직여준다. 그러면 알아서 관계가 형성된다.

- 뭐 보면 알다시피 처리하는 큐다.

- 실행할 준비가 되면 빨간색 정지 표시로 변하는데, 느낌표면 세팅이 잘 안된 거니 다시 잘 살펴본다.

6. 둘 다 RUN 한 후 내가 지정한 디렉터리에 아웃풋이 나오길 기도한다. 

- 대따 못생긴 이름으로 만들어져 있다.

- VI로 읽어보면 데이터베이스에 있던 친구들인 것을 알 수 있다.

- 한글이라 깨지는 노양심 테이블인데 인코딩은 한 번 알아봐야 할 것 같다.