每天資訊Flink與Hadoop的相容性

菜單

Flink與Hadoop的相容性

這是關於Flink與Hadoop的相容性將幫助您瞭解Apache Flink如何與大資料Hadoop相容。它還將幫助您學習大資料Hadoop和Apache Flink的基礎知識,以及MapReduce和Flink之間的比較,以幫助您在Flink專業人員的高薪工資中獲得Apache Flink的工作。

在開始使用Hadoop Flink之前,讓我們瞭解Flink概念和Hadoop概念。

Flink與Hadoop的相容性

Hadoop與Flink的相容性

Apache Hadoop廣泛用於各行業的可擴充套件分析資料處理。許多應用程式已在Hadoop

MapReduce

中實現,可在群集中成功執行。

Apache Flink使

資料日趨成熟,

Flink提供了MapReduce的替代方案,並對其進行了一些改進。即使您

優化了Hadoop MapReduce作業

,Flink也提供了比Apache Spark和Hadoop更好的效能,並提供了Java和Scala中的API,它們非常易於使用。Flink的許多主要功能使

Flink與Spark與

Hadoop

區別開來。Flink的API為Mapper和Reducer函式以及InputFormats和OutputFormats等許多運算子提供介面。

但是你知道嗎:

“雖然Hadoop MapReduce和Flink在概念上是等價的,但Hadoop的MapReduce和Flink用於這些功能的介面並不是源相容的。”

Flink Hadoop相容性包

為了彌補Hadoop Flink相容性差距,我們開發了一個軟體包作為Google Summer of Code 2014專案的一部分。該包有助於包裝針對MapReduce介面實現的函式,並將它們嵌入到

Flink程式中

。Hadoop相容性軟體包允許您在Flink程式中重用Hadoop API,而無需對程式碼進行任何更改:

InputFormats(mapred和mapreduce API)作為Flink DataSource

OutputFormats(mapred和mapreduce API)為Flink DataSink

Mappers(mapred API)作為FlatMap函式

Reducers(mapred API)作為GroupReduce函式

使用Hadoop資料型別

Flink本身支援所有Hadoop資料型別,如Writables和WritableComparable。要僅使用Hadoop資料型別,您不需要包含Hadoop相容性依賴項。

專案配置

Flink對

Hadoop

Mappers和Reducers的支援是透過Flink-Hadoop相容性Maven模組完成的,在編寫Flink作業時總是需要它。此程式碼駐留在org。apache。flink。hadoopcompatibility包中。

要重用mappers和reducer,需要在pom。xml中新增以下依賴項

org。apache。flink

flink-hadoop-compatibility_2。10

1。1。3

使用Hadoop InputFormats

readHadoopFile(對於從FileInputFormat派生的輸入格式)或createHadoopInput(對於通用輸入格式)執行環境,我們可以使用它來建立Hadoop輸入格式作為Flink中的資料來源。生成的DataSet具有從Hadoop InputFormat檢索的2元組金鑰和值。

瞭解如何使用下面的Hadoop TextInputFormat:

ExecutionEnvironment env = ExecutionEnvironment。getExecutionEnvironment();

DataSet> input = env。readHadoopFile(new TextInputFormat(), LongWritable。class, Text。class, textPath);

使用Hadoop OutputFormats

對於Hadoop OutputFormats,Flink提供相容性包裝器。該類支援那些實現org。apache。hadoop。mapred。OutputFormat或擴充套件org。apache。hadoop。mapreduce。OutputFormat的類。OutputFormat包裝器期望其輸入資料是由Hadoop OutputFormat處理的2元組鍵和值的資料集。

使用Hadoop Mappers和Reducers

Flink的FlatMap函式和GroupReduce函式分別等同於hadoop Mappers和Reducers。您可以在Flink中使用Hadoop的Mapper和Reduce Hadoop的mapred API介面。

Flink的函式包裝器,我們可以用作常規的Flink FlatMapFunctions或GroupReduceFunctions

apache。flink。hadoopcompatibility。mapred。HadoopMapFunction,

apache。flink。hadoopcompatibility。mapred。HadoopReduceFunction,和

apache。flink。hadoopcompatibility。mapred。HadoopReduceCombineFunction。

如何在Flink程式中使用Hadoop函式

您可以在

Flink程式

中的任何位置使用Hadoop函式,並將它們與本機Flink函式混合使用。這意味著您可以實現任意複雜的Flink程式,該程式由多個Hadoop InputFormats和OutputFormats,Mapper和Reducer函式組成,無需在外部驅動程式方法中組裝Hadoop作業的工作流程,也無需使用Apache Oozie等工作流程排程程式。

結論 - Hadoop Flink相容性

因此,在這個Flink Compatability with Hadoop教程中,我們看到Flink允許我們重用我們為Hadoop MapReduce編寫的程式碼,包括所有資料型別,mapred-API的所有InputFormats和OutputFormats以及Mapper和Reducers。此外,我們可以在Flink程式中使用Hadoop函式,並將它們與所有其他Flink函式混合使用。此外,Flink的流水線執行允許任意組裝Hadoop功能,而無需透過

HDFS

進行資料交換。所以,這一切都在Hadoop Flink相容性方面。不過,如果您有任何疑問,請在下方發表評論。