Commit 1830da19 authored by HooYoungAhn's avatar HooYoungAhn
Browse files
parents 2799fc83 9ff1a3e9
Pipeline #1125 canceled with stages
......@@ -32,15 +32,15 @@ BeeAI를 다운받기 위한 절차는 다음과 같습니다.
#### 권한요청 Email 발송
가입시의 "Full name"과 "Username"을 포함하는 메일을 작성하여 발송합니다 (아래 참조).
- Email 제목: KSB KAF Git Repository 접근승인요청
- Email 수신처: dwk@etri.re.kr
- Email 수신처: kanghj@etri.re.kr
- 내용: 반드시 "Full name"과 "Username"을 포함하여야 하며, 기타 내용은 자유양식으로 작성
담장자 (dwk@etri.re.kr) 부재시, 추가 Email 수신처는 아래와 같습니다.
담장자 (kanghj@etri.re.kr) 부재시, 추가 Email 수신처는 아래와 같습니다.
- kanghj@etri.re.kr
- leeyh@etri.re.kr
발송된 권한요청 Email은 담당자에 의해 수동으로 확인됩니다. 담당자가 부재 중이 아닐 경우, 빠른 확인 후 권한요청 승인에 대한 답변이 이메일로 발송됩니다.
......@@ -60,11 +60,6 @@ BeeAI가 업데이트된 경우, 아래 명령어를 이용해 업데이트된
<code>git pull http://211.43.13.21/ksb/kaf</code>
</pre>
#### 참고
동일한 BeeAI를 <https://csleoss.etri.re.kr/kor/sub02_04.do> 사이트에서 별도의 회원 가입 후, "2. KSB 인공지능 프레임워크 (오픈소스 및 바이너리 파일)"를 통해서도 다운로드 받을 수 있습니다. <b>주의</b>: 이 방법으로 다운을 받으면, BeeAI가 업데이트 되었을 경우 전체파일을 새로 받아야 합니다.
## 매뉴얼
......@@ -77,7 +72,7 @@ BeeAI가 업데이트된 경우, 아래 명령어를 이용해 업데이트된
<tr>
<td> 1 </td>
<td width="150px" nowrap> 설치 가이드</td>
<td width="150px" nowrap> 시작하기 </td>
<td>KSB 인공지능 프레임워크를 빠르게 시작할 수 있는 1) docker image 와 고객의 환경에 맞게 구성하여 설치할 수 있는 2) 오픈소스 및 바이너리 파일 을 제공합니다.</td>
<td> https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/startGuide.md </td>
</tr>
......
......@@ -237,9 +237,8 @@ sudo dpkg -i google-chrome-stable_current_amd64.deb
## [Host PC] KSB 툴박스 설치 및 docker image 다운받기
<a href="https://csleoss.etri.re.kr/kor/sub02_04.do" title="다운로드"> 다운로드</a> 페이지로부터 KSB 툴박스(docker image 별도) 파일을 다운로드합니다.
- ksb_toolbox_v1903.tar.gz : KSB 툴박스 파일
<br>
KSB 툴박스(docker image 별도) 파일을 다운로드합니다.
csle 사용자 계정의 home에 ksb_toolbox_v1903.tar.gz 압축을 해제합니다. 결과적으로 /home/csle/ksb-csle 폴더가 생성됩니다.
......
......@@ -223,7 +223,7 @@ ln -s /home/csle/hbase-1.2.4 /home/csle/hbase
**[KSB 툴박스를 이용한 설치 방법]**
KSB 툴박스를 동작시킨 상태에서 docker 컨테이너로부터 kafka 설정 파일을 복사하여 설치할 수도 있습니다.
먼저 도커에 접속하는 방법을 참고하여 접속합니다. (<a href="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/Filezilla.html"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
먼저 도커에 접속하는 방법을 참고하여 접속합니다. (<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/Filezilla.md"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
도커에 있는 kafka_2.11-0.10.0.1 폴더를 /home/csle 폴더에 복사합니다.
그리고 심볼릭링크을 설정합니다.
......@@ -239,7 +239,7 @@ ln -s /home/csle/kafka_2.11-0.10.0.1 /home/csle/kafka
**[KSB 툴박스를 이용한 설치 방법]**
KSB 툴박스를 동작시킨 상태에서 docker 컨테이너로부터 zookeeper 설정 파일을 복사하여 설치할 수도 있습니다.
먼저 도커에 접속하는 방법을 참고하여 접속합니다. (<a href="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/Filezilla.html"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
먼저 도커에 접속하는 방법을 참고하여 접속합니다. (<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/Filezilla.md"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
도커에 있는 zookeeper-3.4.9 폴더를 /home/csle 폴더에 복사합니다.
그리고 심볼릭링크을 설정합니다.
......@@ -345,8 +345,7 @@ source deactivate
```
## [Host PC] KSB 툴박스 파일 설치하기
KSB 프레임워크를 호스트 서버에 직접 설치하는 경우에도 ksb_toolbox_v1903.tar.gz 파일이 필요합니다.
<a href="http://csleoss.etri.re.kr/kor/sub02_01.do" title="다운로드"> 다운로드</a> 페이지로부터 KSB 툴박스 파일을 다운로드합니다.
- ksb_toolbox_v1903.tar.gz : KSB 툴박스 파일
KSB 툴박스 파일을 다운로드합니다.
<br>
csle 사용자 계정의 home에 ksb_toolbox_v1903.tar.gz 압축을 해제합니다. 결과적으로 /home/csle/ksb-csle 폴더가 생성됩니다.
......@@ -537,7 +536,7 @@ KSB 지식베이스엔진(KSB-Knowledge Engine)을 사용하기 위한 절차
### 지식베이스 엔진 가져오기
KSB 지식베이스엔진은 현재 Docker 컨테이너에 포함되어 배포 되고 있습니다.
도커에 접속하는 방법을 참고하여 접속합니다. (<a href="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/Filezilla.html"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
도커에 접속하는 방법을 참고하여 접속합니다. (<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/Filezilla.md"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
도커에 있는 ksb-knowledge 폴더를 Host PC의 /home/csle 폴더에 복사합니다.
### Play framework Activator 설치하기
......
---
html:
toc: true
offline: true
export_on_save:
html: true
---
# KSB 웹툴킷 설치
---
......@@ -20,7 +14,7 @@ UI 기반으로 KSB 인공지능 프레임워크를 사용할 수 있는 KSB 웹
[Ubuntu 언어 변경](https://askubuntu.com/questions/509174/how-can-i-change-the-language-from-english-to-spanish)
- Postgresql 9.6.8 이상이 설치되어야 합니다.
- Pgadmin3 1.22.2 이상이 설치되어야 합니다.
- JDK 8 이 설치되어야 합니다. 설치 방법은 다음 링크를 참고 합니다. [JDK 8 설치](https://csleoss.etri.re.kr/images/contents/manual_1.0/1.2.HowToInstallKsbToolBox.html#host-pc-java-8-oracle-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0)
- JDK 8 이 설치되어야 합니다. 설치 방법은 다음 링크를 참고 합니다. [JDK 8 설치](https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/1.2.HowToInstallKsbToolBox-1903.md)
- Apache Tomcat 7.x가 설치되어야 합니다.
## KSB 인공지능 프레임워크 DB 설치하기
......
---
html:
toc: true
offline: true
export_on_save:
html: true
---
# KSB 인공지능 프레임워크 처음 실행하기
---
KSB 인공지능 프레임워크를 실행하는 방법에 대해서 설명합니다.
......@@ -15,7 +8,7 @@ KSB 인공지능 프레임워크를 실행하는 방법에 대해서 설명합
## [Host PC] KSB 툴박스 docker 컨테이너 실행하기
<a href="http://csleoss.etri.re.kr:8088/kor/sub02_03.do" title="다운로드"> 다운로드</a> 페이지에서 KSB 툴박스 (ksb_toolbox_v1903.tar.gz 파일)를 다운받아 압축을 해제하여 생성된 ```/home/csle/ksb_csle/docker/19.03-host```로 이동합니다.
KSB 툴박스 (ksb_toolbox_v1903.tar.gz 파일)를 다운받아 압축을 해제하여 생성된 ```/home/csle/ksb_csle/docker/19.03-host```로 이동합니다.
아래의 명령을 통해 KSB 툴박스 docker 컨테이너를 실행하고 접속합니다.
```sh
......@@ -150,7 +143,7 @@ csle@csle1:~/ksb-csle/bin$ ./startKsbApiServing.sh
KSB 인공지능 프레임워크 사용을 위한 모든 준비가 완료되었습니다.
이제 <a href="http://csleoss.etri.re.kr:8088/kor/sub05_03.do" title="사용자가이드"> 사용자 가이드</a>로 이동하셔서 워크플로우 예제들을 실행해 보시기 바랍니다.
이제 <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/userGuide.md" title="사용자가이드"> 사용자 가이드</a>로 이동하셔서 워크플로우 예제들을 실행해 보시기 바랍니다.
## FAQ
......
......@@ -583,7 +583,7 @@ source ~/.bashrc
# FAQ
###1. 서버 재부팅 후, connection 에러가 발생하는 경우
### 1. 서버 재부팅 후, connection 에러가 발생하는 경우
```sh
csle@csle1:~$ kubectl get nodes
The connection to the server 192.168.0.5:6443 was refused
......@@ -598,7 +598,7 @@ csle@csle1:~$ strace -eopenat kubectl version
```
###2. 서버 재부팅 후, dashboard가 ContainerCreating 상태로 에러가 발생한 경우
### 2. 서버 재부팅 후, dashboard가 ContainerCreating 상태로 에러가 발생한 경우
```sh
csle@csle1:~/ksb-csle/kubernetes/env_set$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
......@@ -635,7 +635,7 @@ kubectl create -f ClusterRoleBinding.yml
kubectl create -f k8s-heapster/
```
###3. KSB 툴박스 docker 컨테이너에서 host pc에 ssh 접속시 password를 묻는지 확인하는 방법
### 3. KSB 툴박스 docker 컨테이너에서 host pc에 ssh 접속시 password를 묻는지 확인하는 방법
KSB 툴박스 docker 컨테이너에서 아래의 명령을 수행하여 각 kubernete 마스터와 노드에 접속시 password를 묻는지 확인합니다.
```sh
csle@csle1:~$ ssh -l csle csle1 -p 2243 mkdir -p \
......@@ -663,7 +663,7 @@ rm ~/.ssh/known_hosts
sudo service ssh restart
```
###4. 쿠버네티스 설치 후, KSB 프레임워크 동작시 namenode가 동작하지 않을 경우
### 4. 쿠버네티스 설치 후, KSB 프레임워크 동작시 namenode가 동작하지 않을 경우
거의 드물게 발생하는 에러로 jps 명령을 통해 KSB 툴박스에서 프로세스를 확인했을때 namenode가 검색되지 않는 경우가 있습니다.
쿠버네티스의 etcd 가 사용하는 port와 hadoop이 사용하는 port 충돌로 인해 namenode가 초기화되지 않을 경우가 있습니다.
확인하는 방법은 다음과 같습니다. 이러한 문제를 해결하는 방법은 kubernetes를 삭제하고 다시 설치하는 것이 가장 쉬운 방법입니다.
......@@ -689,7 +689,7 @@ Backup/Checkpoint node | 50105 | dfs.backup.http.address
Tasktrackers | 50060 | mapred.task.tracker.http.address
Jobracker | 50030 | mapred.job.tracker.http.address
###5. 쿠버네티스 kubectl 명령 alias 방법
### 5. 쿠버네티스 kubectl 명령 alias 방법
```sh
echo "alias k=kubectl" >> ~/.bashrc
source <(kubectl completion bash | sed s/kubectl/k/g)
......
......@@ -4,7 +4,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
## Reader
###ksb.csle.component.reader
### ksb.csle.component.reader
| 컴포넌트 이름 | 구현 클래스명 | 설명 |
|-------------|-------------|------------|
......@@ -21,7 +21,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
| TableReader |ksb.csle.component.reader.<br>TableReader |JDBC 기반 데이터 입력기 | |
###ksb.csle.component.pipe.stream.reader
### ksb.csle.component.pipe.stream.reader
| 컴포넌트 이름 | 구현 클래스명 | 설명 |
|-------------|-------------|------------|
......@@ -34,7 +34,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
## writer
###ksb.csle.component.writer
### ksb.csle.component.writer
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
......@@ -47,7 +47,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|TableWriter |ksb.csle.component.writer.<br>TableWriter |JDBC 기반 데이터 출력기 | |
###ksb.csle.component.pipe.stream.writer
### ksb.csle.component.pipe.stream.writer
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
......@@ -63,7 +63,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
## Operator
###ksb.csle.component.operator.analysis
### ksb.csle.component.operator.analysis
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
......@@ -99,7 +99,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
###ksb.csle.component.operator.integration
### ksb.csle.component.operator.integration
|컴포넌트 이름 | 구현 클래스명 | 설명 | 관련 링크|
|---|---|---|---|
......@@ -110,7 +110,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|VectorAssembleColumnAddOperator |ksb.csle.component.operator.integration.<br>VectorAssembleColumnAddOperator |Spark ML 동작을 위한 Vector assemble 처리기 | |
###ksb.csle.component.operator.reduction
### ksb.csle.component.operator.reduction
|컴포넌트 이름 | 구현 클래스명 | 설명 | 관련 링크|
|---|---|---|---|
|AggregateOperator |ksb.csle.component.operator.reduction.<br>AggregateOperator |숫자형 데이터 통계값 (min, max, avg, std, count) 대체 |<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/tree/master/manual1903/operator/4.1.1.16.Aggregate_manual.md" > Link</a> |
......@@ -131,7 +131,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|TimeWindowAggregateOperator |ksb.csle.component.operator.reduction.<br>TimeWindowAggregateOperator |Unit timestamp 정보를 이용하여 시간정보에 따라 aggregation 처리기 | |
###ksb.csle.component.operator.service
### ksb.csle.component.operator.service
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
|ControlContextQueryOperator |ksb.csle.component.operator.service.<br>ControlContextQueryOperator |컨텍스트 및 제어 쿼리 처리기 | |
......@@ -140,7 +140,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
###ksb.csle.component.operator.transformation
### ksb.csle.component.operator.transformation
|컴포넌트 이름 | 구현 클래스명 | 설명 | 관련 링크|
|---|---|---|---|
|AddConditionalColumnOperator |ksb.csle.component.operator.transformation.<br>AddConditionalColumnOperator |주어진 조건에 의해 새로운 column 생성 | |
......@@ -162,7 +162,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|VectorizeColumnOperator |ksb.csle.component.operator.transformation.<br>VectorizeColumnOperator |여러 column들을 모아서 하나의 vector 타입 column을 생성 | |
###ksb.csle.component.pipe.query.operator
### ksb.csle.component.pipe.query.operator
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
|KafkaContextQueryPipeOperator |ksb.csle.component.pipe.query.operator.<br>KafkaContextQueryPipeOperator |카프카 OnDemand 쿼리용 | |
......@@ -174,7 +174,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
###ksb.csle.component.pipe.stream.operator
### ksb.csle.component.pipe.stream.operator
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
|FilterOperator |ksb.csle.component.pipe.stream.operator.<br>FilterOperator |스트림 파이프라인용 필터 | |
......@@ -188,7 +188,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|StreamTimeJoinOperator |ksb.csle.component.pipe.stream.operator.<br>StreamTimeJoinOperator |스트림 방식의 시간 조인 파이프라인 오퍼레이터 | |
###ksb.csle.didentification.privacy
### ksb.csle.didentification.privacy
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
|AggregationOperator |ksb.csle.didentification.privacy.<br>AggregationOperator |선택한 column들에 대한 aggregation 처리기 | |
......@@ -212,7 +212,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
## Runner
###ksb.csle.component.runner
### ksb.csle.component.runner
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
......@@ -223,7 +223,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|TensorflowServingRunner |ksb.csle.component.runner.<br>TensorflowServingRunner|텐서플로우 모델 서빙 실행기| |
###ksb.csle.component.runner.analysis
### ksb.csle.component.runner.analysis
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
......@@ -239,7 +239,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
<br>
## Controller
###ksb.csle.component.controller
### ksb.csle.component.controller
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
......@@ -255,7 +255,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|PySparkMLTrainer| - |Spark ML 학습용 컨트롤러| |
###ksb.csle.component.pipe.controller
### ksb.csle.component.pipe.controller
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
......
......@@ -31,7 +31,7 @@ $ ./send-data-via-http.sh ${HTTP_IP}:${HTTP_PORT}
```
##워크플로우 생성하기
## 워크플로우 생성하기
워크플로우 편집화면을 이용하여 아래의 과정을 통해 워크플로우를 생성합니다.
- 워크플로우 속성
......@@ -43,7 +43,7 @@ description | 스트림 데이터를 MongoDB에 적재하는 예제 | 워크
isBatch | false | 스트림 처리를 하는 워크플로우 이므로, false 로 지정
verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true 로 지정
###엔진 선택
### 엔진 선택
본 예제에서는 스트림 데이터를 입력받아 처리한 뒤 MongoDB에 적재하므로 **StreamToBatch** 엔진을 드래그앤 드롭합니다.
- 엔진 속성
......@@ -52,7 +52,7 @@ verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true
--|---|---|---|--
1 | StreamToBatch | ProcessingEngine | 즉시실행 | 스트림 데이터를 MongoDB에 적재
####Reader
#### Reader
HTTP 서버로부터 전달되어 오는 데이터를 입력 받기 위해 **HttpServerReader** 를 드래그 앤 드롭한 후 아래표와 같은 속성을 지정합니다.
field |value | 설명
......@@ -61,7 +61,7 @@ ip | 0.0.0.0 | HTTP 서버의 주소를 입력합니다.
port | 53001 | HTTP 서버의 포트번호를 입력합니다.
####Writer
#### Writer
**MongodbWriter** 를 드래그앤 드롭한 후 아래표와 같은 속성을 지정합니다.
field |value | 설명
......@@ -71,18 +71,18 @@ dbName | examples | DB 명
collectionName | data_from_http | 생성할 테이블 명
cleaningDataInconsistency | true | 기존 테이블 삭제 및 재생성 여부
####Controller
#### Controller
**SparkSessionOrStreamController** 를 드래그앤 드롭한 후 아래 표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
setOperationPeriod | 3 | 스트리밍 처리 주기 (초 단위)
####Runner
#### Runner
**SimpleSparkRunner** 를 드래그앤 드롭합니다. 디폴트 속성값을 사용합니다.
####Operator
#### Operator
본 예제에서는 스트림 입력을 그대로 MongoDB에 적재하므로 Operator를 사용하지 않습니다. 만약 스트림 입력 데이터를 가공해야 할 경우, 필요한 Operator를 드래그앤 드롭하여 속성값을 지정한 후 사용할 수 있습니다.
<br>
......@@ -93,7 +93,7 @@ ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어
![워크플로우 불러오기](./images/2.5.1_workflowLoad.png)
##워크플로우 실행 및 모니터링하기
## 워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼(<span style="color:#000000">&#9654;</span>)을 클릭합니다. 본 예제는 스트림 데이터를 처리하므로 **Batch** 체크 박스를 해제하고 워크플로우를 실행합니다.
......
......@@ -17,11 +17,11 @@ export_on_save:
![학습 데이터셋 저장소 위치 및 파일 선택하기 ](./images/2.5.10_DataRepository.png)
## 사용자 파이썬 코드 준비하기
텐서플로우 기반 딥러닝 모델이 구현된 사용자 파이썬 코드가 있어야 합니다. 사용자 파이썬 코드는 프레임워크와 연동하기 위해 프레임워크에서 전달하는 파라미터를 받는 부분, 학습된 모델을 텐서플로우 서빙용으로 export 하는 부분 등이 구현되어야 합니다. 자세한 내용은 <a href="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.2.KSB_TfPyCoding_Guide.html">KSB 프레임워크와 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
텐서플로우 기반 딥러닝 모델이 구현된 사용자 파이썬 코드가 있어야 합니다. 사용자 파이썬 코드는 프레임워크와 연동하기 위해 프레임워크에서 전달하는 파라미터를 받는 부분, 학습된 모델을 텐서플로우 서빙용으로 export 하는 부분 등이 구현되어야 합니다. 자세한 내용은 <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/edit/master/manual1903/2.7.2.KSB_TfPyCoding_Guide.html">KSB 프레임워크와 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
main 함수를 포함한 사용자 파이썬 코드에서 사용하는 라이브러리 파일 등은 동일한 폴더에 위치 시키거나 1 depth의 하위 폴더까지 작성 가능합니다.
##워크플로우 생성하기
## 워크플로우 생성하기
워크플로우 편집화면을 이용하여 아래의 과정을 통해 워크플로우를 생성합니다.
- 워크플로우 속성
......@@ -33,7 +33,7 @@ description | 텐서플로우 기반 딥러닝 모델을 주기적으로 학습
isBatch | true | 배치 처리를 하는 워크플로우 이므로, true 로 지정
verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true 로 지정
###엔진 선택
### 엔진 선택
본 예제는 텐서플로우를 이용하여 배치 형태로 딥러닝 모델을 생성하는 워크플로우이므로 배치 엔진을 선택합니다. 그리고 딥러닝 모델을 주기적으로 생성하기 위해 **RUNTYPE****반복실행** 으로 설정합니다. **주기** 는 한번, 매분, 매시간, 매일, 매주, 매월, 매년 중에 하나로 설정합니다. 본 예제에서는 테스트를 위해 **매분** 으로 설정합니다. 매분은 테스트용으로 5분 단위로 엔진이 submit 되어 실행됩니다.
......@@ -43,7 +43,7 @@ verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true
--|---|---|---|--
1 | Batch | TrainEngine | 반복 실행 | 텐서플로우 모델 학습
####Reader
#### Reader
FileReader를 선택하고 아래표와 같은 속성을 지정합니다. filePath 에 입력 파일의 경로 및 파일명을 지정합니다. 이 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--input` 파라미터로 전달됩니다.
field |value | 설명
......@@ -59,7 +59,7 @@ filePath는 경로 입력창 옆의 "File" 버튼을 클릭하여 아래 그림
![학습 데이터셋 파일 위치 및 선택하기 ](./images/2.5.10_DataFile.png)
####Writer
#### Writer
FileWriter를 선택하고 아래표와 같은 속성을 지정합니다. filePath 에 학습한 딥러닝 모델이 최종 저장될 폴더를 지정합니다. 해당 폴더에 자동으로 최신버전의 폴더를 생성한 후 모델이 저장됩니다. 모델의 버전은 0000 부터 시작하여 1씩 증가합니다. filePath 에 입력한 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--output` 파라미터로 전달됩니다.
본 예제에서는 다른 엔진에서 학습한 딥러닝 모델을 사용하도록 하기 위해 HDFS 절대경로를 지정합니다. 상대경로를 지정할 경우, 동적으로 생성한 **사용자 기본 파일경로** 가 앞에 추가되므로 다른 엔진에서 정확한 파일 경로를 지정하는 것이 어렵습니다.
......@@ -72,10 +72,10 @@ delimeter | , | 구분자
header | false | header 포함 여부
saveMode | | 사용하지 않음
####Controller
#### Controller
텐서플로우와 같은 외부시스템를 제어하기 위한 ExternalAnalysisController를 선택합니다.
####Runner
#### Runner
TensorflowRunner 를 선택하고 아래표와 같은 속성을 지정합니다. pyEntryPath 에 main 함수를 포함하는 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 경로 및 파일명을 지정합니다.
field |value | 설명
......@@ -86,7 +86,7 @@ inJson | false | Json 형태 파라미터 전달 여부
tfVersion | r1.3 | 텐서플로우의 버전
####Operator
#### Operator
DLTrainOperator를 선택하고 아래표와 같은 속성을 지정합니다. modelPath 에 내부적으로 학습된 모델을 저장할 경로를 지정합니다. 이 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--modelPath` 파라미터로 전달됩니다. 로컬 파일시스템 절대경로로 입력합니다.
또한, modelPath를 기준으로 최신버전의 폴더를 자동으로 생성하여 사용자 파이썬 코드의 `--model` 파라미터로 전달합니다. 모델의 버전은 0000 부터 시작하여 1씩 증가합니다. 따라서 예를 들면:
......@@ -117,7 +117,7 @@ paramValue | 2 |
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어져있습니다. 불러오기해서도 돌려볼 수 있습니다.
##워크플로우 실행 및 모니터링하기
## 워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
엔진의 RUNTYPE 을 설정한 후, 워크플로우 편집기 상단의 실행 버튼을 누릅니다. 이 때, 본 예제는 Batch 형태로 실행되는 엔진이므로 Batch 체크 박스를 선택하고 워크플로우를 실행합니다.
......
......@@ -45,6 +45,7 @@ export_on_save:
#### Runner
본 예제의 Runner는 TensorflowServingRunner를 사용하고, 속성을 다음과 같이 설정합니다.
field |value | 설명
--|---|--
modelBasePath | models/inception | 모델 경로
......
......@@ -37,6 +37,7 @@ Kafka 스트림으로 입력받은 이미지 데이터를 텐서플로우 기반
#### Reader
Kafka 스트림을 입력받기 위해 KafkaReader를 선택하고, 아래 표와 같이 속성을 설정합니다.
field | value | 설명
--|---|--
topic | mnist_input | 이미지 데이터를 입력받기 위한 Kafka Topic 이름
......@@ -46,6 +47,7 @@ bootStrapServer | csle1:9092 | Kafka 서버 접속주소 (IP, 포트번호)
#### Writer
이미지 분류 결과를 Kafka 스트림으로 출력하기 위해 KafkaWriter를 선택하고, 아래 표와 같이 속성을 설정합니다.
field | value | 설명
--|---|--
topic | mnist_output | 이미지 분류 결과를 출력하기 위한 Kafka Topic 이름
......@@ -55,18 +57,21 @@ bootStrapServer | csle1:9092 | Kafka 서버 접속주소 (IP, 포트번호)
#### Controller
Spark 기반의 스트림 데이터 처리를 위해 SparkSessionOrStreamController를 선택하고, 아래 표와 같이 속성을 설정합니다.
field | value | 설명
--|---|--
operationPeriod | 1 | 스트림 데이터를 처리하는 주기 (초 단위)
#### Runner
Spark 환경 설정을 위해 SimpleSparkRunner를 선택하고, 아래 표와 같이 속성을 설정합니다.
field | value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달
sparkArgs | 아래 표 참고 | Spark Application 설정
sparkArgs 설정은 다음과 같이 합니다.
field | value | 설명
--|---|--
master | local[\*] | 마스터
......
......@@ -16,7 +16,7 @@ KSB Dockerize 라이브러리는 사용자가 프로그래밍한 Python 함수
1. 입력한 문장의 topic 분류
2. topic이 일상적 대화일 경우, 일상적 대화들을 학습한 모델로 응답 문장 생성 <br>topic이 여행과 관련된 대화일 경우, 여행 관련 대화들을 학습한 모델로 응답 문장 생성
따라서 topic 분류 모델(이하 classify로 칭함), 일상적 대화들을 학습한 모델(이하 chitchat으로 칭함), 여행 관련 대화들을 학습한 모델(이하 travel로 칭함)이 필요합니다. 이러한 모델들을 KSB Dockerize를 이용하여 프레임워크에서 서빙하기 위해 <a href="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.1.KSB_Dockerize.html">Python 모듈 사용하기 (KSB Dockerize)</a> 매뉴얼에서 제공하는 방법대로 `base.py``main_func`을 생성해야 합니다.
따라서 topic 분류 모델(이하 classify로 칭함), 일상적 대화들을 학습한 모델(이하 chitchat으로 칭함), 여행 관련 대화들을 학습한 모델(이하 travel로 칭함)이 필요합니다. 이러한 모델들을 KSB Dockerize를 이용하여 프레임워크에서 서빙하기 위해 <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.7.1.KSB_Dockerize.md">Python 모듈 사용하기 (KSB Dockerize)</a> 매뉴얼에서 제공하는 방법대로 `base.py``main_func`을 생성해야 합니다.
### 사용자 파이썬 코드 업로드
Host PC의 /home/csle/ksb-csle/examples/pyModules/ChatbotServing 폴더에 있는 사용자가 프로그래밍한 파이썬 함수를 HDFS repository에 웹툴킷을 이용하여 업로드 합니다.
......
......@@ -10,7 +10,7 @@ export_on_save:
교통센서 데이터 파일을 이용하여 주기적으로 텐서플로우 모델을 학습한 후, 쿠버네티스를 이용해 최신 모델을 서빙하는 예제를 설명합니다.
## 쿠버네티스와 연동 환경 준비하기
<a href="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/1.6.KSB_K8s_install_Guide.html"> 쿠버네티스 클러스터 설치하기</a> 참고하여 쿠버네티스 클러스터를 구성합니다.
쿠버네티스 클러스터 설치하기 매뉴얼을 참고하여 쿠버네티스 클러스터를 구성합니다.
## 입력 데이터 준비하기
본 예제에서는 KSB 프레임워크 웹툴킷 화면에서 Repository 탭을 클릭하여 dataset/input 디렉토리를 선택합니다. 해당 디렉토리에 traffic_processing.csv 파일이 있는지 확인합니다.
......@@ -20,10 +20,10 @@ export_on_save:
![파일 업로드](./images/2.5.14.TrafficPeriodicTrainAndK8sServingExample_01.png)
## 사용자 파이썬 코드 준비하기
텐서플로우 기반 딥러닝 모델이 구현된 사용자 파이썬 코드가 있어야 합니다. 사용자 파이썬 코드는 프레임워크와 연동하기 위해 프레임워크에서 전달하는 파라미터를 받는 부분, 학습된 모델을 텐서플로우 서빙용으로 export 하는 부분 등이 구현되어야 합니다. 자세한 내용은 <a href="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.2.KSB_TfPyCoding_Guide.html">KSB 프레임워크와 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
텐서플로우 기반 딥러닝 모델이 구현된 사용자 파이썬 코드가 있어야 합니다. 사용자 파이썬 코드는 프레임워크와 연동하기 위해 프레임워크에서 전달하는 파라미터를 받는 부분, 학습된 모델을 텐서플로우 서빙용으로 export 하는 부분 등이 구현되어야 합니다. 자세한 내용은 <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.7.2.KSB_TfPyCoding_Guide.md">KSB 프레임워크와 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
main 함수를 포함한 사용자 파이썬 코드에서 사용하는 라이브러리 파일 등은 동일한 폴더에 위치 시키거나 1 depth의 하위 폴더까지 작성 가능합니다.
##워크플로우 생성하기
## 워크플로우 생성하기
워크플로우 편집화면에서 워크플로우를 작성합니다. 본 예제에서는 두 개의 엔진을 생성합니다.
- 워크플로우 속성
......@@ -46,7 +46,7 @@ verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true
텐서플로우를 이용하여 딥러닝 학습을 위해 Batch 엔진을 선택합니다.
####Reader
#### Reader
FileReader를 선택하고 아래표와 같은 속성을 지정합니다. filePath 에 입력 파일의 경로 및 파일명을 지정합니다. 이 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--input` 파라미터로 전달됩니다.
field |value | 설명
......@@ -59,7 +59,7 @@ filePath의 경로 입력창 옆의 "File" 버튼을 클릭하여 HDFS repositor
![학습 데이터셋 파일 위치 및 선택하기 ](./images/2.5.14.TrafficPeriodicTrainAndK8sServingExample_02.png)
####Writer
#### Writer
처리 결과를 파일 형태로 저장할 것이므로 FileWriter를 선택합니다. filePath 에 학습한 딥러닝 모델이 최종 저장될 폴더를 지정합니다. 해당 폴더에 자동으로 최신버전의 폴더를 생성한 후 모델이 저장됩니다. 모델의 버전은 0000 부터 시작하여 1씩 증가합니다. filePath 에 입력한 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--output` 파라미터로 전달됩니다.
본 예제에서는 두번째 엔진인 OnDemandServing 엔진에서 쿠버네티스를 이용한 모델 서빙을 하기 위해 HDFS 절대경로를 지정합니다. 상대경로를 지정할 경우, 동적으로 생성한 **사용자 기본 파일경로** 가 앞에 추가되므로 OnDemandServing 엔진에서 정확한 파일 경로를 지정하는 것이 어렵습니다.
......@@ -72,10 +72,10 @@ delimeter | , | 구분자
header | false | header 포함 여부
saveMode | | 사용하지 않음
####Controller
#### Controller
본 예제에서 Controller는 텐서플로우와 같은 외부시스템를 제어하기 위한 ExternalAnalysisController를 선택합니다.
####Runner
#### Runner
tensorflowRunner 를 선택합니다. pyEntryPath 에 main 함수를 포함하는 사용자 파이썬 코드(강남 교통 데이터를 학습하기 위한 코드)의 경로 및 파일명을 지정합니다.
field |value | 설명
......@@ -106,7 +106,7 @@ pyEntryPath 에는 아래와 같이 3가지 경로가 입력 가능합니다.
결과적으로 KSB 인공지능 프레임워크는 엔진 실행시, 로컬 파일시스템의 사용자 repository에 있는 kangnam 폴더 및 하위 1 depth 폴더를 file:///home/csle/ksb-csle/components/src/main/python/로 copy 후 tensorflow를 실행합니다.
####Operator
#### Operator
DLTrainOperator를 선택하고 아래표와 같은 속성을 지정합니다. modelPath 에 내부적으로 학습된 모델을 저장할 경로를 지정합니다. 이 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--modelPath` 파라미터로 전달됩니다. 로컬 파일시스템 절대경로로 입력합니다.
또한, modelPath를 기준으로 최신버전의 폴더를 자동으로 생성하여 사용자 파이썬 코드의 `--model` 파라미터로 전달합니다. 모델의 버전은 0000 부터 시작하여 1씩 증가합니다. 따라서 예를 들면:
......@@ -125,7 +125,7 @@ field |value | 설명
isTrain | True | 새롭게 학습할 경우에는 True, 그 외의 경우에는 False.
num_epochs | 1 | 학습 반복 횟수
####엔진 RunType
#### 엔진 RunType
매분 주기적으로 실행하기 위해 해당 파라미터를 설정하고 Apply를 누릅니다. 현재 테스트를 위해 주기 : '매분' 설정은 내부적으로 5분 단위의 주기적 실행을 하게 설정되어 있습니다.
![](./images/2.5.14.TrafficPeriodicTrainAndK8sServingExample_15.png)
......@@ -157,7 +157,7 @@ modelName | kangnam| 교통속도 예측 모델의 이름
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어져있습니다. 불러오기해서도 돌려볼 수 있습니다.
####엔진 RunType
#### 엔진 RunType
매분 주기적으로 실행하기 위해 해당 파라미터를 설정하고 Apply를 누릅니다. 단, 첫번째 엔진에서 생성된 모델을 이용하여 서빙을 하기 때문에 첫번째 엔진의 시작시간에서 5분 후에 tensorflow 서빙 엔진을 시작하도록 설정합니다.
![](./images/2.5.14.TrafficPeriodicTrainAndK8sServingExample_18.png)
......
......@@ -18,6 +18,7 @@ EdgeX에 등록된 온도 센서 장치로부터 온도 센서 데이터를 수
### 온도 센서 데이터
EdgeX로부터 수신하는 센싱 데이터 메시지는 다음과 같습니다.
```json
{
"pushed": 0,
......@@ -71,12 +72,14 @@ EdgeX로 전송할 스마트 전구 제어 메시지는 다음과 같습니다.
### Reader
HttpServerReader를 선택하고, 아래 표와 같이 속성을 설정합니다.
field |value | 설명
--|---|--
port | 57071 | EdgeX로부터 HTTP 스트림 데이터를 수신할 서버의 포트번호를 입력합니다.
### Writer
HttpClientWriter를 선택하고, 아래 표와 같이 속성을 설정합니다.
field | value | 설명
--|---|--
url | http://{EdgeX-IP}:{EdgeX-Port}}/api/v1/device/5b8756529f8fc2000183fe08/<br>command/5b8752139f8fc2000183fded | 스마트 전구 제어 메시지를 전달할 URL
......@@ -85,6 +88,7 @@ SrcColumnName | hueCommand | 스마트 전구 제어 메시지를 담고 있는
headr | 아래 표 참고 | HTTP header 설정
header 속성을 아래 표와 같이 설정합니다.
field | value | 설명
--|---|--
key | Content-Type | HTTP Content-Type header 이름
......@@ -92,18 +96,21 @@ value | application/json | 스마트 전구 제어 메시지의 타입
#### Controller
SparkStreamController를 선택하고, 아래 표와 같이 속성을 설정합니다.
field | value | 설명
--|---|--
operationPeriod | 1 | 스트림 데이터를 처리하는 주기 (초 단위)
#### Runner
SimpleSparkRunner를 선택하고, 아래 표와 같이 속성을 설정합니다.
field | value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달
sparkArgs | 아래 표 참고 | Spark Application 설정
sparkArgs 설정은 다음과 같이 합니다.
field | value | 설명
--|---|--
master | local[\*] | 마스터
......@@ -155,6 +162,7 @@ newColumnName | hueCommand | 스마트 전구 제어 메시지 컬럼의 이름
rules | 아래 표 참고 | 스마트 전구 제어 규칙 설정
rules 설정은 아래와 같이, 3가지 규칙을 입력합니다.
rule | field | value | 설명
--|--|---|--
1 | condition | name = 'temperature' and value >= 30 | 첫번째 규칙의 조건
......@@ -163,6 +171,7 @@ rule | field | value | 설명
2 | value | {"id":"2","state":{"on":true,"hue":21845}} | 두번째 규칙을 만족하는 경우의 스마트 전구 제어 메시지
3 | condition | name = 'temperature' and value <= 15 | 세번째 규칙의 조건
3 | value | {"id":"2","state":{"on":true,"hue":43690}} | 세번째 규칙을 만족하는 경우의 스마트 전구 제어 메시지
![스마트 전구 제어 규칙](images/2.5.15_2_01.png)
완성된 워크플로우는 다음과 같습니다.
......
......@@ -108,7 +108,7 @@ maxRuns | 1 |
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 KMeansExample 이름으로 저장되어 있으며, 워크플로우를 불러올 수 있습니다.
##워크플로우 실행 및 모니터링하기
## 워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼(<span style="color:#000000">&#9654;</span>)을 클릭합니다. 본 예제는 배치형태로 실행되는 엔진을 사용하였으므로 **Batch** 체크 박스를 체크하고 워크플로우를 실행합니다.
......
......@@ -66,12 +66,14 @@ saveMode | OVERWRITE | 파일 저장 방식을 선택합니다.
#### Controller
Controller 로는 SparkSessionOrStreamController 를 선택합니다.
SparkSessionOrStreamController는 Spark 환경에서 배치 처리나 스트림 처리에 범용적으로 사용하는 컨트롤러입니다.
field |value | 설명
--|---|--
operationPeriod | 0 | 컨트롤러 실행 주기를 입력합니다. 배치처리이므로 0 을 입력합니다. stream 처리의 경우 실행 주기값을 입력합니다.
#### Runner
SimpleSparkRunner를 선택합니다.
field |value | 설명
--|---|--
master | local [ * ] | Spark local 모드를 입력합니다.
......@@ -90,6 +92,7 @@ sparkVersion | 2.3.0 | Spark 버전 정보를 입력합니다.
비식별 처리 관련 모든 Operator에는 필수적으로 1) 처리할 컬럼에 대한 속성정보와, 2) 비식별 처리 후 적정성을 검증할 방법에 대한 정보를 포함하게 됩니다.
먼저, 데이터 컬럼에 대한 속성정보는 Operator의 fieldInfo를 클릭하여 설정합니다. fieldInfo는 아래와 같은 형식으로 정의되며, 여기서는 총계처리를 예제로 들어 설명합니다.
field |value | 설명
--|---|--
key | 1 | 총계처리 기능을 적용할 칼럼 ID를 입력합니다.
......@@ -103,6 +106,7 @@ filePath | 입력없음 | 컬럼 내 데이터 hierarchy를 파일로 읽어
컬럼의 hierarchy는 데이터를 어떤 형식으로 일반화할건지 나타내는 것으로, 일반화 기법 적용시 필수적으로 정의되어야 합니다. 가령, '55132'라는 zip code 데이터가 주어진 경우 한번 일반화를 수행하면 '5514*'로 변경될 수 있습니다. 일반화 후에도 적정성 평가를 통과 못하면 추가적으로 일반화를 더 수행하여 '551**''와 같은 데이터로 변경을 하게 됩니다. 일반화 단계에 따른 데이터의 변화를 일반화 단계 정보라 하며, 이 정보는 사용자가 직접 파일 형식으로 저장하여 그 파일로부터 읽어들이게 됩니다. 또는 autoConfigured true 설정을 통해 자동적으로 일반화 단계 정보를 구성할 수도 있습니다 (자동 구성시, 데이터의 syntatic 정보는 고려되지 않은 채, 숫자 값의 크기 또는 문자열의 길이를 기반으로 단순히 일반화 단계가 정의됩니다)
데이터 처리자는 비식별 처리 후 개인정보 및 민감정보 제거여부에 대해 적정성 검증을 수행해야 합니다 (6월 발간된 비식별 조치가이드라인에서는 k-익명성 기반 적정성 검증만이라도 필수적으로 수행하길 권고하고 있습니다). 적정성 검증에 대한 정보는 다음과 같은 형식으로 정의됩니다. Operator 내 check라는 버튼을 클릭한 후 아래와 같이 설정합니다.
field |value | 설명
--|---|--
measureLoss | AECS | 원본 데이터 대비 비식별 처리된 데이터의 데이터 손실량을 측정합니다.
......@@ -148,6 +152,7 @@ fieldInfo | 아래의 표 참고 | 컬럼의 속성을 정의합니다.
check | 위의 공통 설정 | 적정성 평가를 어떻게 수행할지 정의합니다.
본 예제에서는 데이터를 랜덤 문자열로 변경합니다. 랜덤 문자열을 생성을 위해, randInfo 클릭 후 다음과 같이 설정합니다.
field |value | 설명
--|---|--
randMethod | MIXED | 숫자, 문자를 섞어서 랜덤문자를 생성합니다.
......@@ -230,7 +235,7 @@ filePath | 입력없음 | 컬럼 내 데이터 hierarchy를 파일로 읽어
ksbuser@etri.re.kr 계정으로 접속하면 DeidentificationExample의 이름의 예제 워크플로우를 불러올 수 있습니다.
##워크플로우 실행 및 모니터링하기
## 워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼을 누릅니다. 이 때, BatchToBatchStream 엔진은 배치형태로 실행되는 엔진이므로 Batch 체크 박스를 체크하고 워크플로우를 제출합니다.
......
......@@ -31,7 +31,7 @@ Type | 기계학습모델
본 예제에서는 Host PC의 "/home/csle/ksb-csle/pyML/autosparkml/datasets/iris_dataset" 폴더를 사용자 HDFS repository 의 "dataset/iris_dataset" 로 업로드하여 사용합니다. 이 자료는 DataFrame 을 저장하고 있는 parquet 형태의 자료입니다.
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <a href="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.3.CSV2Parquet.html">CSV 파일 Parquet 변환</a>
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/edit/master/manual1903/2.7.3.CSV2Parquet.md"> CSV 파일 Parquet 변환</a>
## 워크플로우 생성하기
워크플로우 편집화면을 이용하여, 아래 과정을 거쳐 워크플로우를 생성합니다.
......
......@@ -18,7 +18,7 @@ export_on_save:
본 예제에서는 Host PC의 "/home/csle/ksb-csle/pyML/autosparkml/datasets/iris_dataset" 폴더를 사용자 HDFS repository 의 "dataset/iris_dataset" 로 업로드하여 사용합니다. 이 자료는 DataFrame 을 저장하고 있는 parquet 형태의 자료입니다.
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <a href="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.3.CSV2Parquet.html">CSV 파일 Parquet 변환</a>
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.7.3.CSV2Parquet.md">CSV 파일 Parquet 변환</a>
## 워크플로우 생성하기
워크플로우 편집화면을 이용하여 아래 과정을 거쳐 워크플로우를 생성합니다.
......
......@@ -13,22 +13,23 @@ export_on_save:
## 입력 데이터 준비하기
본 예제에서는 온도 센서 스트림 데이터를 HTTP로 입력 받는 것을 가정합니다. 이를 위해 Jmeter 도구를 활용합니다.
<a href="https://csleoss.etri.re.kr/images/contents/manual_1.0/jmeter.html">Jmeter 설명 바로가기</a>
<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/jmeter.md">Jmeter 설명 바로가기</a>
### 온도 스트림데이터 생성하기
워크플로우 실행 결과를 확인하기 위해서는 온도데이터를 스트림 형태로 발생시켜야 합니다. Jmeter를 활용한 온도 스트림 데이터 생성 방법은 메뉴얼 하단의 "결과 확인하기" 를 확인해 주시기 바랍니다.
##워크플로우 생성하기
## 워크플로우 생성하기
워크플로우 편집 화면을 이용하여 아래의 과정을 통해 워크플로우를 생성합니다.
### 엔진 생성하기
####엔진 선택
#### 엔진 선택
본 예제에서는 스트림형태로 입력되는 온도 데이터를 입력받아 실시간 온도를 예측해서 스트림 형태로 출력하므로 StreamToStream엔진을 선택합니다.
#####Reader
##### Reader
HTTP 서버로부터 전달되어 오는 센서데이터를 입력 받기 위해 HttpServerReader를 선택하고 아래표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
ip | 0.0.0.0 | HTTP 서버의 IP 주소
......@@ -36,8 +37,9 @@ path | / | HTTP 서버의 URL
port | 53002 | HTTP 서버의 포트 번호
#####Writer
##### Writer
StreamToStream엔진에서 처리된 결과를 Kafka topic 으로 출력 할 것이므로 KafkaWriter를 선택합니다.
field |value | 설명
--|---|--
topic | test3 | 온도 예측 결과를 받아서 저장할 때 사용할 Kafka 큐의 이름
......@@ -46,8 +48,9 @@ groupId | group3 | Kafka writer topic 그룹 아이디
bootStrapServer | csle1:9092 | Kafka 접속 주소(IP, 포트번호)
#####Controller
##### Controller
Controller 로는 WindowedSparkSessionOrStreamController 를 선택합니다. WindowedSparkSessionOrStreamController 는 스트림으로 입력되는 데이터를 큐에 저장하고, 일정 주기 마다 정해진 윈도우 크기로 잘라서 operator 에게 전달합니다.
field |value | 설명
--|---|--
operationPeriod | 2 | Reader로 부터 데이터를 읽어올 주기 | 53002 | HTTP 서버의 포트번호
......@@ -55,14 +58,16 @@ inputQueSize | 1 | 입력큐의 크기 | |
selectedColumnName | temperature | Spark dataframe에서 추출할 컬럼의 이름 | |
windowSize | 10 | 큐에서 사용할 윈도우의 크기 | |
#####Runner
##### Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.
sparkArgs | master | 아래의 표 참고
sparkArgs 설정은 다음과 같이 합니다.
field |value | 설명
--|---|--
master | local[\*] | YARN 의 마스터
......@@ -73,7 +78,7 @@ driverMemory | 1g | Spark 드라이버 메모리
#####Operator
##### Operator
센서로부터 입력되는 온도 데이터를 여섯가지 전처리 기법을 적용하여 정제합니다. 본 예제에서 사용한 전처리 기법은 ColumnSelectOperator, MinMaxScalingOperator, TransposeOperator, SparkMLPredictOperator, MinMaxScalingOperator, ColumnSelectOperator 입니다.
- ColumnSelectOperator
......@@ -135,7 +140,7 @@ selectedColumnId | 13 | 선택할 칼럼 ID
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어져있습니다. 불러오기해서도 돌려볼 수 있습니다.
##워크플로우 실행 및 모니터링하기
## 워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼을 누릅니다. 이 때, StreamToStream 엔진은 배치형태로 실행되지 않는 엔진들이므로 Batch 체크 박스는 해제하고 워크플로우를 실행해야합니다.
......@@ -154,7 +159,7 @@ WorkFlow History 탭을 선택하면, KSB프레임워크에서 워크플로우
![워크플로우 동작 로그](./images/2.5.7_04.png)
##결과 확인하기
## 결과 확인하기
#### 온도 스트림데이터 생성하기
워크플로우 실행 결과를 확인하기 위해서는 온도데이터를 스트림 형태로 발생시켜야 합니다. 이를 위해 위에서 설명한 Jmeter 도구를 활용합니다.
......
......@@ -13,7 +13,7 @@ export_on_save:
## 입력 데이터 준비하기
본 예제에서는 온도 센서 스트림 데이터를 HTTP로 입력 받는 것을 가정합니다. 이를 위해 Jmeter 도구를 활용합니다.
<a href="https://csleoss.etri.re.kr/images/contents/manual_1.0/jmeter.html">Jmeter 설명 바로가기</a>
<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/jmeter.md">Jmeter 설명 바로가기</a>
### 온도 스트림데이터 생성하기
워크플로우 실행 결과를 확인하기 위해서는 온도데이터를 스트림 형태로 발생시켜야합니다. Jmeter를 활용한 온도 스트림데이터 생성하는 방법은 메뉴얼 하단의 "결과 확인하기" 를 확인해 주시기 바랍니다.
......@@ -26,8 +26,11 @@ export_on_save:
#### 엔진 선택
본 예제에서는 스트림형태로 입력되는 온도 데이터를 입력받아 실시간 온도 예측을 하는 서빙 엔진으로 전달하기 위해 Streamtostream 엔진을 선택합니다.
#####Reader
##### Reader
HTTP 서버로부터 전달되어 오는 센서데이터를 입력 받기 위해 HttpServerReader를 선택하고 아래표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
ip | 0.0.0.0 | HTTP 서버의 IP 주소
......@@ -36,7 +39,9 @@ port | 53002 | HTTP 서버의 포트 번호
##### Writer
StreamToStream엔진에서 처리된 결과를 다음 엔진에게 Stream 형태로 전달할 것이므로, KafkaWriter를 선택합니다.
field |value | 설명
--|---|--
topic | test3 | 온도 예측 결과를 받아 올때 사용할 Kafka 큐의 이름
......@@ -47,6 +52,7 @@ bootStrapServer | csle1:9092 | Kafka 접속 주소(IP, 포트번호)
##### Controller
Controller 로는 WindowedSparkSessionOrStreamController 를 선택합니다. WindowedSparkSessionOrStreamController 는 스트림으로 입력되는 데이터를 큐에 저장하고, 일정 주기 마다 정해진 윈도우 크기로 잘라서 operator 에게 전달합니다.
field |value | 설명
--|---|--
operationPeriod | 2 | Reader로 부터 데이터를 읽어올 주기 | 53002 | HTTP 서버의 포트번호
......@@ -56,12 +62,14 @@ windowSize | 10 | 큐에서 사용할 윈도우의 크기 | |
##### Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.
sparkArgs | master | 아래의 표 참고
sparkArgs 설정은 다음과 같이 합니다.
field |value | 설명
--|---|--
master | local[\*] | YARN 의 마스터
......@@ -156,6 +164,7 @@ url | postQuery |
##### Runner
REST 방식으로 엔진을 실행 하기위해서 ServingRunner를 선택합니다.
field |value | 설명
--|---|-- |
port | 18080 | 최적의 제어값을 서빙할 포트번호 |
......@@ -216,7 +225,7 @@ Method: GET
URL: http://localhost:18080/query
```
<a href="https://csleoss.etri.re.kr/images/contents/manual_1.0/postman.html">Postman 설명 바로가기</a>
<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/postman.md">Postman 설명 바로가기</a>
![Jmeter로 온도 스트림데이터 입력하기](./images/2.5.8_08.png)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment