아파치 플링크

Apache Flink
아파치 플링크
Apache Flink logo.svg
개발자아파치 소프트웨어 재단
초기 릴리즈2011년 5월; 10년(2011-05)
안정적 해제
1.14.3[1] / 2022년 1월 17일; 24일(2022년 1월 17일)[2]
리포지토리
기록 위치자바스칼라
운영 체제크로스 플랫폼
유형
면허증아파치 라이선스 2.0
웹사이트flink.apache.org Edit this on Wikidata

Apache FlinkApache Software Foundation에서 개발한 오픈소스 통합 스트림 처리 및 배치 처리 프레임워크다.아파치 플링크의 핵심은 자바스칼라로 작성된 분산 스트리밍 데이터 흐름 엔진이다.[3][4]플링크는 데이터 병렬 및 파이프라인(작업 병렬) 방식으로 임의 데이터 흐름 프로그램을 실행한다.[5]플링크의 파이프라인 런타임 시스템은 대량/배치 및 스트림 처리 프로그램을 실행할 수 있게 해준다.[6][7]게다가 플링크의 런타임은 반복 알고리즘의 실행을 기본적으로 지원한다.[8]null

플링크는 높은 처리량과 짧은 지연 시간 스트리밍 엔진을[9] 제공할 뿐만 아니라 이벤트 시간 처리 및 상태 관리를 지원한다.플링크 애플리케이션은 기계 고장의 경우 내결함성을 가지며 정확히 한 번 의미론을 지원한다.[10]프로그램은 Java, Scala,[11] Python,[12] SQL[13] 작성할 수 있으며, 클러스터나 클라우드 환경에서 실행되는 데이터 흐름 프로그램으로 자동 컴파일되어 최적화된다[14].[15]null

플링크는 자체 데이터 스토리지 시스템을 제공하지 않고 아마존 키네시스, 아파치 카프카, HDFS, 아파치 카산드라, 엘라스틱서치 등의 시스템에 데이터 소스 및 싱크 커넥터를 제공한다.[16]null

개발

Apache Flink는 Apache Software Foundation 내의 Apache Flink Community에 의해 Apache License 2.0에[17] 따라 개발된다.이 프로젝트는 25명 이상의 커밋자와 340명 이상의 기고자에 의해 추진된다.null

개요

Apache Flink의 데이터 흐름 프로그래밍 모델은 유한 데이터셋과 무한 데이터셋 모두에서 한 번에 이벤트 처리 기능을 제공한다.기본적인 수준에서 플링크 프로그램은 스트림과 변환으로 구성된다.개념적으로 스트림은 (잠재적으로 끝나지 않는) 데이터 레코드의 흐름이며, 변환은 하나 이상의 스트림을 입력으로 가져가고, 결과적으로 하나 이상의 출력 스트림을 생성하는 작업이다.[18]null

Apache Flink에는 두 가지 핵심 API, 즉 경계 또는 경계되지 않은 데이터 스트림을 위한 DataStream API와 경계된 데이터 세트를 위한 DataSet API가 포함되어 있다.플링크는 관계형 스트림과 배치 처리를 위한 SQL과 같은 표현 언어인 테이블 API도 제공하며 플링크의 DataStream과 DataSet API에 쉽게 내장할 수 있다.플링크가 지원하는 최상위 언어는 SQL로, 의미론적으로 테이블 API와 유사하며 프로그램을 SQL 조회 표현으로 나타낸다.null

모델 및 분산 런타임 프로그래밍

실행 시 플링크 프로그램은 스트리밍 데이터 흐름에 매핑된다.[18]모든 플링크 데이터 흐름은 하나 이상의 소스(예: 메시지 대기열 또는 파일 시스템)로 시작하여 하나 이상의 싱크(예: 메시지 대기열, 파일 시스템 또는 데이터베이스)로 끝난다.스트림에서 임의 개수의 변환을 수행할 수 있다.이러한 스트림은 응용 프로그램이 데이터 흐름을 분기 및 병합할 수 있도록 지시된 순환 데이터 흐름 그래프로 배열할 수 있다.null

플링크는 Apache Kafka, Amazon Kinesis, HDFS, Apache Cassandra 등과 함께 준비된 소스 및 싱크 커넥터를 제공한다.[16]null

플링크 프로그램은 클러스터 내에서 분산 시스템으로 실행되며, 다른 리소스 관리 프레임워크와 함께 YARN, Mesos, Docker 기반 설정뿐만 아니라 독립 실행형 모드로 배포할 수 있다.[19]null

상태: 체크포인트, 저장포인트 및 오류 허용

아파치 플링크는 분산형 체크포인트를 기반으로 한 경량 내결함성 메커니즘을 포함하고 있다.[10]체크포인트는 응용프로그램 상태와 원본 스트림의 위치를 비동기식으로 자동 스냅숏으로 나타낸 것이다.실패의 경우, 체크포인트가 활성화된 플링크 프로그램은 복구 시 마지막으로 완료된 체크포인트에서 처리를 재개하여 플링크가 애플리케이션 내에서 정확히 한 번 상태 의미론을 유지하도록 보장한다.체크포인트 메커니즘은 외부 시스템을 체크포인트 메커니즘에 포함시키기 위한 애플리케이션 코드의 후크를 노출시킨다(데이터베이스 시스템과의 거래 개시 및 커밋과 같은).null

플링크에는 수동으로 트리거되는 체크포인트인 저장포인트라는 메커니즘도 포함되어 있다.[20]사용자는 저장 지점을 생성하고 실행 중인 플링크 프로그램을 중지한 다음 스트림의 동일한 애플리케이션 상태와 위치에서 프로그램을 재개할 수 있다.저장포인트는 응용프로그램의 상태를 잃지 않고 플링크 프로그램 또는 플링크 클러스터에 대한 업데이트를 가능하게 한다.또한 Flink 1.2의 경우, 절약을 통해 다른 병렬로 애플리케이션을 재시작할 수 있어 사용자가 변화하는 워크로드에 적응할 수 있다.null

DataStream API

Flink의 DataStream API는 한정된 데이터 스트림이나 무한 확장된 데이터 스트림에서 변환(예: 필터, 집계, 창 기능)을 가능하게 한다.DataStream API는 20가지 이상의 변환 유형을 포함하며 자바와 스칼라에서 사용할 수 있다.[21]null

상태 저장 스트림 처리 프로그램의 간단한 예는 연속 입력 스트림에서 워드 카운트를 내보내고 데이터를 5초 창으로 그룹화하는 애플리케이션이다.

수입하다 조직화하다.아파치.휘청거리다.스트리밍.api.스칼라._ 수입하다 조직화하다.아파치.휘청거리다.스트리밍.api.창호지질.시간.시간  케이스 계급 워드 카운트(단어: , 수를 세다: 인트)  반대하다 윈도워드카운트 {   반항하다 본래의(아그: 배열[]) {      발랄하게 하다 부러워하다 = StreamExecutionEnvironment 환경.getExecutionEnvironment 환경     발랄하게 하다 문자 메시지를 보내다 = 부러워하다.socketTextStream("localhost", 9999)      발랄하게 하다 세다 = 문자 메시지를 보내다.플랫맵 { _.toLowerCase.갈라지다("\\W+") 여과하다 { _.비어 있지 않음 } }       .지도를 그리다 { 워드 카운트(_, 1) }       .키비("단어")       .타임윈도(시간.몇 초(5))       .합계를 내다("카운트")      세다.인쇄하다      부러워하다.처형하다("Window Stream WordCount")   } } 

아파치 빔 - 플링크 러너

아파치 빔은 "(개발자가) 어떤 실행 엔진에서도 실행할 수 있는 배치 및 스트리밍 데이터 처리 작업을 구현할 수 있는 고급 통합 프로그래밍 모델을 제공한다"[22]고 말했다.아파치 플링크온빔 주자는 빔 커뮤니티가 유지하는 능력 매트릭스에 따르면 가장 많은 특징을 가지고 있다.[23]null

데이터 Artisans는 Apache Flink 커뮤니티와 함께 Flink 러너를 개발하기 위해 Beam 커뮤니티와 긴밀하게 협력했다.[24]null

DataSet API

Flink의 DataSet API는 경계 데이터셋에서 변환(예: 필터, 매핑, 결합, 그룹화)을 가능하게 한다.DataSet API에는 20가지 이상의 변환 유형이 포함되어 있다.[25]API는 Java, Scala, 실험용 Python API로 이용할 수 있다.Flink의 DataSet API는 개념적으로 DataStream API와 유사하다.null

표 API 및 SQL

플링크의 테이블 API는 플링크의 자바와 스칼라 DataSet, DataStream API에 내장할 수 있는 관계형 스트림 및 배치 처리를 위한 SQL과 같은 표현 언어다.Table API와 SQL 인터페이스는 관계형 Table 추상화에서 작동한다.표는 외부 데이터 소스 또는 기존 DataStreams 및 DataSets에서 생성할 수 있다.테이블 API는 테이블의 선택, 집계, 조인 등의 관계형 연산자를 지원한다.null

테이블은 일반 SQL로도 쿼리할 수 있다.Table API와 SQL은 동등한 기능을 제공하며 동일한 프로그램에 혼합될 수 있다.테이블을 DataSet 또는 DataStream으로 다시 변환하면 관계 운영자와 SQL 쿼리에 의해 정의된 논리 계획이 Apache Calcite를 사용하여 최적화되고 DataSet 또는 DataStream 프로그램으로 변환된다.[26]null

플링크 포워드

플링크 포워드는 아파치 플링크에 관한 연례 회의다.플링크 포워드의 초판은 2015년 베를린에서 열렸다.이틀간 열린 이번 회의에는 16개국 250여 명이 참석했다.세션은 플링크 개발자들의 30개 이상의 기술 프레젠테이션과 함께 2개 트랙으로 구성되었으며, 실습 플링크 교육이 있는 1개의 추가 트랙으로 구성되었다.null

2016년에는 350명의 참가자가 이 회의에 참여했고 40명 이상의 연사들이 3개의 평행 트랙으로 기술 대화를 발표했다.셋째 날에는 참석자들을 초청해 실습교육에 참여시켰다.null

2017년에는 샌프란시스코로도 행사가 확대된다.컨퍼런스데이는 플링크가 기업에서 어떻게 활용되고 있는지, 플링크 시스템 내부, 플링크와의 생태계 통합, 플랫폼의 미래 등에 대한 기술회담을 전담한다.키노트, 산학관 플링크 사용자들의 대담, 아파치 플링크에 대한 실습교육 등이 특징이다.null

2020년 COVID-19 대유행 이후 샌프란시스코에서 개최하기로 했던 플링크 포워드의 스프링 에디션은 취소되었다.대신 4월 22일부터 4월 24일까지 사실상 컨퍼런스가 진행됐으며 라이브 키노트, 플링크 활용 사례, 아파치 플링크 내부 등 스트림 처리 및 실시간 분석 관련 주제들이 소개됐다.[27]null

역사

2010년, 연구 프로젝트 「스트라토스피어:볼커 마클(독일연구재단(DFG)[29] 후원)이 이끄는 '클라우드 정보관리'[28]베를린 공과대학, 험볼트-유니버시테트베를린, 하소-플라트너-인스티튜트 포츠담의 협업으로 시작됐다.플링크는 성층권 분산형 실행엔진의 포크에서 시작해 2014년 3월 아파치 인큐베이터 프로젝트가 됐다.[30]2014년 12월 플링크는 아파치 최상위 프로젝트로 받아들여졌다.[31][32][33][34]null

버전 원본 발매일 최신 버전 출시일자
이전 버전,이상 유지 관리되지 않음: 0.9 2015-06-24 0.9.1 2015-09-01
이전 버전,이상 유지 관리되지 않음: 0.10 2015-11-16 0.10.2 2016-02-11
이전 버전,이상 유지 관리되지 않음: 1.0 2016-03-08 1.0.3 2016-05-11
이전 버전,이상 유지 관리되지 않음: 1.1 2016-08-08 1.1.5 2017-03-22
이전 버전,이상 유지 관리되지 않음: 1.2 2017-02-06 1.2.1 2017-04-26
이전 버전,이상 유지 관리되지 않음: 1.3 2017-06-01 1.3.3 2018-03-15
이전 버전,이상 유지 관리되지 않음: 1.4 2017-12-12 1.4.2 2018-03-08
이전 버전,이상 유지 관리되지 않음: 1.5 2018-05-25 1.5.6 2018-12-26
이전 버전,이상 유지 관리되지 않음: 1.6 2018-08-08 1.6.3 2018-12-22
이전 버전,이상 유지 관리되지 않음: 1.7 2018-11-30 1.7.2 2019-02-15
이전 버전,이상 유지 관리되지 않음: 1.8 2019-04-09 1.8.3 2019-12-11
이전 버전,이상 유지 관리되지 않음: 1.9 2019-08-22 1.9.2 2020-01-30
이전 버전,이상 유지 관리되지 않음: 1.10 2020-02-11 1.10.3 2021-01-29
이전 버전,이상 유지 관리되지 않음: 1.11 2020-07-06 1.11.6 2021-12-16
이전 버전,이상 유지 관리되지 않음: 1.12 2020-12-10 1.12.7 2021-12-16
이전 버전이지만 여전히 유지됨: 1.13 2021-05-03 1.13.5 2021-12-16
현재 안정적인 버전: 1.14 2021-09-29 1.14.3 2022-01-17

릴리스 날짜

  • 09/2021: Apache Flink 1.14(09/2021: v1.14.0, 12/2021: v1.14.2, 01/2022: v1.14.3)
  • 05/2021: Apache Flink 1.13(05/2021: v1.13.1, 08/2021: v1.13.2, 10/2021: v1.13.3, 12/2021: v1.13.5)
  • 12/2020: Apache Flink 1.12(01/2021: v1.12.1; 03/2021: v1.12)2; 04/04: v1.12.3, 05/05: v1.12.4, 08/08: v1.12.5, 12/118: v1.12.7)
  • 07/2020: Apache Flink 1.11 (07/2020: v1.11.1, 09/2020: v1.11.2, 12/2020: v1.11.3, 08/2021: v1.11.4, 12/2021: v1.11.6)
  • 02/2020: Apache Flink 1.10 (05/2020: v1.10.1; 08/2020: v1.10.2; 01/2021: v1.10.3)
  • 08/2019: Apache Flink 1.9(10/2019: v1.9.1; 01/2020: v1.9.2)
  • 04/2019: Apache Flink 1.8(07/2019: v1.8.1; 09/2019: v1.8.2; 12/2019: v1.8.3)
  • 11/2018: Apache Flink 1.7 (12/2018: v1.7.1; 02/2019: v1.7.2)
  • 08/2018: Apache Flink 1.6(09/2018: v1.6.1; 10/2018: v1.6.2; 12/2018: v1.6.3; 02/2019: v1.6.4)
  • 05/2018: Apache Flink 1.5(07/2018: v1.5.1; 07/2018: v1.5.2; 08/2018: v1.5.3; 09/2018: v1.5.4; 10/2018: v1.5.5; 12/2018: v1.5.6)
  • 2017년 12월 12일: Apache Flink 1.4 (02/2018: v1.4.1, 03/2018: v1.4.2)
  • 06/2017: Apache Flink 1.3(06/2017: v1.3.1; 08/2017: v1.3.2; 03/2018: v1.3.3)
  • 02/2017: Apache Flink 1.2(04/2017: v1.2.1)
  • 08/2016: Apache Flink 1.1(08/2016: v1.1.1, 09/2016: v1.1.2, 10/2016: v1.1.3, 12/2016: v1.1.4, 03/2017: v1.1.5)
  • 03/2016: Apache Flink 1.0 (04/2016: v1.0.1, 04/2016: v1.0.2, 05/2016: v1.0.3)
  • 11/2015: Apache Flink 0.10 (11/2015: v0.10.1; 02/2016: v0.10.2)
  • 06/2015: Apache Flink 0.9 (09/2015: v0.9.1)
    • 04/2015: Apache Flink 0.9-milstone-1

Apache 인큐베이터 출시 날짜

  • 01/2015: Apache Flink 0.8 삽입
  • 2014년 11월 11일: Apache Flink 0.7 삽입
  • 08/2014: Apache Flink 0.6 삽입(09/2014: v0.6.1 삽입)
  • 05/2014: 성층권 0.5(06/2014: v0.5.1, 2014년 7월: v0.5.2)

아파치 전 성층권 방출 날짜

  • 01/2014: 성층권 0.4 (버전 0.3 생략)
  • 2012년 8월: 성층권 0.2
  • 05/2011: 성층권 0.1 (08/2011: v0.1.1)

2.14.1, 1.13.4, 1.12.6, 1.11.5 릴리즈는 2.15.0으로 Log4j 업그레이드만 포함하도록 되어 있었는데, CVE-로 인해 생략되었다.2021-45046은 출판물 발행 중에 발견되었다.[35]

참고 항목

참조

  1. ^ https://flink.apache.org/news/2022/01/17/release-1.14.3.html.
  2. ^ "All stable Flink releases". flink.apache.org. Apache Software Foundation. Retrieved 2021-12-20.
  3. ^ "Apache Flink: Scalable Batch and Stream Data Processing". apache.org.
  4. ^ "apache/flink". GitHub. 29 January 2022.
  5. ^ Alexander Alexandrov, Rico Bergmann, Stephan Ewen, Johann-Christoph Freytag, Fabian Hueske, Arvid Heise, Odej Kao, Marcus Leich, Ulf Leser, Volker Markl, Felix Naumann, Mathias Peters, Astrid Rheinländer, Matthias J. Sax, Sebastian Schelter, Mareike Höger, Kostas Tzoumas, and Daniel Warneke.2014. 빅데이터 분석을 위한 성층권 플랫폼.VLDB 저널 23, 6 (2014년 12월), 939-964.도이
  6. ^ Ian Pointer (7 May 2015). "Apache Flink: New Hadoop contender squares off against Spark". InfoWorld.
  7. ^ "On Apache Flink. Interview with Volker Markl". odbms.org.
  8. ^ Stephan Ewen, Kostas Tzoumas, Moritz Kaufmann, Volker Markl. 2012.빠른 반복 데이터 흐름 회전Proc. VLDB Endow. 5, 11 (2012년 7월), 1268-1279.도이
  9. ^ "Benchmarking Streaming Computation Engines at Yahoo!". Yahoo Engineering. Retrieved 2017-02-23.
  10. ^ a b Carbone, Paris; Fóra, Gyula; Ewen, Stephan; Haridi, Seif; Tzoumas, Kostas (2015-06-29). "Lightweight Asynchronous Snapshots for Distributed Dataflows". arXiv:1506.08603 [cs.DC].
  11. ^ "Apache Flink 1.2.0 Documentation: Flink DataStream API Programming Guide". ci.apache.org. Retrieved 2017-02-23.
  12. ^ "Apache Flink 1.2.0 Documentation: Python Programming Guide". ci.apache.org. Retrieved 2017-02-23.
  13. ^ "Apache Flink 1.2.0 Documentation: Table and SQL". ci.apache.org. Retrieved 2017-02-23.
  14. ^ 파비안 후스케, 마티아스 피터스, 마티아스 J. 색스, 아스트리드 레인렌더, 리코 베르그만, 알조샤 크레텍, 코스타스 츠우마스.2012. 데이터 흐름 최적화에서 블랙박스 열기Proc. VLDB Endow. 5, 11 (2012년 7월), 1256-1267.도이
  15. ^ 다니엘 워네케와 오데지 카오 2009년Nephele: 클라우드에서 효율적인 병렬 데이터 처리.두 번째 워크샵에서 그리드 및 슈퍼컴퓨터의 다과업 컴퓨팅에 관한 워크숍 (MTAGS '09).ACM, 뉴욕, 뉴욕, 미국, 8조 10면도이
  16. ^ a b "Apache Flink 1.2.0 Documentation: Streaming Connectors". ci.apache.org. Retrieved 2017-02-23.
  17. ^ "ASF Git Repos - flink.git/blob - LICENSE". apache.org. Archived from the original on 2017-10-23. Retrieved 2015-04-12.
  18. ^ a b "Apache Flink 1.2.0 Documentation: Dataflow Programming Model". ci.apache.org. Retrieved 2017-02-23.
  19. ^ "Apache Flink 1.2.0 Documentation: Distributed Runtime Environment". ci.apache.org. Retrieved 2017-02-24.
  20. ^ "Apache Flink 1.2.0 Documentation: Distributed Runtime Environment - Savepoints". ci.apache.org. Retrieved 2017-02-24.
  21. ^ "Apache Flink 1.2.0 Documentation: Flink DataStream API Programming Guide". ci.apache.org. Retrieved 2017-02-24.
  22. ^ "Apache Beam". beam.apache.org. Retrieved 2017-02-24.
  23. ^ "Apache Beam Capability Matrix". beam.apache.org. Retrieved 2017-02-24.
  24. ^ "Why Apache Beam? A Google Perspective Google Cloud Big Data and Machine Learning Blog Google Cloud Platform". Google Cloud Platform. Retrieved 2017-02-24.
  25. ^ "Apache Flink 1.2.0 Documentation: Flink DataSet API Programming Guide". ci.apache.org. Retrieved 2017-02-24.
  26. ^ "Stream Processing for Everyone with SQL and Apache Flink". flink.apache.org. Retrieved 2020-01-08.
  27. ^ "Flink Forward Virtual Conference 2020".
  28. ^ "Stratosphere". stratosphere.eu.
  29. ^ "DFG - Deutsche Forschungsgemeinschaft -". dfg.de.
  30. ^ "Stratosphere". apache.org.
  31. ^ "Project Details for Apache Flink". apache.org.
  32. ^ "The Apache Software Foundation Announces Apache™ Flink™ as a Top-Level Project : The Apache Software Foundation Blog". apache.org.
  33. ^ "Will the mysterious Apache Flink find a sweet spot in the enterprise?". siliconangle.com. 9 February 2015.
  34. ^ (독일어로)
  35. ^ "Apache Flink Log4j emergency releases". flink.apache.org. Apache Software Foundation. Retrieved 2021-12-22.

외부 링크