TreasureData를 사용해 보았습니다.
7148 단어 로그TreasureData
배경
사용하는 계기와는 직접 관계는 없지만 로그에 대해, 여러가지 생각하는 곳이 있었다.
여러가지 생각하는 곳이란・・・
이다.
「로그는 중요」는, 어플리케이션 엔지니어 뿐만 아니라 정보계의 엔지니어라면 동의해 준다고 생각한다.
「엣 이것 움직이지 않지만?」라고 말했을 때에 우선 보는 것이 로그인 것.
「로그는 관리가 힘들다」는 「로그는 중요하다」를 위해서도 있지만, 중요하기 때문에 지우고 싶지 않고, 점점 늘어나 버려 디스크가 가득 차도, 지우고 싶지 않기 때문에 테이프에 내보내 저장한다고 일이 종종 있습니다.
「로그는 지우고 싶지 않다」는 「로그는 관리가 힘들다」로 기재해 버렸다. . .
"로그의 포맷은 변경되기 쉽다"는 글쎄, 시스템을 스텝 개발하는 경우는 흔히 있다. 시스템에 대한 숙련도가 오르면 포맷도 바꾸고 싶어진다.
S3라든지 클라우드 스토리지에 넣으면 어쩌지? 라고도 생각했지만, 문제 발생시에는 로그를 수중에 가져와, 로그 해석···억개라고 생각해 버리는 자신이 있었다.
뭐 그런 가운데, 진지하게 무언가를 사용하고 싶었던 것은 아니지만 인연이 있고 TreasureData를 사용할 기회가 있었기 때문에, 주로 로그 관리 시스템으로서 어떨까라고 생각해 만져 보았으므로, 비잊 를 위해 메모해 둔다.
이번에는 환경 준비까지.
다음 환경 정보.
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
처리가 박혀 있는 것 같은 것을 알 수 있다.데이터 임포트 부분에 대해서는 다음 번! !
Reference
이 문제에 관하여(TreasureData를 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akito1986/items/4c83ff492ed4b390ad50텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)