본문 바로가기

전체 글

(89)
Tuning for performance in hadoop Hadoop in Action 1. combiner를 가지고 네트워크 트래픽 줄이기 2. 입력 데이터 양을 줄이기 3. 압축 사용하기 4. JVM 재사용 디폴트로, TaskTracker는 Mapper와 Reducer를 분리된 JVM 으로 수행한다. 태스크 시작 비용이 상당히 클 수 있으며 이를 해결하기 위해서 job.reuse.jvm.num.tasks 1보다 큰값 또는 -1 (no limit) 5. speculative execution 을 가지고 실행하기. map 또는 reduce task가 실행중 오류가 발생한 경우 또는 너무 느린 경우 새로운 태스크를 수행하고 기존 태스크를 kill한다. 기본 설정이 이렇게 동작하도록 되어 있으며 이를 수정하기 위해서 다음 속성들을 FALSE로 지정한다. mapre..
하둡 설치 2 분산모드로 설치해 보기 리눅스 서버(CentOs 5.6) - 마스터 윈도우 (cygwin) - 슬레이브 마스터 설정 리눅스에 jdk 설치 하자. 기존에 설치되어 있는 jdk도 있지만 lib 폴더 설정등이 불편해서 자바 홈피에서 RPM 버전을 받아서 설치했다. vi /etc/profile.d/java.sh 에서 경로 변경. export JAVA_HOME=/usr/java/jdk1.6.0_26 export PATH=$JAVA_HOME/bin:$PATH source /etc/profile.d/java.sh /etc/hosts 파일을 변경하자. 192.168.1.1 master 192.168.1.2 slave1 192.168.1.1 - Linux 아이피 192.168.1.2 - 윈도우즈 아이피 ssh 설정은 리..
하둡 설치 1 뭐니 뭐니해도 프로그래밍을 하기위해서는 환경 구축을 하는 것이 최우선 과제! 일단 Hadoop을 설치해보자. 내가 설치한 버전은 현재 가장많은 문서들이 돌아다니는 Hadoop 0.20.2 + Hbase 0.20.6 이다. 개발 초기에 별도의 리눅스 서버가 없이 시작을 하게 되서 우선 찾아본 것이 Windows에 하둡을 설치해 보는 것이었다. 윈도우에서는 cygwin을 설치한 후 하둡을 설치하는 방법을 사용한다. 이를 설명해 주는 아주 좋은 사이트(무려 화면 캡쳐 이미지까지 제공한다.)가 있으며 번역한 사이트도 있어서 이를 참조하였다. http://v-lad.org/Tutorials/Hadoop/00%20-%20Intro.html 친절하게 번역해준 사이트는 http://jmhadoop.springnote...
equals 함수를 여태 잘못 알고 있었다.; apache commons에 있는 ListUtils 라는 클래스를 이용해서 결과들을 Union, Intersecion, Sum 등을 하기위해서 사용하고 있는데 이상하게 잘 안되서 당황했다. equals라는 함수도 잘 만들어줬는데 도대체 뭐가 문제인지 몰라서 헤딩만했다. 디버깅해봐도 list의 contains 함수가 결국 equals함수를 호출하는데 브레이크포인트를 걸어놔도 그냥 넘어가 버린다. 완전 삽질이였다. equals 함수의 인수는 (Object o) 로 해야만 했다. equals(CustomType o) 이런식으로 선언해놨더니 완전 맹구가 되버린 것이다. ㅜㅜ
나도 한번 써봐야지 스프링 - 5 이제 DB를 이용해 보자. 우선 MySQL을 설치한다. 다운로드가 상당히 오래걸린다; Spring에서 데이터 액세스 기술은 책 toby spring 3 11장에 자세히 기술되어 있다. iBatis를 사용한 예제를 만들어보겠다. MySQL에 user 정보를 위한 테이블을 생성하자. CREATE TABLE `test`.`User_TB` ( `id` VARCHAR(20) NOT NULL, `name` VARCHAR(45) NOT NULL, `email` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`) ) ENGINE = InnoDB; DB 사용을 위해 pom.xml에 dependecy를 추가하자. org.springframework spring-orm ${org.springframew..
JUnit4 & Spring MySQL 설치중이라서 다음단계를 해보기전에 스프링에서는 작성한 프로그램을 어떻게 테스트하는지 살펴보자. 이는 책 toby spring 3 15장에 자세히 기술되어 있다. 여기서는 JUnit4를 이용해 간단하게 테스트하는 프로그램을 작성해 볼 것이다. JUnit4 부터는 특정 클래스를 상속하지 않아도 테스트 코드를 작성할 수 있다. @Test라는 애노테이션만 붙여주면 메소드가 속한 클래스는 테스트 클래스가 된다. public class Test1 { @Test public void testMethod1() {..} } 테스트 클래스에서 스프링의 빈클래스를 가져오려면 다음과 같은 에노테이션을 새롭게 지정해야한다. @RunWith(SpringJUnit4ClassRunner.class) @ContextConf..
나도 한번 써봐야지 스프링 - 4 서비스 클래스와 모델 클래스를 추가해 보자. 비즈니스 로직을 포함하고 있는 서비스 클래스를 추가하여 컨트롤러 클래스에 DI 하고 id만 출력하던것을 이름, 이메일, 아이디를 출력하도록 변경하여 보자. 우선 서비스 클래스를 만들기 전에 서비스 인터페이스를 만들자. 컨트롤러에서는 직접 구현 클래스를 기술하지 않고 인터페이스로 서비스를 호출하도록한다. 다음 세가지 클래스를 추가한다. User.java MyService.java MyServiceImpl.java User.java package sample.mvc.first.model; public class User { String id; String name; String email; public User() {} public User(String id, S..
나도 한번 써봐야지 스프링 - 3 예제를 이제 살짝쿵 고쳐봐야겠다. 우선 인수를 받아서 처리하는 형태로 바꿔보자. 이전 소스 @RequestMapping(value="/", method=RequestMethod.GET) public String home() { logger.info("Welcome home!"); return "home"; } 뷰에서 아이디를 입력받으면 그 아이디를 다시 Echo 해줘서 뷰에 전달해주는 예제로 변경해보자. 우선 함수의 시그니처를 변경해보자. public String home(String id) { ..} 이를 클라이언트로 부터 id를 어떻게 전달 받도록 지정해 보자. @RequestParam 에노테이션을 사용하자. public String home(@RequestParam String id) {..} (사..