TreasureData를 사용해 보았습니다.

7148 단어 로그TreasureData
treasuredata를 사용해 보았으므로 메모 메모.

배경



사용하는 계기와는 직접 관계는 없지만 로그에 대해, 여러가지 생각하는 곳이 있었다.

여러가지 생각하는 곳이란・・・
  • 로그는 중요합니다
  • 로그는 관리가 힘들
  • 로그를 지우고 싶지 않습니다
  • 로그 형식이 변경되기 쉽습니다

  • 이다.

    「로그는 중요」는, 어플리케이션 엔지니어 뿐만 아니라 정보계의 엔지니어라면 동의해 준다고 생각한다.
    「엣 이것 움직이지 않지만?」라고 말했을 때에 우선 보는 것이 로그인 것.

    「로그는 관리가 힘들다」는 「로그는 중요하다」를 위해서도 있지만, 중요하기 때문에 지우고 싶지 않고, 점점 늘어나 버려 디스크가 가득 차도, 지우고 싶지 않기 때문에 테이프에 내보내 저장한다고 일이 종종 있습니다.

    「로그는 지우고 싶지 않다」는 「로그는 관리가 힘들다」로 기재해 버렸다. . .

    "로그의 포맷은 변경되기 쉽다"는 글쎄, 시스템을 스텝 개발하는 경우는 흔히 있다. 시스템에 대한 숙련도가 오르면 포맷도 바꾸고 싶어진다.

    S3라든지 클라우드 스토리지에 넣으면 어쩌지? 라고도 생각했지만, 문제 발생시에는 로그를 수중에 가져와, 로그 해석···억개라고 생각해 버리는 자신이 있었다.

    뭐 그런 가운데, 진지하게 무언가를 사용하고 싶었던 것은 아니지만 인연이 있고 TreasureData를 사용할 기회가 있었기 때문에, 주로 로그 관리 시스템으로서 어떨까라고 생각해 만져 보았으므로, 비잊 를 위해 메모해 둔다.

    이번에는 환경 준비까지.

    다음 환경 정보.
  • ubuntu: 12.04
  • ruby: 2.1.2p95
  • rubygem: 2.2.2

  • TreasureData란?



    wiki라든가 있으면 좋지만 무죄이므로, 한마디로 클라우드에 있는 데이터베이스라고 생각해 주면 좋다고 생각한다. 단지 대용량 데이터를 해석하기 위해 쿼리는 Hadoop 사용할 수 없는 느낌.

    SignUp



    AWS에 있는 WebConsole 에서 무료로 가입할 수 있어 빠르게 사용하기 시작한다.



    API 키 가져오기



    응용 프로그램에서 사용하는 데 필요한 API 키를 사용합니다.
    WebConsole에서 로그인한 후,


    화면 오른쪽 상단의 풀다운 메뉴에서 My Profile를 선택합니다.


    My Profile 화면에서 API Keys 의 텍스트 상자에 my_td_password 를 입력한 후 Show Keys 탭을 선택합니다.

    그러면 API 키가 표시되므로 메모해 둔다.

    TreasureData Tool Belt 설치



    Tool Belt는 일반적인가? 음 RubyBase의 CLI 클라이언트 도구입니다.
    WebConsole에서도 로그의 업로드나 쿼리를 던질 수 있지만, 기본은 이 Tool Belt나 JDBC, RestAPI 경유로 사용한다고 생각한다.

    다음 명령으로 TD Tool Belt를 설치하십시오.

    install_td
    $ gem install td
    $ td --version
    0.11.3
    $ 
    

    사용해보기



    환경 변수 설정



    다음 명령으로 TreasureData의 API 끝점을 지정합니다.

    set_env
    $ export TD_API_SERVER=https://api.treasuredata.com
    $ env | grep TD
    TD_API_SERVER=https://api.treasuredata.com
    

    로그인


    TD Tool Belt를 통해 TreasureData에 로그인합니다.

    login_td
    $ td account -f
    Enter your Treasure Data credentials.
    Email: ${my_addr}
    Password (typing will be hidden): ${my_passwd} 
    Authenticated successfully.
    Use 'td db:create <db_name>' to create a database.
    $
    

    쿼리 실행



    TreasureData에서는 샘플 데이터가 준비되어 있다.

    td_db
    $ td db:list # DB一覧表示
    +-------------+-------+
    | Name        | Count |
    +-------------+-------+
    | sample_db   | 5000  |
    +-------------+-------+
    1 rows in set
    $ td table:list sample_db # テーブル一覧表示
    +-----------+------------+------+-------+--------+---------------------------+---------------------------+----------------------------------------------------------------------------------------------------------+
    | Database  | Table      | Type | Count | Size   | Last import               | Last log timestamp        | Schema                                                                                                   |
    +-----------+------------+------+-------+--------+---------------------------+---------------------------+----------------------------------------------------------------------------------------------------------+
    | sample_db | www_access | log  | 5,000 | 0.0 GB | 2014-03-14 01:12:32 +0900 | 2013-09-07 10:13:45 +0900 | host:string, path:string, method:string, referer:string, code:long, agent:string, user:string, size:long |
    +-----------+------------+------+-------+--------+---------------------------+---------------------------+----------------------------------------------------------------------------------------------------------+
    1 row in set
    $
    
    sample_db.www_access의 레코드 수를 얻는 쿼리는 다음과 같이 실행할 수 있습니다.

    td_query
    $ td query -w -t hive -d sample_db "SELECT COUNT(1) FROM www_access"
    Job 13623610 is queued.
    Use 'td job:show 13623610' to show the status.
    queued...
      started at 2014-08-13T14:15:54Z
      14/08/13 14:16:00 WARN conf.Configuration: org.apache.hadoop.hive.conf.LoopingByteArrayInputStream@5adeeabd:an attempt to override final parameter: mapreduce.input.fileinputformat.split.minsize;  Ignoring.
      Hive history file=/mnt/hive/tmp/4115/hive_job_log_e8d443fc-5e93-4ff0-a53a-983786540afc_1000320679.txt
      Total jobs = 1
      Launching Job 1 out of 1
      Number of reduce tasks determined at compile time: 1
      In order to change the average load for a reducer (in bytes):
        set hive.exec.reducers.bytes.per.reducer=<number>
      In order to limit the maximum number of reducers:
        set hive.exec.reducers.max=<number>
      In order to set a constant number of reducers:
        set mapreduce.job.reduces=<number>
      **
      ** WARNING: time index filtering is not set!
      ** This query could be very slow as a result.
      ** Please see http://docs.treasure-data.com/articles/performance-tuning#leveraging-time-based-partitioning
      **
      Starting Job = job_1407740893231_6027, Tracking URL = http://ip-10-145-145-114.ec2.internal:8088/proxy/application_1407740893231_6027/
      Kill Command = /usr/lib/hadoop/bin/hadoop job  -kill job_1407740893231_6027
      Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
      2014-08-13 14:16:13,982 Stage-1 map = 0%,  reduce = 0%
      2014-08-13 14:16:21,301 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 12.64 sec
      2014-08-13 14:16:27,550 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 14.66 sec
      finished at 2014-08-13T14:16:31Z
      MapReduce Total cumulative CPU time: 14 seconds 660 msec
      Ended Job = job_1407740893231_6027
      MapReduce Jobs Launched: 
      Job 0: Map: 1  Reduce: 1   Cumulative CPU: 14.66 sec   HDFS Read: 2574 HDFS Write: 104 SUCCESS
      Total MapReduce CPU Time Spent: 14 seconds 660 msec
      OK
      MapReduce time taken: 24.295 seconds
      Fetching results...
      Total CPU Time: 14660
      Time taken: 24.663 seconds
    Status     : success
    Result     :
    WARNING: the job result is being downloaded...: 24 B / 100.0%                                                                                                   +------+                                          
    | _c0  |
    +------+
    | 5000 |
    +------+
    1 row in set
    $
    

    데이터 건수가 5000건 있는 것을 알 수 있다. 그리고 뒤에서는 map reduces 처리가 박혀 있는 것 같은 것을 알 수 있다.

    데이터 임포트 부분에 대해서는 다음 번! !

    좋은 웹페이지 즐겨찾기