天天看點

阿裡雲大資料ACP認證知識點梳理7——MAP REDUCE

阿裡雲大資料ACP認證知識點梳理7——MAP REDUCE

1、輸入資料:對文本進行分片,将每片内的資料作為單個Map Worker的輸入。

2、Map階段:Map處理輸入,每擷取一個數字,将數字的Count 設定為1,并将此對輸出,此時以Word作為輸出資料的Key。

3、Shuffle>合并排序:在Shuffle階段前期,首先對每個Map Worker的輸出,按照Key值(即Word值)進行排序。排序後進行Combiner操作,即将Key值(Word值)相同的Count累加,構成一個新的對。此過程被稱為合并排序。

4、Shuffle>配置設定Reduce:在Shuffle階段後期,資料被發送到Reduce端。Reduce Worker收到資料後依賴Key值再次對資料排序。

5、Reduce階段:每個Reduce Worker對資料進行處理時,采用與Combiner相同的邏輯,将Key值(Word 值)相同的Count累加,得到輸出結果。

6、輸出結果資料。

**MAPREDUCE規則限制:

**

MaxCompute提供三個版本的MapReduce程式設計接口,如下所示:

MaxCompute MapReduce、MaxCompute的原生接口,執行速度更快,開發更便捷,不暴露檔案系統。

MR2(擴充MapReduce):對MaxCompute MapReduce的擴充,支援更複雜的作業排程邏輯。MapReduce的實作方式與MaxCompute原生接口一緻。

Hadoop相容版本:高度相容Hadoop MapReduce ,與MaxCompute原生MapReduce,MR2不相容。

不能通過MapReduce讀寫外部表中的資料。

MaxCompute MapReduce的輸入、輸出,支援MaxCompute内置類型的Bigint、Double、String、Datetime和Boolean類型,不支援您自定義類型。

接受多表輸入,且輸入表的Schema可以不同。在map函數中,您可以擷取目前Record對應的Table資訊。

輸入可以為空,不支援視圖(View)作為輸入。

Reduce接受多路輸出,可以輸出到不同表,或者同一張表的不同分區。不同輸出的Schema可以不同。不同輸出間通過label進行區分,預設輸出不必加label,但目前不接受沒有輸出的情況。

**JAVA沙箱:

MaxCompute MapReduce及UDF程式在分布式環境中運作時,受到Java沙箱的限制(MapReduce作業的主程式,例如MR Main則不受此限制),具體限制如下所示。

不允許直接通路本地檔案,隻能通過MaxCompute MapReduce/Graph提供的接口間接通路。

讀取resources選項指定的資源,包括檔案、Jar包和資源表等。

通過System.out和System.err輸出日志資訊,可以通過MaxCompute用戶端的Log指令檢視日志資訊。

不允許直接通路分布式檔案系統,隻能通過MaxCompute MapReduce/Graph通路到表的記錄。

不允許JNI調用限制。

不允許建立Java線程,不允許啟動子程序執行Linux指令。

不允許通路網絡,包括擷取本地IP位址等,都會被禁止。

Java反射限制:suppressAccessChecks權限被禁止,無法setAccessible某個private的屬性或方法,以達到讀取private屬性或調用private方法的目的。