Cloudera설치 중 다음과 같은 메시지를 만났다.

Cloudera 설치 중 몇몇 모듈에 대하여 403 오류가 발생하여 해당 로그를 따라가 보니 다음과 같은 경고가 있었다.

2017-10-30 16:51:51,833 WARN 1258521080@scm-web-0:com.cloudera.server.web.cmf.csrf.CsrfRefererInterceptor: Rejecting request originating from xx.xx.xx.xx for http://xx.xx.xx.xx:xxxx/cmf/express
2017-10-30 16:56:58,834 WARN 1258521080@scm-web-0:com.cloudera.server.web.cmf.csrf.CsrfRefererInterceptor: Rejecting request originating from xx.xx.xx.xx for http://xx.xx.xx.xx:xxxx/cmf/add-hos

이는 csrf에서 거절 한것으로 Spring security 3.1 이하 버전은 Interceptor를 구현하여 사용하였다.

따라서 클라우데라 설치 디렉터리에서 다음을 찾아서 수정하면 쉽게 처리된다.

cd /usr/share/cmf/webapp/WEB-INF/spring
vim vim mvc-config.xml
# 32 LINE
<!--   <bean class="com.cloudera.server.web.cmf.csrf.CsrfRefererInterceptor" /> -->

이후 서비스를 재기동하면 문제없이 동작한다.

참조 URL

Posted by lahuman

데이터 베이스 테이블 복사 기능 만들기

DBeaver와 같은 DB TOOL을 사용하지 않고 다른 위치의 DB 간의 테이블 복제하는 프로그램이 필요하여 간단하게 만들었다.

프로그램은 아주 단순 한다. 원본 테이블의 Select Query와 타켓 테이블의 Insert Query를 기준으로 마이그레이션을 진행한다.

소스 보기

준비 사항

  • Gradle
  • JDK 1.8

사용법

lahuman.Migration 파일의 10번째 라인과 11번째 라인의 DB 접속 정보를 입력 한다.

//Line 10~11
Connection originalDB = DriverManager.getConnection("URL", "ID", "PW"); //원본 DBMS
Connection targetDB = DriverManager.getConnection("URL", "ID", "PW"); //복제예정 DBMS

lahuman.Migration 파일의 13번째 라인의 SQL을 작성한다. 이때 작성하는 SELECT SQL과 INSERT SQL의 Column 순서는 맞아야 한다.

//LINE 13
copyTableUsingSQL(originalDB, targetDB, "select A, B, C from T1", "insert into T2(A,B,C)values(?,?,?)");

단순하게 만들어서 그런지 쉽게 사용할 수 있다.



Posted by lahuman