ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Data Pipeline 실습] 1. 데이터 생성
    Data Engineer 2023. 3. 30. 17:52
    728x90

    원래 계획대로라면 운영체제를 들어야하는 게 맞으나, 지난 2주간 네트워크 수업을 듣다보니 일방적인 이론 수업에 흥미를 잃었다. 그래서 이번주는 T아카데미에서 했었던 데이터 파이프라인 이론과 실습을 곁들여 공부하기로 했다.

    실습 과정

    Twitter API로 JSON log 데이터를 받아와서 Kafka에 전송하고, Consumer를 Logstash로 지정해 하나는 ElasticSearch로, 다른 하나는 Google Cloud Service로 보내 각각 Kibana와 Zeppelin으로 분석을 할 예정이다.

     

    실습 환경 설정

    - Window 7 이상

    - VirtualBox 다운로드(5.1.22 ver)

    - Ubuntu 설치(16.04 LTS ver)

     

    2017년도 자료라서 그런지 현재 버전과 조금 맞지 않다... 하지만 첫 파이프라인 개설이니 열심히 해보기로 한다!

     

    환경 구축

    먼저 전제로 AWS, Google Cloud, Twitter(데이터 수집 목적) 가입이 되어 있어야 한다.

    Twitter API를 활용하려면 트위터 개발자 계정을 사용해야 하는데, 우선 실수로 캡처를 하지 못했지만 

    아마 이전 버전에는 이렇게 나온 것 같은데, 지금은 250 byte 정도의 문자를 채워 트위터 API를 사용해야 하는 이유를 적고 정책에 동의한다는 내용을 체크한 후에 Twitter API를 이용한 App을 생성할 수 있다. 예전에 시도했을 때는 a로 꽉채워서 보낸 결과 반려당했지만, 이번엔 얌전히 채워서 썼더니 바로 통과시켜준다.

     

    그리고 꼭 트위터 가입하고 휴대전화 번호를 인증해야만 이 행동들이 의미가 있다는 점을 명심하자!

     

    2017년 강의라 그런지 16.04 버전을 쓰라고 했는데, 찾아본 결과 지금은 당연히(?) AWS에서 해당 버전 지원을 안해주기 때문에, 일단은 22.04로 맞춰본다.

    인스턴스 개수를 5개로 하고 나머지는 디폴트로 설정.

     

    AWS 연결하고 ubuntu 서버에 다운받은 키를 활용해서 접속하려고 하는데, 자꾸 포트 연결에 실패한다. 

    탄력적 IP를 연결하여 ubuntu@ 뒤에 넣었더니 연결이 되었다. 이제 aws 상의 ubuntu 서버와 내 로컬상 ssh 서버가 연결된 것이다.

    이제 aws 상의 띄워진 인스턴스 5개 중 하나의 이름을 twitter_logstash로 바꾼다.

     

    sudo apt-get update //ubuntu 서버 내 업데이트

    대부분의 데이터 파이프라인 툴들은 자바 기반이므로, 자바를 설치해준다.

    sudo apt-get install openjdk-8-jdk -y //java 설치

    다음으로, logstash를 설치해준다. 강의에 나온대로 설치한 것이기 때문에, 현재 배포 버전과 상당히 상이할 수 있음을 감안하자.(이렇게 되면 우분투 버전이 조금 걱정된다... ㅠ)

    데이터 생성

    Twitter API 연결

    $ sudo vim /etc/logstash/conf.d/logstash.conf

    *etc : OS상에 존재하는 환경변수 디렉터리

    *logstash :  jvm, log 설정 등의 logstash와 관련된 디렉터리

    *conf.d : 데이터를 어떻게 가져오고, 보내는지 결정하는 디폴트 디렉터리

     

    logstash.conf 파일을 작성하는데, 들여쓰기를 중요하게 여기는 .yml 파일과 달리 .conf 파일은 들여쓰기에 신경을 쓰지 않아도 된다.

    input {
    	twitter {
    		consumer_key => "8C96ESoXxxxxxxxxxxxxxxx" // Twitter API
    		consumer_secret => "DdiFkdflkjadfEszZDfjdfhoweryqbdFd" // API secret
    		oauth_token => "90722238952835725-asjhdfoiquyoeuqhehjfjashasdf" // Twitter Token
    		oauth_token_secret => "qajsdfljkaoiqOIUFJlkqjLKJlkjdafopifpqpisdkfI" // Token secret
    		keywords => ["news","game","data"] // 어떤 검색어를 가져올 것인지
    		full_tweet => true
    	}
    }
    output {
    	file {
    	path => "/tmp/twitter-%{+YYYY-MM-dd}.json"
    	codec => json_lines
    	}
    }

    트위터에서 'news', 'game', 'data'의 키워드로 받아온 데이터를 Kafka로 전송할 예정이다.

     

    sudo service logstash start // 트위터 정보 가져오기

    하다보니 명령어가 씹혀서, 모든 설정을 리셋하고 다른 인스턴스에 그대로 옮겨 다시 실행하였다.

     

    별 짓을 다 해도 안된다. 좀 더 생각해보고 다시 올리겠다.

     

    + 03/31 

    sudo service logstash start 대신에 이 명령어를 실행해도 이후 실행이 안된다... 혹시 원인을 알고 있는 분이라면 알려주시길 ㅠㅠ

    728x90

    'Data Engineer' 카테고리의 다른 글

    [Kafka] 정리_01  (0) 2023.05.14
    [Data Engineer] Kafka란 무엇인가  (0) 2023.05.07
    SaaS, Software as a Service  (0) 2023.04.02
    OLTP와 OLAP, 그리고 Data Warehouse  (0) 2023.03.16
    데이터 처리기술_분산 데이터 저장 기술  (0) 2023.03.15
Designed by Tistory.