Hadoop/Hbase 기반의 Twitter 공간정보분석 군산대학교컴퓨터정보공학과 {pseudo_jo, didvuddn, kwnam}@kunsan.ac.kr 조현구, 양평우, 남광우
배경및필요성 Twitter 스트림에서의공간정보추출 - 공간현상의추출및공유부분은부족 Twitter 스트림에서의정보추출 - 자연어기반텍스트정보셋에서의키워드추출 - 시간의변화에따른이슈변화모니터링 - 단일키워드기반의정보제공, 현상에대한경험적추가지식필요 2
연구내용 Twitter 에서의시공간지식추출프레임워크개발 데이터스트림마이닝을활용한 SNS 데이터수집및이슈추출 대용량 Twitter 스트림의저장과분석프레임워크개발 Twitter 스트림의축적과빠른검색 NoSQL(Hadoop/HBase) 를이용한저장 빠르고반복적인데이터접근의지원을위한 Map-Reduce 임의의데이터추출 / 참조을위한간편한클라이언트개발 3
연구내용 군산대수행중인 소셜데이터 관련연구 Twitter Collector 공간웹객체 (spatial web objects) 검색과집계 공간연관규칙 Hadoop/Hbase 기반공간데이터분석 Hadoop/Hbase 기반 Twitter 공간정보분석 4
Hadoop/HBase in NoSQLs - 왜 Hadoop/HBase 를선택했는가?
NoSQL NoSQL = No SQL? no no... NoSQL = Not Only SQL!!! Relational Graph Key-Value Data Column Document 6
왜 NoSQL 인가? Relational DBMS ACID Transactions 안전성, 완전성중심 성능과보호의절충 구현의복잡성 Many Insert/Many Update Web, BigData NoSQL Massive Data Complex Data Schema Free One Insert/Many Read 성능과안전 구현의단순성 7
NoSQL for BigData http://blog.kissmetrics.com/twitter-statistics/?wide=1 8
NoSQL 의종류 Key-value stores Amazon s Dynamo Cassandra BigTable, BerkeleyDB Document Database MongoDB, CouchDB Column stores Hadoop/HBase, Google BigTable, Cassandra Graph databases FlockDB, Neo4J 9
NoSQL Stack Apache Hadoop Google Hadoop MapReduce HBase Hadoop Distributed File System(HDFS) Distributed Programming Model Distributed Databases Distributed File System MapReduce BigTable Google File System(GFS) Cluster 10
NoSQL : Wide Columnar Store BigTable, HBase, Cassandra, Hypertable JSON to Object Twitter 에서 JSON 으로데이터제공 주요데이터를추출하여 Column(Qualifier) 으로저장 11
NoSQL : Spatial Hadoop 지리정보를처리하기위한 Hadoop Spatial Language KNN, IsOverlap, Rectangle, DistanceTo, Spatial data types Spatial Indexes Grid file, R-tree or R+-tree Spatial operations 다음의이유로 Spatial Hadoop을사용하지않은이유 Simple spatial data + Spatial Keyword 인덱스로 R-tree or R+-tree 사용안함 특수목적에맞게만들어진 Hadoop : 다른용도로확장하기에는알맞지못함 질의처리에적합하지못함 http://spatialhadoop.cs.umn.edu/ Hadoop/Hbase 기반 Twitter 공간정보분석 12
NoSQL : 왜 Hadoop/HBase 인가? 기존에구축한시스템, MongoDB 저장성용이 (Document Database, JSON 형태로삽입가능 ) 적재된 Twitter 데이터를그대로사용가능 속도빠름, 확장성용이, 유연성용이 1차메모리적재, 2차디스크적재 클러스터구성의난이도가높고, 많은비용소모 Hadoop/HBase 저장성용이 (Column Store, JSON 형태로삽입가능 ) 속도빠름, 확장성용이, 유연성용이 HBase : 특정형식에맞추어저장가능 클러스터구성의난이도가낮고, 비교적적은비용소모 데이터질의처리를위한 Map-Reduce 사용이핵심 노드구성 : 네트워크전송속도가성능을좌우 Hadoop/Hbase 기반 Twitter 공간정보분석 13
NoSQL : Hadoop/HBase 의구성 Hadoop/Hbase 기반 Twitter 공간정보분석 14
NoSQL : Hadoop/HBase 의구성 Hadoop/Hbase 기반 Twitter 공간정보분석 15
NoSQL : Hadoop/HBase 의구성 Hadoop/Hbase 기반 Twitter 공간정보분석 16
NoSQL : Hadoop/HBase 의구성 Hadoop/Hbase 기반 Twitter 공간정보분석 17
Twitter 데이터의수집과저장 - Streamming API 와 HBase
Twitter Streamming API Twitter Streamming API public streams : follow, track, locations, count, with user streams site streams Twitter4J 19
Twitter Streamming API https://stream.twitter.com/1.1/statuses/filter.json? locations=-122.75,36.8,-121.75,37.8 { } "filter_level":"medium", "contributors":null, "text":" 역시다멋있다 #EVERYBODY", "geo":{ "type":"point", "coordinates":[37.3604652, 127.9554015] }, "retweeted":false, "created_at":"fri Oct 11 10:32:52 +0000 2013", "lang":"ko", "id":388613160678088700, "retweet_count":0, "favorite_count":0, "id_str":"388613160678088704", "user":{ "lang":"ko", "id":1394439386, "verified":false, "contributors_enabled":false, "name":" 은지 ", "created_at":"wed May 01 11:32:39 +0000 2013", "geo_enabled":true, "time_zone":"seoul", "friends_count":93, "id_str":"1394439386", } 20
Internet Twitter Stream 의수집과저장 Tweets from following Media Stream API (MediaCollector Account) SNS data collector Tweet collector Insert Collected data JSON Tweet(Status) raw DataBase (HBase) Abstraction by Lucene Mentions from anonymous users(selected based on location) Tweet Word Vector Databases (HBase) Tweet Collector in Hbase : Streaming API 기반트윗수집, 중복성검사, 저장 Tweet Analysis in Hbase : 데이터에대한질의 ( 검색, 조인, ) 21
Twitter Stream 의수집과저장 TweetStreamCollectorHBase Twitter4J void start(string dbname, FilterQuery query) { dbmanager = new HBaseManager(); } TwitterStream stream = new TwitterStreamFactory().getInstance(); stream.addlistener( this ); stream.filter( query ); 22
Twitter Stream 의수집과저장 Twitter4J 의 Streamming Listener 구현 public void onstatus(status status) { } JSONObject mediadata = makejsonmediadata( status ); mediadataqueue.add( mediadata.tostring() ); String mediadataid = (String)mediaData.get("MediaDataID"); JSONObject abstracteddata = makejsonabstracted(mediadataid, status ); abstracteddataqueue.add( abstracteddata.tostring() ); public void run() { dbmanager.insertmediadata(hbasemanager.mediadata_table, HBaseManager.MEDIADATA_TABLE_FAMILY_NAME, mediadataqueue.take()); dbmanager.insertabstracteddata(hbasemanager.abstracted_table, HBaseManager.ABSTRACTED_TABLE_FAMILY_NAME, abstracteddataqueue.take()); } 23
Twitter Stream 의수집 : 구현 Hadoop/Hbase 기반 Twitter 공간정보분석 24
수집된데이터 Media Data 15 일치분량약 71.7MB JSON Data 15 일치분량약 217.1MB 총데이터약 45 만개, 유효데이터약 40 만개하루당약 2 만 6 천개 25
HTabl e HTabl e Twitter Stream 데이터의검색 SQL 구문과유사하도록 Hbase 의 Scan, Filter 로구현가능 Select : Scan Where : RowFilter, SingleColumnValueFilter, Join : Map-Reduce Spatial operator 는기본적으로지원하지않는기능 HBase 의목적 : 일반적인빅데이터의적재및검색 Spatial operator 를위해 Filter, Comparator 구현 (in Java) Synchronous Call Master Cluster Scan Slave Cluster HRegionServer Filter HRegionServer Synchronous Call HRegionServer Scan Filter Slave Cluster Hadoop/Hbase 기반 Twitter 공간정보분석 26
Twitter Stream 데이터의검색 Row-Key 검색 : RowFilter Row 키가특정데이터를가리키는것이아니라면유용하지않을것 Hadoop/Hbase 기반 Twitter 공간정보분석 27
Twitter Stream 데이터의검색 Column 검색 : SingleColumnValueFilter, SingleColumnValueExcludeFilter 일반검색 : String, Long, Int, Byte-Array, Hadoop/Hbase 기반 Twitter 공간정보분석 28
Twitter Stream 데이터의검색 Column 검색 : SingleColumnValueFilter, SingleColumnValueExcludeFilter Time 검색 Hadoop/Hbase 기반 Twitter 공간정보분석 29
Twitter Stream 데이터의검색 GeoLocation 검색 : GeometryCompareFilter (JTS library) 기존의필터를활용하는것으로는공간질의가힘들다 기존의필터를참고하여직접구현 단순비교용도뿐이라면 Comparator로도충분히구현가능 Hadoop/Hbase 기반 Twitter 공간정보분석 30
Twitter Stream 데이터의검색 GeoLocation 검색 : ContainsComparator CustomFilter를세부사항까지구현하기에는너무많은시간이소요 간단하게비교자 (Comparator) 만구현함으로써쉽게비교가가능 Hadoop/Hbase 기반 Twitter 공간정보분석 31
Twitter Stream 데이터의검색 데이터조인 HBase 자체로는 Join을지원하지않음 Hadoop의 Map-Reduce를활용하여 Join Hadoop/Hbase 기반 Twitter 공간정보분석 32
Twitter Stream 데이터의검색 데이터조인 Hadoop/Hbase 기반 Twitter 공간정보분석 33
생각해야할점 지리정보와의 Join 에너무많은비용이든다 해결방법 : 지오해시, 인덱스에대한해결 Spatial Hadoop의 R-tree, R+-tree 등을참고하여구현 arp-tree 구현 ( 관련연구 : 공간웹객체 (spatial web objects) 검색과집계 ) 별도의인덱스테이블생성 Hadoop/Hbase 의 Cluster 구성 대부분이 Get, Put 에서비용이발생 입출력부분에서소요되는비용을줄이는것으로최적화 하드웨어향상 TCP no Delay (Server, Client) Etc, Hadoop/Hbase 기반 Twitter 공간정보분석 34