hadoop0.20.0第一個例子

?

這是Hadoop學習全程記錄第2篇,在這篇里我將介紹一下如何在Eclipse下寫第一個MapReduce程序。?

新說明一下我的開發環境:?

操作系統:在windows下使用wubi安裝了ubuntu 10.10?
hadoop版本:hadoop-0.20.2.tar.gz?
Eclipse版本:eclipse-jee-helios-SR1-linux-gtk.tar.gz?

為了學習方便這個例子在“偽分布式模式”Hadoop安裝方式下開發。?

第一步,我們先啟動Hadoop守護進程。?
如果你讀過我第1篇文章Hadoop學習全程記錄——hadoop 入門應該比較清楚在“偽分布式模式”下啟動Hadoop守護進程的方法,在這里就不多說了。?

第二步,在Eclipse下安裝hadoop-plugin。?

1.復制 hadoop安裝目錄/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar 到 eclipse安裝目錄/plugins/ 下。?

2.重啟eclipse,配置hadoop installation directory。?
如果安裝插件成功,打開Window-->Preferens,你會發現Hadoop Map/Reduce選項,在這個選項里你需要配置Hadoop installation directory。配置完成后退出。?



3.配置Map/Reduce Locations。?
在Window-->Show View中打開Map/Reduce Locations。?
在Map/Reduce Locations中新建一個Hadoop Location。在這個View中,右鍵-->New Hadoop Location。在彈出的對話框中你需要配置Location name,如myubuntu,還有Map/Reduce Master和DFS Master。這里面的Host、Port分別為你在mapred-site.xml、core-site.xml中配置的地址及端口。如:?

Map/Reduce Master?

Java代碼??收藏代碼
  1. localhost??
  2. 9001??


DFS Master?
Java代碼??收藏代碼
  1. localhost??
  2. 9000??

?


配置完后退出。點擊DFS Locations-->myubuntu如果能顯示文件夾(2)說明配置正確,如果顯示"拒絕連接",請檢查你的配置。?
?


第三步,新建項目。?
File-->New-->Other-->Map/Reduce Project?
項目名可以隨便取,如hadoop-test。?
復制 hadoop安裝目錄/src/example/org/apache/hadoop/example/WordCount.java到剛才新建的項目下面。?

第四步,上傳模擬數據文件夾。?
為了運行程序,我們需要一個輸入的文件夾,和輸出的文件夾。輸出文件夾,在程序運行完成后會自動生成。我們需要給程序一個輸入文件夾。?

1.在當前目錄(如hadoop安裝目錄)下新建文件夾input,并在文件夾下新建兩個文件file01、file02,這兩個文件內容分別如下:?

file01?
Java代碼??收藏代碼
  1. Hello?World?Bye?World???


file02?
Java代碼??收藏代碼
  1. Hello?Hadoop?Goodbye?Hadoop??


2.將文件夾input上傳到分布式文件系統中。?

在已經啟動Hadoop守護進程終端中cd 到hadoop安裝目錄,運行下面命令:?
Java代碼??收藏代碼
  1. bin/hadoop?fs?-put?input?input01??

這個命令將input文件夾上傳到了hadoop文件系統了,在該系統下就多了一個input01文件夾,你可以使用下面命令查看:?
Java代碼??收藏代碼
  1. bin/hadoop?fs?-ls??


第五步,運行項目。?

1.在新建的項目hadoop-test,點擊WordCount.java,右鍵-->Run As-->Run Configurations?
2.在彈出的Run Configurations對話框中,點Java Application,右鍵-->New,這時會新建一個application名為WordCount?
3.配置運行參數,點Arguments,在Program arguments中輸入“你要傳給程序的輸入文件夾和你要求程序將計算結果保存的文件夾”,如:?
Java代碼??收藏代碼
  1. hdfs://localhost:9000/user/panhuizhi/input01?hdfs://localhost:9000/user/panhuizhi/output01??


這里面的input01就是你剛傳上去文件夾。文件夾地址你可以根據自己具體情況填寫。?

?

?

?

?

?

?




4.點擊Run,運行程序。?

點擊Run,運行程序,過段時間將運行完成,等運行結束后,可以在終端中用命令:?

Java代碼??收藏代碼
  1. bin/hadoop?fs?-ls??

查看是否生成文件夾output01。?

用下面命令查看生成的文件內容:?
Java代碼??收藏代碼
  1. bin/hadoop?fs?-cat?output01/*??


如果顯示如下,恭喜你一切順利,你已經成功在eclipse下運行第一個MapReduce程序了。?
Java代碼??收藏代碼
  1. Bye?1??
  2. Goodbye?1??
  3. Hadoop??2??
  4. Hello???2??
  5. World???2??

?

?

?

可能遇到的問題

  1、如果遇到這個錯誤:org.apache.hadoop.security.AccessControlException: Permission denied: user=administrator, access=EXECUTE, inode="job_201111031322_0003":heipark:supergroup:rwx-

  問題原因:本地用戶administrator(本機windows用戶)想要遠程操作hadoop系統,沒有權限引起的。

  解決辦法:

  a、如果是測試環境,可以取消hadoop hdfs的用戶權限檢查。打開conf/hdfs-site.xml,找到dfs.permissions屬性修改為false(默認為true)OK了。

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

  b、修改hadoop location參數,在advanced parameter選項卡中,找到hadoop.job.ugi項,將此項改為啟動hadoop的用戶名即可。

  注意第一次設置的時候可能沒有hadoop.job.ugi參數,報錯后在去看就有了。

  2、運行例子時出現:IOException: Cannot run program "chmod": CreateProcess error=2,

  問題原因:沒有安裝cygwin 或 沒有配置環境變量;
???????解決辦法:安裝并配置環境變量 bin到 path下 重啟 eclipse? ?問題解決;

  3、如果出現下面問題

  11/11/03 12:21:31 WARN mapred.LocalJobRunner: job_local_0001
???????????? java.lang.OutOfMemoryError: Java heap space
????????????? at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:781)
???????????? ?at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:350)
???????????? ?at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
????????????? at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
???????????? 11/11/03 12:21:31 INFO mapred.JobClient:? map 0% reduce 0%
???????????? 11/11/03 12:21:31 INFO mapred.JobClient: Job?complete: job_local_0001
???????????? 11/11/03 12:21:31 INFO mapred.JobClient: Counters: 0
???????????? Exception in thread "main" java.io.IOException: Job failed!
????????????? at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1252)
????????????? at mapred.WordCount.main(WordCount.java:110)

  問題原因:客戶端程序運行時java虛擬機內存分配不夠

  解決辦法:修改run configuration,選擇Arguments選項卡,在VM arguments欄中加入-Xmx1024m,保存即可解決問題。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387803.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387803.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387803.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IDEA 修改JavaWeb的訪問路徑

問題描述 對于我這個剛剛使用IDEA不久的新手來說&#xff0c;能夠正常運行就不錯了,不過到了后面&#xff0c;可能會覺得IDEA給你分配的默認訪問路徑很不順手&#xff0c;比如訪問的時候需要通過: http://localhost:8080/web_war_exploded/ 來訪問&#xff0c;對于web_w…

防撞庫基本要求

專用安全要求 口令要求 設計要求說明 要求 是否滿足 密碼長度至少 8位字符&#xff0c;密碼復雜性要求至少包含以下4種類別中的2種&#xff1a;大寫字母、小寫字母、數字、特殊符號 必選 滿足 系統應具備對口令強度檢測的能力&#xff0c;并對用戶進行提示&#xff08;盡量不要…

odoo10 繼承(擴展)、模塊數據

一&#xff1a;繼承 在不改變底層對象的時候添加新的功能——這是通過繼承機制來實現的&#xff0c;作為在現有對象之上的修改層&#xff0c;這些修改可以發生在所有級別&#xff1a;模型&#xff0c;視圖和業務邏輯。不是直接修改現有模塊&#xff0c;而是創建一個新模塊以添加…

做一個vue的todolist列表

<template><div id"app"><input type"text" v-model"todo" ref"ip"/><button click"add()">新增</button><br/><br/><hr/><ul><li v-for"(item,key) in li…

hadoop+hive-0.10.0完全分布式安裝方法

hadoophive-0.10.0完全分布式安裝方法 1、jdk版本&#xff1a;jdk-7u60-linux-x64.tar.gz http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html 2、hive版本&#xff1a;hive-0.10.0.tar.gz https://archive.apache.org/dist/hive/hive-0…

關于gitgithub的操作

先馬克&#xff0c;回頭細看&#xff0c;然后整理一下 https://linux.cn/article-4292-1.html轉載于:https://www.cnblogs.com/mengjie1001/p/10076530.html

一種解決 MacBook 里的 App Store 無法登錄的問題

剛剛買回來的 2018 款帶有 touchbar 的 MacBook Pro 15 inc 在用 App Store 安裝 app 時一直無法登錄成功&#xff08;網絡鏈接都是好的&#xff09;&#xff0c;導致軟件都無法更新&#xff0c;折騰了挺一會的。 后來發現是要退出設置里的 iCloud 登錄&#xff0c;然后重新登錄…

第二次沖刺

1、今日各個成員的問題 組員問題張晉誌對mui的API看得不是很懂&#xff0c;無法順利的使用袁慶杰基礎不牢,編寫困難周建峰eclipse沒法創建web項目&#xff0c;按照網上的方法&#xff0c;check for updates 和 install new software 之后也沒用許家燁給單一功能知道如何實現但項…

牌類游戲使用微服務重構筆記(八): 游戲網關服務器

網關服務器 所謂網關&#xff0c;其實就是維持玩家客戶端的連接&#xff0c;將玩家發的游戲請求轉發到具體后端服務的服務器&#xff0c;具有以下幾個功能點&#xff1a; 長期運行&#xff0c;必須具有較高的穩定性和性能對外開放&#xff0c;即客戶端需要知道網關的IP和端口&a…

配置獨立于系統的PYTHON環境

配置獨立于系統的PYTHON環境 python 當前用戶包 一種解決方案是在利用本機的python環境的基礎上&#xff0c;將python的包安裝在當前user的.local文件夾下 一共有兩種方式來實現pip的時候安裝到當前user 設置pip配置文件 pip.conf 一種是在~/.pip文件夾下的pip配置文件pip.conf…

好程序員技術教程分享JavaScript運動框架

好程序員技術教程分享JavaScript運動框架&#xff0c;有需要的朋友可以參考下。 JavaScript的運動&#xff0c;即讓某元素的某些屬性由一個值變到另一個值的過程。如讓div的width屬性由200px變到400px&#xff0c;opacity屬性由0.3變到1.0&#xff0c;就是一個運動過程。 實現運…

linux 下mysql等php的安裝 lnmp

訪問https://lnmp.org/install.html按照步驟安裝 當下載執行完 wget -c http://soft.vpser.net/lnmp/lnmp1.3.tar.gz && tar zxf lnmp1.3.tar.gz && cd lnmp1.3 && ./install.shlnmp 要到.install.sh下改一下下載地址&#xff0c;把http直接更換成…

單純形法

單純形法 如果目標函數中所有系數都非正&#xff0c;那么顯然這些變量直接取0是最優的&#xff0c;所以此時答案為即為常數項。 我們要做的就是通過轉化把目標函數的系數全部搞成非負。 思路就是用非基變量替換基變量。 先找到一個目標函數中系數為正的變量&#xff0c;在所有限…

洛谷P1828 香甜的黃油 Sweet Butter

香甜的黃油 Sweet Butter 黃油真的是這么做的嗎&#xff1f;&#xff01;&#xff01;&#xff01;[惶恐] 這道題是Dijkstra算法的簡單變形 通過題意我們要找到一個點使奶牛所在點的路程和最短。通過Dijkstra的模板我們可以求的一點到其他任一點的最短路徑&#xff0c;那么我們…

JAVA List集合轉Page(分頁對象)

/*** version 1.0* author: fwjia*/ import java.util.List;public class PageModel<T> {/**** 當前頁*/private int page 1;/**** 總頁數*/public int totalPages 0;/**** 每頁數據條數*/private int pageRecorders;/**** 總頁數*/private int totalRows 0;/**** 每頁…

分區分表實驗用的語句

--查看索引 select * from DBA_IND_PARTITIONS &#xff54;; select status,t.* from dba_indexes t where t.OWNERGANSUSC; select count(*) from ACT_HI_VARINST SELECT ALTER INDEX || TABLE_OWNER || . || INDEX_NAME || UNUSABLE; UNUSABLE_INDEX FROM ALL_INDEX…

分布式數據庫數據一致性的原理、與技術實現方案

http://youzhixueyuan.com/the-principle-and-technology-realization-of-distributed-data-consistency.html 背景 可用性&#xff08;Availability&#xff09;和一致性&#xff08;Consistency&#xff09;是分布式系統的基本問題&#xff0c;先有著名的CAP理論定義過分布式…

模塊之re模塊 —— 正則

#‘match’只匹配從左向右第一個值是否在中括號的范圍內&#xff0c;如果沒有就返回None 如果有就直接打印一個對象&#xff0c;加上.group()就可以返回你要找的區間里面的值&#xff0c;如果沒有找到對應的值&#xff0c;加上‘.group()’會報錯 #‘search’ 默認是從整個st…

centos7 docker

Docker 是一個開源工具&#xff0c;它可以讓創建和管理 Linux 容器變得簡單。容器就像是輕量級的虛擬機&#xff0c;并且可以以毫秒級的速度來啟動或停止。Docker 幫助系統管理員和程序員在容器中開發應用程序&#xff0c;并且可以擴展到成千上萬的節點。 容器和 VM&#xff08…

批處理ping指定ip列表

for /f in (filename) do (command) for /f %i in (C:\ip.txt) do (ping %i -n 1 && echo %i 通 >>IP.txt || echo %i 不通 >>IP1.txt) 有返回寫入ip.txt 沒有寫入ip1.txt轉載于:https://blog.51cto.com/2216859/2384188