본문 바로가기

Total220

Serializable 과 transient 정확히 어디였는지는 알 수 없으나, Blog에서 발췌한 글이다. (1) Serializable 데이터를 파일에 쓰거나, 네트워크를 타고 다른 곳에 전송할 때는 데이터를 바이트 단위로 분해하여 순차적으로 보내야 한다. 이것을 직렬화(Serialization)라고 한다. 기본 자료형(boolean, char, byte, short, int ,long, float, double)은 정해진 바이트의 변수이기 때문에 바이트 단위로 분해하여 전송한 후 다시 조립하는데 문제가 없다. 하지만 객체의 크기는 가변적이며, 객체를 구성하는 자료형들의 종류와 수에 따라 객체의 크기는 다양하게 바뀔 수 있다. 이런 객체를 직렬화 하기 위해서 Serializable 인터페이스를 구현하게 된다. [JAVA] 객체 직렬화 Objec.. 2015. 6. 29.
Spring Bean 생성 및 주입 방법 Spring Bean 생성 및 주입 방법에는 여러가지가 있다. Spring Framework 특성상 IoC 컨테이너인 ApplicationContext(통용되는 이름) 이 생성한다. 이 때 xml로 설정하는 방법도 있지만, Spring 3.1 이상부터는 Annotation을 많이 활용한다. Annotation에는 아래와 같이 존재한다. @Component Spring 컨테이너에게 Bean 생성 대상임을 알리는 Annotation이다. 해당 Annotation이 있으면 스프링 컨테이너는 해당 클래스를 Bean으로 생성한다. @Service 현재로서는 @Component와 차이가 없다. 다만 해당 클래스가 Service Layer 임을 명시적으로 알릴 수 있으니, 목적에 맞게 @Component와는 구분하여.. 2015. 6. 23.
Spark App 수행시 memory 이슈 Spark App 을 수행할 때 종종 아래와 같이 memory 할당 실패로 오류가 발생한다. 실제 장비에서 memory를 할당하지 못한 경우인 것 같은데. 정확한 원인은 알 수가 없다. 일단 로그를 열어보자... 로그파일의 제일 하단에 보면 아래와 같이 나와있다. swap 영역의 free 공간은 0k로 존재하지 않으며, 실제적인 물리 메모리도 28236k로 약 28MB정도만 남아있다. Spark App 수행시 기본적으로 jvm_opts 정보를 환경변수로 사용되는데. 로그 중간 부분을 확인해보면 아래와 같이 수행됨을 확인 할 수 있다. Perm 영역이 128MB이고, xms 가 512MB로 수행된다. 다시 Spark App 수행시 console 로그를 확인해보자. 약 340MB 를 할당하지 못해 오류가 발.. 2015. 5. 22.
Spark로 WordCount 구현하기. #2 #1 을 해봤다면, 조금 불편함을 느꼈을 것이다. 분석 대상 파일과 output 경로를 모두 code에 포함되어 있기 때문이다. 그렇다면 이런 값들을 파라메터로 받아서 처리할 순 없을까? spark-submit으로 수행시에는 AppClass 내에 파라메터를 전달할 방법이 마땅치 않다. http://coe4bd.github.io/HadoopHowTo/sparkJava/sparkJava.html 위 블로그를 참고하여 진행해보자. 우선 아래와 같이 Argument를 파싱하는 Enum을 생성해 보았다. public static void main(String[] args) throws Exception { if (ArrayUtils.getLength(args) > 4) { LOGGER.debug(""); LOGG.. 2015. 5. 21.