본문 바로가기

hadoop

로그 분석기를 Oracle+Lucene에서 Hadoop+MySQL로 변경하면서 처음 이 회사에 입사하여 매일 손으로 작업하던 업무들을 정리해가던 중 개인적인 시간을 내어개발을 했던 것이 검색 로그분석기이다. 단순히, 인기검색어등의 분석만이 아니라쿼리별 평균응답시간부터, remote client ip, 호출 클래스, 정렬조건, 페이지, 색인시간등 검색 운영에 필요한 전반적인 정보들을 모두 분석해서 웹으로 보려고 했던 것이 이 개인 프로젝트 시작이었다. 제일 초기버전은 로그를 분석 할 파서를 개발하고이렇게 분석된 정보들을 Java Programm에서 Map을 사용하여 일별로 집계하는 방식이었다.그리고, 이렇게 집계된 데이터는 Lucene으로 색인하여 저장하고, 조회 또한 Lucene으로 검색하여조회하는 방식이었다. 이렇게 약 1년을 사용하다보니 이 프로그램을 유지보수해야하는 다른 파트.. 더보기
[Hadoop/Sqoop] export shell example 1. EXPORT_DIR은 하둡 hdfs:// URI로 접근할때 사용되는 전체 경로2. --input-fields-terminated-by "\t" key, value간 구분자를 여기서 설정한다. 각 컬럼이 이걸로 구분됨3. --outdir /data/hadoop/sqoop/generated \--bindir /data/hadoop/sqoop/generated \ 이게.. 설정을 보고 java 코드를 만들고 그걸 compile해서 실행하는 것이었다..그때 사용되는 dir임.. outdir, bindir 4. jdbc driver는 sqoop_home/lib에 위치.. 테스트로.. 컬럼 5개 11만 데이터 insert에 4초가 걸린다.. 테스트DB, 테스트 서버에서.. 넣는것도 Map으로 쪼개서 넣는듯..? 더보기
[Hadoop] map reduce 프로그래밍시 in-out type 오늘 multipleoutputs를 사용해서 reducer를 개발하면서 한 삽질 두가지... 1. 로그파일이 euc-kr이라서, 이걸 간단하게 utf-8로 변환해주는 java 프로그램을 만들어서 컨버팅하고 이걸hdfs에 올렸다. 그리고 분석을 했는데.. 600메가밖에 안되는데 java heap memory 오류가 발생한다.별짓을 다하면서 옵션도 수정해보았는데 원인을 찾을 수가 없다.... 혹시나해서 로그파일을 열어보니..600메가가 1줄이다. 1 row.... 1 line.... 컨버팅하면서 라인별로 개행문자를 안 붙여줬음 -_--> 이걸로 오전 2시간 날려먹음 (점심시간 포함) 2. Map Reduce 프로그램을 개발할때.. Mapper의 Output 타입과 Reducer의 Input타입이 맞지 않으면.. 더보기
[hadoop] safe mode 종료 hadoop dfsadmin -safemode leave 더보기
[Hadoop] MRUnit,Mockito를 사용한 테스트 케이스 작성 -Mapper- 하둡 완벽 가이드 책에서는 Mockito와 hamcrest를 사용한 테스트 케이스의 예제와 Tool을 활용하여 Driver의 테스트를 하는 것이 나옵니다. 하지만 Tool을 사용 할 경우 윈도우에서는 cygwin을 설치해야 실제 output을 볼 수가 있는 것 같습니다. 에러 내용을 보면 말이죠... 그런점에서 보면 맥이면 Mockito와 Tool을 사용 한 예제가 더 유용 할 수도 있겠네요.. 그리고 책에서 잠깐 언급되는 MRUnit이라는 것이 있는데 이 MRUnit을 사용한 테스트 케이스 예제를 소개하려 합니다. Mockito를 사용한 예제도 새로운 Map/Reduce API에서 사용되는 Context를 활용하여 작성한 예제를 소개하려고 합니다. 우선 Mapper, Reducer에 대한 테스트케이스를.. 더보기
[Hadoop] Map Reduce 프로그램을 만들어보자. Hello World 수준의 Map Reduce 프로그램을 만들어보자. StandAlone 모드. 우선 분석 할 데이터는 텍스트 파일로 아래와 같이 정의 되어있다. S 20110712:000000 0 2 scna .... S 20110712:000001 0 5 scnb ... 우린 여기서 scnX에 해당하는 것들의 카운트를 해 볼 예정이다. 딱 봐도 로그죠.. ~ 우선 Mapper가 필요. ScnCountMapper.java 간단한 분석.. Mapper를 상속해야 하는데 앞의 K,V는 파일로부터 입력되는 K,V이다. 나중에 실행하는쪽에서 InputType을 정할 수 있는데 텍스트파일일 경우 기본적으로 Line단위의 Read이고 앞에 Key는 LongWritable로 각 라인 시작지점의 바이트 오프셋 주소.. 더보기
[Hadoop] 설치 및 StandAlone 실행 참고 : http://blog.softwaregeeks.org/archives/category/develop/hadoop 하둡을 써보자. 하둡에 대한 책을 읽고 있긴한데 이게 태어난 목적이 분산파일 시스템으로서 더 큰 용량의 파일들을 저장하기 위함인지 그러한 데이터들을 빠르게 분석하기 위함인지 잘 모르겠다. Standalone 모드에서의 예제가 map reduce가 딱 실행되는걸로 봐서는 후자인 것 같기도하고.. 어쩌면 둘 다겠지.. hadoop이 기본적으로 수정되지 않는 파일만 저장이 된다고 하니 분석에 대한 목적이 더 클지도 모르겠다.. 아무튼 더 공부를 해봐야 할 것 같고... 우선 Hadoop 라이브러리를 다운 받는다. (http://hadoop.apache.org/) 나는 0.20 버전을 사용했.. 더보기