hadoop(二MapReduce)

来源:https://www.cnblogs.com/leccoo/archive/2019/08/12/11337386.html
-Advertisement-
Play Games

hadoop(二MapReduce) 介紹 MapReduce:其實就是把數據分開處理後再將數據合在一起. Map負責“分”,即把複雜的任務分解為若幹個“簡單的任務”來並行處理。可以進行拆分的前提是這些小任務可以並行計算,彼此間幾乎沒有依賴關係。Reduce負責“合”,即對map階段的結果進行全局匯 ...


hadoop(二MapReduce)


介紹

MapReduce:其實就是把數據分開處理後再將數據合在一起.

  • Map負責“分”,即把複雜的任務分解為若幹個“簡單的任務”來並行處理。可以進行拆分的前提是這些小任務可以並行計算,彼此間幾乎沒有依賴關係。
  • Reduce負責“合”,即對map階段的結果進行全局彙總。
  • MapReduce運行在yarn集群

1565535533568

MapReduce中定義瞭如下的MapReduce兩個抽象的編程介面,由用戶去編程實現.Map和Reduce,

MapReduce處理的數據類型是鍵值對

1565535661117

1565535712603

1565535722812


代碼處理

MapReduce 的開發一共有八個步驟, 其中 Map 階段分為 2 個步驟,Shuwle 階段 4 個步 
驟,Reduce 階段分為 2 個步驟

​ Map 階段 2 個步驟

  1. 設置 InputFormat 類, 將數據切分為 Key-Value(K1和V1) 對, 輸入到第二步
  2. 自定義 Map 邏輯, 將第一步的結果轉換成另外的 Key-Value(K2和V2) 對, 輸出結果 
    Shuwle 階段 4 個步驟
  3. 對輸出的 Key-Value 對進行分區
  4. 對不同分區的數據按照相同的 Key 排序
  5. (可選) 對分組過的數據初步規約, 降低數據的網路拷貝
  6. 對數據進行分組, 相同 Key 的 Value 放入一個集合中 
    Reduce 階段 2 個步驟
  7. 對多個 Map 任務的結果進行排序以及合併, 編寫 Reduce 函數實現自己的邏輯, 對輸入的 
    Key-Value 進行處理, 轉為新的 Key-Value(K3和V3)輸出
  8. 設置 OutputFormat 處理並保存 Reduce 輸出的 Key-Value 數據

常用Maven依賴

  1. <packaging>jar</packaging>
  2. <dependencies>
  3. <dependency>
  4. <groupId>org.apache.hadoop</groupId>
  5. <artifactId>hadoop-common</artifactId>
  6. <version>2.7.5</version>
  7. </dependency>
  8. <dependency>
  9. <groupId>org.apache.hadoop</groupId>
  10. <artifactId>hadoop-client</artifactId>
  11. <version>2.7.5</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.apache.hadoop</groupId>
  15. <artifactId>hadoop-hdfs</artifactId>
  16. <version>2.7.5</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.apache.hadoop</groupId>
  20. <artifactId>hadoop-mapreduce-client-core</artifactId>
  21. <version>2.7.5</version>
  22. </dependency>
  23. <dependency>
  24. <groupId>junit</groupId>
  25. <artifactId>junit</artifactId>
  26. <version>RELEASE</version>
  27. </dependency>
  28. </dependencies>
  29. <build>
  30. <plugins>
  31. <plugin>
  32. <groupId>org.apache.maven.plugins</groupId>
  33. <artifactId>maven-compiler-plugin</artifactId>
  34. <version>3.1</version>
  35. <configuration>
  36. <source>1.8</source>
  37. <target>1.8</target>
  38. <encoding>UTF-8</encoding>
  39. <!-- <verbal>true</verbal>-->
  40. </configuration>
  41. </plugin>
  42. <plugin>
  43. <groupId>org.apache.maven.plugins</groupId>
  44. <artifactId>maven-shade-plugin</artifactId>
  45. <version>2.4.3</version>
  46. <executions>
  47. <execution>
  48. <phase>package</phase>
  49. <goals>
  50. <goal>shade</goal>
  51. </goals>
  52. <configuration>
  53. <minimizeJar>true</minimizeJar>
  54. </configuration>
  55. </execution>
  56. </executions>
  57. </plugin>
  58. </plugins>
  59. </build>

入門---統計

結構

1565536157181

  1. /*
  2. 四個泛型解釋:
  3. KEYIN :K1的類型
  4. VALUEIN: V1的類型
  5. KEYOUT: K2的類型
  6. VALUEOUT: V2的類型
  7. */
  8. public class WordCountMapper extends Mapper<LongWritable,Text, Text , LongWritable> {
  9. //map方法就是將K1和V1 轉為 K2和V2
  10. /*
  11. 參數:
  12. key : K1 行偏移量(預設幾乎一直固定為LongWritable)
  13. value : V1 每一行的文本數據
  14. context :表示上下文對象
  15. */
  16. /*
  17. 如何將K1和V1 轉為 K2和V2
  18. K1 V1
  19. 0 hello,world,hadoop
  20. 15 hdfs,hive,hello
  21. ---------------------------
  22. K2 V2
  23. hello 1
  24. world 1
  25. hdfs 1
  26. hadoop 1
  27. hello 1
  28. */
  29. @Override
  30. protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
  31. Text text = new Text();
  32. LongWritable longWritable = new LongWritable();
  33. //1:將一行的文本數據進行拆分
  34. String[] split = value.toString().split(",");
  35. //2:遍曆數組,組裝 K2 和 V2
  36. for (String word : split) {
  37. //3:將K2和V2寫入上下文
  38. text.set(word);
  39. longWritable.set(1);
  40. context.write(text, longWritable);
  41. }
  42. }
  43. }

1565536309305


  1. /*
  2. 四個泛型解釋:
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.目錄配置 相關目錄說明 /bin 二進位文件 /boot 系統啟動文件(內核的初始化文件等) /dev 設備文件(硬碟等) /etc 配置文件 /home 用戶家目錄 /lib 鏈接庫文件(相當於windows里的.dll文件) /lost+found 預設文件夾 /media 掛載點(插入優盤 ...
  • 一. 檔案許可權與目錄配置用戶的屬性信息: /etc/passwd用戶的密碼信息: /etc/shadow組的信息: /etc/group 每個用戶都有唯一的UID供系統識別sudo -i 輸入密碼切換到root su - 用戶名 切換用戶 exit 退回到用戶 1. 文件屬性文件類型 許可權 硬鏈接 ...
  • 百度文庫地址:https://wenku.baidu.com/view/7c1cd211a216147917112820.html 註意:一定要把此文檔中的vmwaretools 版本號換成你自己下載的,親測有效; 比如我的是 VMwareTools-9.9.0-2304977.tar.gz VMw ...
  • 一、什麼是Linux發行版 就Linux的本質來說,它只是操作系統的核心,負責控制硬體、管理文件系統、程式進程等,並不給用戶提供各種工具和應用軟體。所謂工欲善其事,被必先利其器,一套在優秀的操作系統核心,若沒有強大的應用軟體可以使用,如C/C++編譯器、C/C++庫、系統管理工具、網路工具、辦公軟體 ...
  • 問題描述:使用軟電話外呼的時候出現Request Timeout . 埠監聽之後通過 Wireshark發現錯誤:`Frame Check Sequence: Bad checksum`,查看wireshark 的preference 配置,checksum disable. 定位問題為電腦網路 ...
  • 運維網路基礎 1. 什麼是網路? 兩台主機怎麼進行互相通信 如何實現多台主機進行通信 如何讓多個區域網進行通信 網路拓撲 網路類型 OSI模型 DOD模型TCP 數據的封裝和解封裝 封裝 解封 應用層協議介紹 DHCP原理 DNS解析過程 主機到主機層 控制欄位 TCP三次握手 TCP四次揮手 ...
  • 1. MIPI CSI2簡介 MIPI聯盟是一個開放的會員制組織。2003年7月,由美國德州儀器(TI)、意法半導體(ST)、英國ARM和芬蘭諾基亞(Nokia)4家公司共同成立。MIPI聯盟旨在推進移動應用處理器介面的標準化 。MIPI聯盟下麵有不同的WorkGroup,分別定義了一系列的手機內部 ...
  • 本文主要講解通過curl 實現表單提交登錄。單獨的表單提交與表單登錄都差不多,因此就不單獨說了。 說明:針對curl表單提交實現登錄,不是所有網站都適用,原因是有些網站後臺做了限制或有其他校驗。我們不知道這些網站後臺的限制或校驗機制具體是什麼,因此直接curl表單登錄可能是不行的。 當然,如下案例是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...