일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Java
- intellij
- Spring XD
- elasticsearch
- Domain Driven Design
- nginx
- 도메인주도설계
- design pattern
- Spring Batch
- hibernate
- hdfs
- spark
- 제주
- Storm
- scala
- 엘라스틱서치
- Spring
- apache storm
- SBT
- docker
- 스프링 배치
- Clean Code
- Linux
- Hbase
- Angular2
- DDD
- Gradle
- elastic search
- hadoop
- Spring Boot
- Today
- Total
목록Programming (135)
욱'S 노트
소개 Spring XD는 설정할 수 있는 두 가지 주요 부문이 있다. 서버와 모듈이다. 서버(xd-singlenode, xd-admin, xd-container)는 Spring Boot 어플리케이션이고, 설정하는 방법은 Spring Boot Reference를 참조하기 바란다. YAML 기반의 설정 파일 servers.yml을 수정하는 것이 가장 단순한 케이스이다. servers.yml 설정 파일의 값들은 XD jar에 포함되어 있는 디폴트 application.yml 파일의 값들을 오버라이트 한다. 서버 설정 모듈 설정 모듈은 이름과 타입에 기초한 내포된 디렉토리 구조에 프로퍼티 파일을 위치함으로써 설정할 수 있다. 내포된 디렉토리 구조는 루트는 기본적으로 $XD_HOME/config/modules이다..
소개 Spring XD 분산 런타임(DIRT)은 멀티노드 타스크 처리 분배를 지원한다. XD 분산 런타임 아키텍처는 다음과 같은 컴포넌트들을 포함하고 있다. Admin - Stream과 작업 디플로이 및 런타임 상태 및 시스템 메트릭스, 분석에 접근하기 위한 REST 서비스 제공 Container - 모듈(stream processing task) 및 배치작업이 배포된 호스트 ZooKeeper - XD 클러스터를 위한 모든 런타임 정보 제공. Stream 정의 및 배포 목록, 모듈과 작업이 배포된 실행중인 컨테이너 추적. Spring Batch Job Repository Database - 작업을 위한 RDBMS, XD 배포판은 HSQLDB와 함께 제공되지만, procduction 설치시에는 적합하지 않..
설치하기 터미널에서 아래와 같은 명령을 수행하자. 자동으로 설치된다. ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 소프트웨어 패키지 설치하기 brew install 소프트웨어 패키지 제거하기 brew uninstall
이제 Spring XD를 시작해보자. 요구사항 최소 JDK 6 이상 설치가 가능하나 JDK 7 이상을 권고한다. 다운로드 http://repo.spring.io/release/org/springframework/xd/spring-xd/1.0.3.RELEASE/spring-xd-1.0.3.RELEASE-dist.zip 스프링 리파지토리로 가서 다운로드 하자. 일단 이 글을 작성할때의 최신 릴리이즈 버젼은 1.0.3이다. 적당한 위치에 압축을 해제하자.용량이 상당하다. 265MB 이다. 설치하기 Spring XD는 두가지 모드로 구동할 수 있다. 하나의 테스트 및 개발을 위한 싱글노드 런타임이며, 다른 하나는 멀티노드 프로세싱을 위한 분산 런타임이다. 일단 시작하는 장이니까 싱글 모드로 구동하겠다. 런타임 ..
Spring XD는 데이터 획득, 실시간 분석, 배치 처리, 데이터 추출을 위한 단일화되고 분산 및 확장가능한 서비스이다. Spring XD는 오픈소스 Apache2이며 목적은 빅데이터의 복잡성을 다루른 것이다. 실세계에 구축된 빅데이터 어플리케이션은 너무 복잡하다. 그리고 이들의 목적은 다양한 유스케이스를 아우르는 다양한 이기종의 시스템을 하나의 이해하기 쉬운 시스템으로 통합하는 것이다. 이해하기 쉬운 빅데이터 솔루션의 구축에 직면한 문제는 다음과 같다. - 다양한 입력 소스로부터 고성능 분산데이터 수집, 빅데이터 저장소로 저장 (HDFS or Splunk)- 실시간 데이터 분석. (메트릭스 수집 및 수치 집계)- 배치작업의 워크플로우 관리. 엔터프라이즈 시스템(RDBMS) 및 하둡(MapReduce,..
많은 배치 처리 문제는 single 스레드, single 프로세스 작업으로 해결할 수 있다. 그리고 복잡한 구현을 생각하기 전에 단순하게 처리할 수 있는지 체크하는 것은 좋은 생각이다. 실제작업이 성능을 측정하고 가장 단순한 방법으로 처리 할 수 있다는 그것이 베스트이다. 수백 메가바이트의 파일을 읽고 쓰는데도 1분이면 충분할 것이다. 우리는 이번에 작업을 병렬로 수행하는 방법에 대해 알아볼 것이다. 가장 크게 나누어 본다면 single process에서 멀티 스레드로 작업을 수행하는 것과 멀티 프로세스에서 처리하는 방법에 대해서 알아볼 것이다. Multi-threaded step 병렬처리를 시작하는 가장 단순한 방법은 Step 설정에 TaskExecutor를 추가하는 것이다. ... 이 예제에서 Tas..
스프링 배치 매뉴얼을 60% 본 시점 즈음에 다음과 같은 배치 프로그램을 작성해달라는 요청이 생겼다. 요건 : 파일로 부터 IP 리스트를 읽어서 특정 IP 대역을 분류해주세요. 음 엄청 간단하다. 첫번쨰 방법은 멀티 스텝을 구성해서 파일에서 IP 리스트를 읽어서 특정 대역에 해당하는 내용을 한 파일에 쓴다. 그리고 난 다음 두번째 스텝에서 특정대역에 속하지 않는 파일을 쓰면 된다. 그러나 이러한 방법은 우아하지 못하다. 배치라고 하면 대용량일텐데 입력파일을 두번 읽는다면, 두배로 시간이 소요되기 떄문이다. 그래서 구글링을 해봤더니 역시나 방법이 있었다. 이번 예제는 한번 읽어서 분류해서 두개의 파일로 출력하는 방법을 구현해보겠다. 먼저 입력 파일을 살펴보자. 아래와 같이 아이피를 가진 입력 파일이다.21..
모든 배치처리는 대량의 데이터를 읽고 계산하거나 변경하고 결과를 쓰는것으로 묘사될 수 있다. 스프링 배치는 bulk 처리를 위한 세가지 주요한 ItemReader, ItemProcessor 및 ItemWriter를 제공한다. ItemReader 비록 단순한 컨셉이지만 ItemReader는 다양한 타입의 입력 데이터를 제공하기 위한 것이다. 가장 일반적인 예는 다음과 같다. - Flat File, XML, Database public interface ItemReader { T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException; } Read 메소드는 ItemReader가 가장 주요한 ..
배치 도메인 중에서 step은 실제적인 배치 작업에서 필요한 모든 정보들이 정의된 도메인 오브젝트라고 했었다. Step은 배치 순서 중 독립적인 부분이다. 이것은 약간 작업을 작성하는 개발자의 재량에 따라 애매모호한 정의가 될 수 있다. Step은 개발자 원하는 것에 따라 단순하거나 복잡할 수가 있다. 파일로부터 데이터를 데이터베이스의 적재하는 것은 거의 코드가 필요없다. 더 복잡한 step은 어려운 비즈니스 룰을 포함할 수 있다. Chunk-Oriented Processing 스프링 배치에서는 대부분의 공통적인 구현이 Chunk 기반 처리를 수행한다. Chunk 기반 처리는 데이터를 한번에 하나씩 읽어서 트랜잭션 경게내에서 출력을 위한 chunks들을 생성한다, 하나의 아이템은 ItemReader로부터..
JobLauncher는 새로운 JobExecution을 생성하기 위해 JobRepository를 이용한다. 작업 수행중에 같은 실행을 업데이트하기 위해 같은 JobRepository를 이용한다. 단순한 시나리오는 위와 같지만, 수백 개의 배치 작업과 스케쥴링 요구 사항을 충족하기 위해선 다음과 같이 요구된다. JobExplorer와 JobOperator는 메타데이터에 대한 쿼리와 컨트롤을 추가한 인터페이스이다. JobExplorer 기존의 실행을 리파지토리로부터 쿼리를 하는 것이 가장 기본적인 기능일 것이다. 이러한 기능은 JobExplorer 인터페이스에 의해 제공된다. JobExplorer는 JobRepository의 read-only 버젼이다. 팩토리빈에 의해 쉽게 정의할 수 있다.` JobRegi..