<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ![](https://img.kancloud.cn/12/3a/123a33704c87a7ad068ff249237e0207_1057x461.png) <br/> **1. split 階段** 首先 mapreduce 會根據要運行的大文件來進行 split,每個輸入分片(input split)針對一個 map 任務,<ins>輸入分片(InputSplit)存儲的并非數據本身</ins>,而是一個分片長度和一個記錄數據位置的數組。輸入分片(InputSplit)通常和 HDFS 的 block(塊)關系很密切,假如我們設定 HDFS 的塊的大小是 128MB,我們運行的大文件是128x10MB,MapReduce 會分為 10 個 MapTask,每個 MapTask 都盡可能運行在block(塊)所在的 DataNode 上,體現了<ins>移動計算不移動數據的思想</ins>。 <br/> **2. map 階段** map 階段就是執行自己編寫的 Mapper 類中的 map 函數,Map 過程開始處理,MapTask 會接受輸入分片,通過不斷的調用 map()方法對數據進行處理。處理完畢后,轉換為新的`<KEY,VALUE>`鍵值對輸出。 <br/> **3. Shuffle 階段** shuffle 階段主要負責將 map 端生成的數據傳遞給 reduce 端,因此 shuffle 分為在 map 端的過程和在 reduce 端的執行過程。具體過程如下: (1)MapTask 收集 map()方法的輸出<KEY,VALUE>對,放到<ins>內存緩沖區(稱為環形緩沖區)</ins>中,其中環形緩沖區的大小默認是 100MB。 (2)環形緩沖區到達一定閾值(環形緩沖區大小的 80%)時,<ins>會將緩沖區中的數據溢出本地磁盤文件</ins>,這個過程中可能會溢出多個文件。 (3)多個溢出文件會被合并成大的溢出文件。 (4)在溢出過程及合并的過程中,都要調用 Partitioner 進行分區和針對 key進行排序 sort。 (5)合并成大文件后,Map 端 shuffle 的過程也就結束了,后面進入 reduce端 shuffle 的過程。 (6)在 Reduce 端,shuffle 主要分為復制 Map 輸出(copy)、排序合并(Merge Sort)兩個階段。 <br/> Reduce 任務通過 HTTP 向各個 Map 任務拖取它所需要的數據。 Copy 過來的數據會先放入內存緩沖區中,如果內存緩沖區中能放得下這次數據的話就直接把數據寫到內存中,即內存到內存 merge。Reduce 要向每個 Map去拖取數據,在內存中每個 Map 對應一塊數據,當內存緩存區中存儲的 Map 數據占用空間達到一定程度的時候,開始啟動內存中 merge,把內存中的數據 merge輸出到磁盤上一個文件中,即內存到磁盤 merge。<br/> 當屬于該 reducer 的 map 輸出全部拷貝完成,則會在 reducer 上生成多個文件(如果拖取的所有 map 數據總量都沒有超出內存緩沖區,則數據就只存在于內存中),這時開始執行合并操作,即磁盤到磁盤 merge。 <br/> **4. Reduce 階段** Reduce 從合并的文件中取出一個一個的鍵值對 group,調用用戶自定義的`reduce()`方法,生成最終的輸出文件。 <br/> **注意:** Shuffle中的緩沖區大小會影響到MapReduce程序的執行效率,原則上說,緩沖區越大,磁盤io的次數越少,執行速度就越快。 緩沖區的大小可以通過參數調整,參數:`io.sort.mb` 默認 100M。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看