시스템 환경 설정
StreamSets는 openfile 제한을 32,768 이상으로 설정해야한다. sudo vim /Library/LaunchDaemons/limit.maxfiles.plist
파일을 열어 아래 내용 입력
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>32768</string>
<string>32768</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
파일 저장 후, 다음 명령으로 적용
sudo launchctl unload -w /Library/LaunchDaemons/limit.maxfiles.plist
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
StreamSets Data Collector 바이너리 설치 및 실행
다음과 같이 바이너리를 다운받아 압축을 해제하면 곧바로 실행할 수 있다.
curl -O https://archives.streamsets.com/datacollector/3.10.1/tarball/streamsets-datacollector-all-3.10.1.tgz
tar -xvf streamsets-datacollector-all-3.10.1.tgz
cd streamsets-datacollector-3.10.1
nohup bin/streamsets dc &
http://localhost:18630
경로에 접근해서 id:admin
, password:admin
으로 로그인하면 StreamSets을 이용해볼 수 있다.
Oracle Bulkload 라이브러리 설치
curl -O https://archives.streamsets.com/datacollector/latest/tarball/enterprise/streamsets-datacollector-oracle-lib-1.1.0.tgz
tar -xvf streamsets-datacollector-oracle-lib-1.1.0.tgz
mv streamsets-libs/streamsets-datacollector-oracle-lib $SDC_HOME/user-libs
다운받은 라이브러리를 적당한 위치에 옮겨놓은 뒤 해당 경로에 대한 환경설정을 해야한다. $SDC_HOME/user-libs
에 라이브러리를 옮겨놓은 것을 기준으로 아래 두 파일을 다음과 같이 수정한 뒤 재실행한다.
vim $SDC_HOME/libexec/sdc-env.sh
export USER_LIBRARIES_DIR="$SDC_HOME/user-libs"
vim $SDC_HOME/etc/sdc-security.policy
// custom stage library directory
grant codebase "file://$SDC_HOME/user-libs/-" {
permission java.security.AllPermission;
};
ojdbc 설치
Oracle bulkload 는 Oracle 데이터 소스 접근 시에 jdbc 를 이용하기때문에 별도로 ojdbc 드라이버를 구해 설치해주어야 한다. 원래는 해당 스테이지 설정에서 External library 등록을 통해서 설치해주면 되는데 이렇게 했을때 자꾸 datasource not found 라는 에러가 발생하면서 해당 드라이버를 제대로 로딩해주지 못하는 것으로 보였다.
그래서 그냥 oracle bulkload 경로에 ojdbc 파일을 위치시키고 재기동하는 것으로 우회
cp ojdbc8.jar $SDC_HOME/user-libs/streamsets-datacollector-oracle-lib/lib/.
테스트 Data Source 및 Destination 준비
Oracle
아래 oracle-xe-11g 도커 이미지를 이용.
docker pull deepdiver/docker-oracle-xe-11g
docker run -d -p 49160:22 -p 49161:1521 deepdiver/oracle-xe-11g
Oracle Listener 는 49161 포트로 개방돼 있고, 아래 주소로 ssh 접근도 할 수 있다. 아래와 같이 데이터베이스에 접속한 뒤
ssh root@localhost -p 49160 # password: admin
su - oracle
sqlplus autotest/owncloud
다음 SQL로 테스트 데이터 생성.
CREATE TABLE TAB_NUM_ALPHABET AS
SELECT LEVEL AS NUM
, CHR(MOD(LEVEL,26)+65) AS CHR
FROM DUAL
CONNECT BY LEVEL <= 100000
;
INSERT INTO TAB_NUM_ALPHABET SELECT * FROM TAB_NUM_ALPHABET;
INSERT INTO TAB_NUM_ALPHABET SELECT * FROM TAB_NUM_ALPHABET;
INSERT INTO TAB_NUM_ALPHABET SELECT * FROM TAB_NUM_ALPHABET;
INSERT INTO TAB_NUM_ALPHABET SELECT * FROM TAB_NUM_ALPHABET;
INSERT INTO TAB_NUM_ALPHABET SELECT * FROM TAB_NUM_ALPHABET;
INSERT INTO TAB_NUM_ALPHABET SELECT * FROM TAB_NUM_ALPHABET;
INSERT INTO TAB_NUM_ALPHABET SELECT * FROM TAB_NUM_ALPHABET;
COMMIT;
HDFS
아래 명령으로 대충 설치
brew install hadoop
/usr/local/Cellar/hadoop/3.2.1
경로에 바이너리가 설치되며, /usr/local/Cellar/hadoop/3.2.1/sbin
경로에 있는 스크립트로 제어.