這是關於Flink與Hadoop的相容性將幫助您瞭解Apache Flink如何與大資料Hadoop相容。它還將幫助您學習大資料Hadoop和Apache Flink的基礎知識,以及MapReduce和Flink之間的比較,以幫助您在Flink專業人員的高薪工資中獲得Apache Flink的工作。
在開始使用Hadoop Flink之前,讓我們瞭解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中新增以下依賴項
使用Hadoop InputFormats
readHadoopFile(對於從FileInputFormat派生的輸入格式)或createHadoopInput(對於通用輸入格式)執行環境,我們可以使用它來建立Hadoop輸入格式作為Flink中的資料來源。生成的DataSet具有從Hadoop InputFormat檢索的2元組金鑰和值。
瞭解如何使用下面的Hadoop TextInputFormat:
ExecutionEnvironment env = ExecutionEnvironment。getExecutionEnvironment();
DataSet
使用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相容性方面。不過,如果您有任何疑問,請在下方發表評論。