寫過程式分布式**的人都知道,分布式的程式是比較難以除錯的,但是也不是不可以除錯,對於hadoop分布式集群來說,在其上面執行的是mapreduce程式,因此,有時候寫好了mapreduce程式之後,執行結果發現跟自己想要的結果不一樣,但是有沒有報錯,此時就很難發現問題,查詢問題的方法之一就是對程式進行除錯,跟蹤**的執行,找出問題的所在。那麼對於hadoop的mapreduce是如何進行除錯的呢?
毫無疑問當然是借助eclipse這個強大的工具。具體方式如下:
說明:由於公司伺服器上部署的是cloudera cdh5.4.4,在網上找了很多資料,沒有發現cdh5.4.4相關的eclipse外掛程式,這可難倒我了。網上搜尋很多人有跟我一樣的困境。但是在apache hadoop版本下就是不存在這樣的問題,對於這個問題,我暫時的解決方案是在本地搭建乙個偽分布式的apache hadoop的集群。這個偽分布式集群就是用來給我的除錯程式使用。當我們當程式除錯好了,再直接匯入到cdh版本的工程中即可。
3、通過步驟2,我們已經可以建立mapreduce程式了,下面實戰一下。
(1)開啟eclipse整合開發環境的工具
(2)安裝步驟2方式,新增hadoop的安裝目錄。並新增mapreduce的tools。
(4)此時eclipse中會出現dfs location這樣乙個標識,這個表示的是hdfs,他能載入你偽分布式集群上的hdfs的所有目錄,你在這個上面操作就相當於在hdfs上面操作,前提是你擁有相應的許可權。如下圖所示:(你可以在這個上面很方便的刪除測試檔案)
(5)編寫map/reduce程式。在這裡我們就用wordcount這個例子來除錯一下。
編寫好了wordcount後,單擊除錯,進入除錯介面。如下圖所示:
(6)當你一直採用上面的方式除錯後,中間會讓你選擇新增原始檔的目錄,你新增一下就好了,然後姐可以進入我們的map類中。如下圖所示:
此時,你就可以觀察和跟蹤在map類中的map方法的執行是否正確。找出問題的根源。
(7)同樣,當你在map中執行完後,接著就會進入reduce類中,這中間會敬禮乙個shuffle過程。這個過程是理解mapreduce的關鍵所在,請參考:
當你進入reduce類後,你可以看到如下圖所示:
此時,你可以跟蹤你的**是否是按照你的演算法思路進行。查詢問題的根源。
Visual Studio中關於除錯的小技巧
1 debug.stepout shift f11 在除錯的時候,執行該斷點所在函式中剩餘的部分,然後跳出到上一層。2 在乙個for迴圈中,如果我們想指定的觀察迴圈變數i為某個特定的值的情況,比如說50,一般我們需要這樣,用if語句把這種情況寫出來,並且在i 50的地方設定乙個斷點,然後等待程式執行...
php xdebug安裝配置與除錯php技巧
xdebug是乙個php 執行高度工具,它可以很好的測試我們的php 各個階段的效能,這樣我們可以及時的進行數 優化了,下面我來給大家從配置xdebug與xdebug除錯技巧。windows xdebug配置安裝 3.配置xdebug xdebug的配置專案很多,我只了解很少的一部分,所以只說說常用...
iOS除錯奇巧淫技 二 之LLDB
一篇我們介紹了ios除錯奇巧淫技 一 主要是幾種斷點的功能和執行時間測試,這次我們進一步學習乙個讓你用了之後愛不釋手的測試工具 lldb lldb是乙個開源的內置於xcode的除錯工具,可以安裝c 或者python外掛程式。與lldb相對應的是gdb,主要存在於基於unix平台的程式除錯工具。在開發...