일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Coroutine
- apache flink
- Hadoop
- Heuristic Watermarks
- Perfect Watermark
- event time
- flink watermarks
- HDFS
- 공변
- flink watermark
- Heuristic Watermark
- Perfect Watermarks
- flink
- contravariant
- 불공변
- coroutines
- Stream
- java
- watermarks
- kotlin
- Generics
- Generic
- MapReduce
- processing time
- ingestion time
- covariant
- watermark
- 가변성
- lambda
- Today
- Total
목록2019/12 (5)
mm Home
Watermarks 이전 장 에서 설명했는데 Event Time 기준으로 스트림 처리를 할 때의 단점을 보완하기 위해 Watermarks 메커니즘을 사용한다고 했다. 가령 로그를 1시간 단위로 집계를 내려고 하는데, 09:59 에 발생한 이벤트가 10:01분에 스트림 서버에서 처리되어 09:00 ~ 10:00 시간대로 처리가 되지 않는 경우가 생기기 때문이다. 그럼 Watermarks가 어떤 것인지 살펴보자. Watermarks 란 Watermarks 는 단순히 Event Time의 타임스탬프를 기록해둔 마커이다. 특정 오퍼레이터의 윈도우 사이즈마다 Watermarks 에 timestamp가 마킹되어 있어서, 이 기록보다 느린 이벤트가 인입된다면 해당 이벤트를 Lateness로 간주하겠다는 것이다. 여기..
Flink 스트리밍 환경에서 세 가지의 특정 타임을 캡처할 수 있다. Event Time 이벤트가 디바이스에서 생성된 시간을 의미한다. 예를들어 모바일에서 로그인이 발생했을때 모바일 기기에서 발생된 시간이다. Processing Time 이벤트가 실제 Flink 서버에서 수행된 시간이다. 예를 들어 Window Time 을 매 1시간마다 스트림 처리중인 작업이 있다면, 같은 프로세싱 타임에 처리된 레코드들은 프로세싱 타임이 같다. 1시간마다 작업중인 스트리밍 처리에 100건의 레코드가 10:05 에 수행되었다면, 프로세싱 타임 10:05 에 100건의 레코드들이 수행된 것. (100건의 레코드들은 같은 프로세싱 타임에 수행된 것이다.) Ingestion Time 이벤트가 플링크에 인입되는 시간이다. 인입..
Generic JDK 1.5에서 타입 안정성을 위해 generic 추가 됨. //아래와 같이 raw type을 쓰게되면 ClassCastException을 발생하기 쉬웠다 List list = new ArrayList(); list.add(1); list.add("jess"); Generic을 만들었는데, JDK 1.5 미만의 버전의 호환을 선택. 그래서… Type Erasure 하위 호환을 위해 Type Parameter 정보를 지운다. JDK 1.5 미만에서 컴파일이 되어도 Generic을 사용했을때와 동일하게 하기 위함이다. List list = new ArrayList(); //위의 코드는 Type Erasure에 의해 실제 Runtime 시에 아래와 같다. List list = new Array..
Generic Kotlin의 Generic은 Java의 Jeneric과 비슷한 점이 많으므로 Java - Generics 글을 참고하면 좋을듯 하다. 위 글을 통해 아래의 내용을 이해하면 된다. Type Erasure 컴파일러가 하위 호환을 위해 Type Parameter 정보를 지운다. (런타임시에 타입 파라미터 정보를 알 수 없다) 공변 (Covariant) A -> A' 일때, C -> C *공변은 같은 기저타입에서 같은 방향으로 변한다. 반공변 (Contravariant) A -> A' 일때, C
글에 앞서.. 2019년에 공부하며 작성한 글이다보니 당시 버전과 2021년 버전은 꽤나 다른것 같습니다 개념은 비슷하겠지만.. 참고 부탁드립니다 코루틴이란? 협력형 멀티태스킹을 위한 프로그래밍 요소. 새로운 동시성 프로그래밍 방법. 코루틴을 경량화 스레드라고 자주 표현한다. 쉽게 보면, 중단가능한 Function이다. 이해가 잘 안되는데… 왜 나온거지? 코루틴 개념과 용어는 이미 1958년에 나옴. 서브루틴을 사용하지 않으면 공통된 기능을 묶지도 못하고, 모든 코드를 한번에 메모리에 올려야 하기 때문에 개발시에도, 런타임시에도 비효율적. (중복되는 루틴에 대해서 메모리 비효율적 - 생성해야하기 때문에) 서브루틴은 별도의 메모리에 올려놓고, 서브루틴이 호출될때마다 저장된 메모리로 이동했다가, return..