개발

개발/Data Engineering

태블로 데이터 원본 구성 방법 - 관계와 조인

태블로(tableau) BI(Business Intelligence) 툴에서는 다양한 형태의 데이터들을 연동하여 분석할 수 있다. 엑셀 파일, csv 파일, MySQL, Oracle, HDFS, HIVE, Google drive, drop box 등... 1회성으로 분석하고 끝날 것이 아니라 엔터프라이즈 환경에서 지속적으로 사용할 시스템을 만들려면 데이터 구성을 잘 해둘 필요가 있는데 이를 위한 내용을 정리해본다. 아직 그렇게 경험이 많지 않지만 알아가고 있는 내용을 정리하는 것이다. 데이터 원본을 구성할 때 단일 테이블로만 구성할 때는 크게 고민할 것이 없는데 여러 테이블을 묶어서 데이터 원본을 구성할 때는 좀 생각해봐야할 부분들이 있다. 일단 테이블을 연결하는 방법에는 조인과 관계 방식이 있다. 조인..

개발/자바

JVM 트러블 슈팅 및 분석을 위한 명령어들

분석을 위한 명령어들 모두 JDK 설치되어 있으면 실행을 위해 별도 설치할 것은 없음 스레드 덤프 생성 jstack -l > # jstack -l 3435 > /home/user/jstack.txt 정확한 원인 분석을 원한다면 5초 정도 간격으로 5회 정도 생성 필요 (스레드 상태 변화 확인을 위해) 힙덤프 생성 힙덤프 생성 중 Stop the world 되기 때문에 주의 (시간은 오래걸려도 수초내일 듯하다) jcmd GC.heap_dump # jcmd 3435 GC.heap_dump /home/user/heap_dump.hprof 클래스 로드 현황 확인 명령 실행 시 Stop the world 되기 때문에 주의 jcmd GC.class_stats # -csv=true 옵션을 추가하면 csv형태로 출력 ..

개발/Spring

Spring KerberosRestTemplate 사용 예제

Spring framework의 KerberosRestTemplate를 사용해서 HDFS REST API를 통해 파일 다운로드, 업로드하는 예제이다. 일단 KerberosRestTemplate을 사용하기 위한 의존성 설정이 필요하다. org.springframework.security.kerberos spring-security-kerberos-client 1.0.1.RELEASE 예제 코드 import org.apache.commons.lang3.BooleanUtils; import org.apache.http.auth.AuthSchemeProvider; import org.apache.http.auth.AuthScope; import org.apache.http.auth.Credentials; imp..

개발/생각

개발 시 버그 발생 0개를 최우선 목표로 해야할까?

서비스 개발 및 운영을 하다보면 크고 작은 문제들이 생기기 마련이다. 문제가 하나도 발생하지 않는게 가장 좋겠지만, 그렇게 하기는 쉽지 않다. 그렇다고 문제 발생이 두려워 서비스 기능 추가나 코드 수정을 안할 수는 없는 노릇이다. "구더기 무서워 장 못 담글까"라는 말처럼.. 95%의 완성도에서 100%의 완성도로 가기 위해서는 0%에서 95%로 가기위해 들였던만큼의 노력이 필요한 경우가 많다. 100% 완벽한 무장애 시스템을 만드는 것을 최우선 목표로 하게되면 안정성은 높아지겠지만 그만큼 서비스 기능 추가에는 시간이 걸리게 될 것이다. 그리고 개발자의 스트레스 지수와 불안감도 올라갈 것이다.. 서비스에 기능 추가도 빨리 빨리 하면서 무장애 시스템을 만드는 것은 일반적인 수준의 노력만으로는 불가능할 것이..

개발/자바

Java Metaspace에 대해서

Metaspace란 무엇일까 Metaspace는 JDK8 이전의 Perm 영역을 대체하는 것으로 클래스와 메소드의 메타데이터들이 저장되는 영역임 Metaspace는 native memory를 사용하기 때문에 힙 영역과는 별개의 영역에 할당됨 native memory는 프로세스에 할당되는 메모리 영역으로 C 힙과 스레드 스택도 native memory를 사용함 다음 그림을 보면 좀 더 쉽게 이해할 수 있다. 클래스는 최초에 모두 로딩되는 것은 아니고 필요 시점에 로딩되며, 클래스가 로딩될 때 Metaspace에 클래스 정보가 저장된다. 소스 코드양이 많아질수록 Metaspace도 그만큼 많이 사용되게 됨 보통 클래스 하나당 5~6KB 정도 사용된다고 함 그리고 GC 실행 시 저장된 클래스 정보가 unloa..

개발/자바

sun.reflect.GeneratedMethodAccessor 클래스에 대해서

톰캣 운영 중에 로딩된 클래스 목록을 확인해보았더니 다음과 같은 클래스들이 굉장히 많이 로드되어있었다. sun.reflect.GeneratedConstructorAccessor54 sun.reflect.GeneratedConstructorAccessor57 sun.reflect.GeneratedConstructorAccessorXX ... 뒤에 숫자는 순차적으로 붙는 것 같은데 이게 확인해보니 톰캣 운영 중에 동적으로 생성되어 로드된 클래스였다. 이 클래스들이 Metaspace의 상당히 많은 부분을 차지하고 있었고 무엇인지에 대해 찾아보니 다음과 같았다. JAVA reflection으로 메소드를 호출할 때 기본 최초 15번까지는 JNI를 통해 호출하는데 (inflation이라고 부름) 그 다음부터는 pu..

bebeside77
'개발' 카테고리의 글 목록 (4 Page)