MapReduce的初次嘗試

来源:http://www.cnblogs.com/quchunhui/archive/2016/04/22/5421727.html
-Advertisement-
Play Games

前提: 搭建好集群環境(zookeeper、hadoop、hbase)。 搭建方法這裡就不進行介紹了,網上有很多博客在介紹這些。 簡單需求: WordCount單詞計數,號稱Hadoop的HelloWorld。所以,我打算通過這個來初體驗一下Hadoop。需求如下: ①、計算文件中出現每個單詞的頻數 ...


====前提:

搭建好集群環境(zookeeper、hadoop、hbase)。

搭建方法這裡就不進行介紹了,網上有很多博客在介紹這些。

  

====簡單需求:

WordCount單詞計數,號稱Hadoop的HelloWorld。所以,我打算通過這個來初體驗一下Hadoop。需求如下:

①、計算文件中出現每個單詞的頻數

②、輸入結果按照字母順序進行排序

 

====Map過程:

首先將文件進行切分成單詞。將所有單詞的項目都聚到一起。生成key-value的中間結果。

 

====Reduce過程

拿到之前Map的中間結果,進行合併(歸約)。

 

====源代碼

源代碼來自慕課網,由於我自己學習需要,放到了我的Github空間上了。

https://github.com/quchunhui/WordCount

 

====上傳Jar包

首先需要確認Linux集群運轉是否正常。使用jps命令查看。確保hadoop相關進程的存在。

需要註意一點,不同版本的Hadoop的jps結果可能不一樣。我在看慕課網的視頻的時候,

發現人家裡面還有TaskTracker和JobTracker呢,但是新版本的Hadoop就已經沒有。

並不是集群環境的問題。具體什麼是正確的,可以去查看官網的幫助文檔。

 

①、在Master端的jps結果

 

②、在Slave端的jps結果

 

然後,將寫完的代碼達成jar包。由於我使用的是Mave環境,所以在Maven環境下使用mvn package進行打包即可。

 

====上傳文件至hdfs文件目錄

①、將上述步驟中生成的jar包上傳到Linux伺服器上。

我在HDOOP_HOME的根目錄下創建了一個專門用於存放jar包的文件夾package。將生成的jar包上傳到這裡

/home/qch/software/hadoop-2.7.1/package

②、使用hadoop fs -put命令將數據源文件到hdfs文件目錄

註意,這裡是hdfs文件目錄,並非是Linux系統上的某個文件夾。如果目錄不存在,需要通過hadoop fs -mkdir命令自己手動去逐層創建。

我這裡將上述3個文件上傳到了hdfs文件目錄[/user/root/wc_input]上了。

 

====程式運行

①、通過【hadoop jar <jar> [mainClass] args…】命令來運行程式。

命令:hadoop jar ../package/WordCount-1.0-SNAPSHOT.jar test.WordCount wc_input/file wc_output

 

②、運行成功之後,可以通過命令來查看hdfs上的生成結果是否正確。

 

====總結:

我犯的最小白的錯誤就是,不知道需要將文件上傳到hdfs文件目錄下麵。希望以後加深對hdfs的瞭解。

這也就是我今天(2016/4/22。)的第一個mapreduce成果。

下一步需要真正去進行我的MapReduce工作了,需要考慮按照什麼規則進行Map和Reduce。這才是重中之重。 

 

--END--

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、場景 1.1 最新三次的提交 分別是:定義了一個變數k = 10 、 定義了一個變數 j = 6 、 定義了一個變數 i = 5 ; 本地倉庫 和 遠程倉庫保持一致 1.2 我添加了一行代碼 如何回退版本到最近的一次,也就是 定義一個變數 k = 10 這個版本 ? 回退的結果 已經回到我們想要 ...
  • 我們在Service(Ⅰ)中瞭解了Service最基本的知識點,今天我們繼續學習Service這個組件(神器)。 先來說一下Service的生命周期:跟Activity相比,Service的生命周期就太簡單了:onCreate()->onStart()->onDestroy() 【主題】:Activ ...
  • 在程式開始以#開頭的命令,他們是預編譯命令。有三類預編譯命令:巨集定義命令、文件包含命令、條件編譯命令;今天聊聊巨集定義: 巨集定義命令將一個標識符定義為一個字元串,源程式中的該標識符均以指定的字元串來代替。因此預處理命令後通常不加分號。這並不是說所有的預處理命令後都不能有分號出現。由於巨集定義只是用巨集名對 ...
  • HTTP原理 1. 什麼是URL 在介紹HTTP之前,我們對URL有一定的瞭解的,因為只有通過URL我們才能拿到網路上的資源。那麼究竟什麼是URL? URL(Uniform Resource Locator 統一資源定位符):URL其實就是資源在互聯網上的地址、位置,互聯網上的每一個資源都有一個唯一 ...
  • <TextView android:id="@+id/desc" android:layout_width="match_parent" android:layout_height="130px" android:lineSpacingExtra="2px" android:textColor="@ ...
  • 1、表的修改: 1.1 刪除列:ALTER TABLE 表名 DROP COLUMN 列名 1.2 添加列:ALTER TABLE 表名 ADD(列名 數據類型) 1.3 修改列名:ALTER TABLE 表名 RENAME COLUMN 舊列名 TO 新列名 1.4 修改列的數據類型:ALTER ...
  • oracle_11g有32位和64位兩個版本,64位的電腦可以裝32位的版本,但是32位的電腦不可以裝64位,如果你是64位的,建議你裝64位的版本。 安裝包下載 32位 http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2 ...
  • 1.慢SQL消耗了70%~90%的資料庫CPU資源; 2.SQL語句獨立於程式設計邏輯,相對於對程式源代碼的優化,對SQL語句的優化在時間成本和風險上的代價都很低; 3.SQL語句可以有不同的寫法; 下麵是我總結的一些SQL常見的優化方法,每個案例都簡單易懂,在開發過程中可以作為參考: 不使用子查詢 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...