Apache Flink는 강력한 스트림 및 일괄 처리 기능을 갖춘 오픈 소스 스트림 처리 프레임워크입니다.
https://flink.apache.org/에서 Flink에 대해 자세히 알아보세요.
일괄 처리와 데이터 스트리밍 프로그램을 모두 지원하는 스트리밍 우선 런타임
Java의 우아하고 유창한 API
매우 높은 처리량과 낮은 이벤트 대기 시간을 동시에 지원하는 런타임
데이터 흐름 모델을 기반으로 DataStream API에서 이벤트 시간 및 비순차적 처리 지원
다양한 시간 의미(이벤트 시간, 처리 시간)에 걸쳐 유연한 기간 설정(시간, 개수, 세션, 사용자 정의 트리거)
단 한 번의 처리를 보장하는 내결함성
스트리밍 프로그램의 자연스러운 배압
그래프 처리(배치), 기계 학습(배치) 및 복합 이벤트 처리(스트리밍)를 위한 라이브러리
메모리 내 및 코어 외부 데이터 처리 알고리즘 간의 효율적이고 강력한 전환을 위한 맞춤형 메모리 관리
Apache Hadoop MapReduce의 호환성 레이어
YARN, HDFS, HBase 및 기타 Apache Hadoop 에코시스템 구성요소와의 통합
// pojo class WordWithCount
public class WordWithCount {
public String word ;
public int count ;
public WordWithCount () {}
public WordWithCount ( String word , int count ) {
this . word = word ;
this . count = count ;
}
}
// main method
StreamExecutionEnvironment env = StreamExecutionEnvironment . getExecutionEnvironment ();
DataStreamSource < String > text = env . socketTextStream ( host , port );
DataStream < WordWithCount > windowCounts = text
. flatMap (
( FlatMapFunction < String , String >) ( line , collector )
-> Arrays . stream ( line . split ( " \ s" )). forEach ( collector :: collect )
). returns ( String . class )
. map ( word -> new WordWithCount ( word , 1 )). returns ( TypeInformation . of ( WordWithCount . class ))
. keyBy ( wordWithCnt -> wordWithCnt . word )
. window ( TumblingProcessingTimeWindows . of ( Duration . ofSeconds ( 5 )))
. sum ( "count" ). returns ( TypeInformation . of ( WordWithCount . class ));
windowCounts . print ();
env . execute ();
}
// pojo class WordWithCount
public class WordWithCount {
public String word ;
public int count ;
public WordWithCount () {}
public WordWithCount ( String word , int count ) {
this . word = word ;
this . count = count ;
}
}
// main method
StreamExecutionEnvironment env = StreamExecutionEnvironment . getExecutionEnvironment ();
env . setRuntimeMode ( RuntimeExecutionMode . BATCH );
FileSource < String > source = FileSource . forRecordStreamFormat ( new TextLineInputFormat (), new Path ( "MyInput.txt" )). build ();
DataStreamSource < String > text = env . fromSource ( source , WatermarkStrategy . noWatermarks (), "MySource" );
DataStream < WordWithCount > windowCounts = text
. flatMap (( FlatMapFunction < String , String >) ( line , collector ) -> Arrays
. stream ( line . split ( " \ s" ))
. forEach ( collector :: collect )). returns ( String . class )
. map ( word -> new WordWithCount ( word , 1 )). returns ( TypeInformation . of ( WordWithCount . class ))
. keyBy ( wordWintCount -> wordWintCount . word )
. sum ( "count" ). returns ( TypeInformation . of ( WordWithCount . class ));
windowCounts . print ();
env . execute ();
Flink 구축을 위한 전제 조건:
git clone https://github.com/apache/flink.git
cd flink
./mvnw clean package -DskipTests # this will take up to 10 minutes
Flink는 이제 build-target
에 설치됩니다.
Flink 커미터는 IntelliJ IDEA를 사용하여 Flink 코드베이스를 개발합니다. Scala 코드가 포함된 프로젝트를 개발하려면 IntelliJ IDEA를 권장합니다.
IDE의 최소 요구 사항은 다음과 같습니다.
IntelliJ IDE는 즉시 Maven을 지원하고 Scala 개발을 위한 플러그인을 제공합니다.
자세한 내용은 IntelliJ 설정 가이드를 확인하세요.
참고: 경험에 따르면 Scala IDE 3.0.3과 함께 번들로 제공되는 이전 Eclipse 버전의 결함 또는 Scala IDE 4.4.1의 번들 Scala 버전과의 버전 비호환성으로 인해 이 설정은 Flink에서 작동하지 않습니다.
대신 IntelliJ를 사용하는 것이 좋습니다(위 참조).
주저하지 말고 물어보세요!
도움이 필요하면 메일링 리스트의 개발자와 커뮤니티에 문의하세요.
Flink에서 버그를 발견하면 이슈를 열어주세요.
Apache Flink의 문서는 웹사이트 https://flink.apache.org 또는 소스 코드의 docs/
디렉터리에 있습니다.
이것은 활성 오픈 소스 프로젝트입니다. 우리는 시스템을 사용하거나 기여하기를 원하는 사람들에게 항상 열려 있습니다. 귀하의 기술에 맞는 구현 작업을 찾고 있다면 당사에 문의하십시오. 이 문서에서는 Apache Flink에 기여하는 방법을 설명합니다.
대부분의 Flink 커넥터는 Apache Software Foundation의 개별 저장소로 외부화되었습니다.
Apache Flink는 ASF(Apache Software Foundation)의 오픈 소스 프로젝트입니다. Apache Flink 프로젝트는 Stratosphere 연구 프로젝트에서 시작되었습니다.