hadoop程序运行
hadoop命令的使用:
Usage: hadoop [--config confdir] COMMAND
這里COMMAND為下列其中一個:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <span style="font-size:16px;">namenode -format??????? 格式化DFS文件系統(tǒng)? secondarynamenode?????? 運行DFS的第二個namenode? namenode??????????????????? 運行DFS的namenode? datanode??????????????????? 運行一個DFS的datanode? dfsadmin??????????? 運行一個DFS的admin 客戶端? fsck??????????????? 運行一個DFS文件系統(tǒng)的檢查工具? fs????????????????? 運行一個普通的文件系統(tǒng)用戶客戶端? balancer??????????? 運行一個集群負載均衡工具? jobtracker????????? 運行MapReduce的jobTracker節(jié)點? pipes?????????????? 運行一個Pipes作業(yè)? tasktracker???? 運行一個MapReduce的taskTracker節(jié)點? job???????????????? 處理MapReduce作業(yè)? version???????? 打印版本? jar <jar>?????? 運行一個jar文件? distcp <srcurl> <desturl>?? 遞歸地復(fù)制文件或者目錄? (采用分布式復(fù)制方法,一般用于兩個HDFS集群中) archive -archiveName NAME <src>* <dest> 生成一個Hadoop檔案?????? (將har當作一個新的文件系統(tǒng),《權(quán)威指南3.8節(jié)》) daemonlog?????????????? 獲取或設(shè)置每個daemon的log級別? 或CLASSNAME????????????? 運行名為CLASSNAME的類大多數(shù)命令會在使用w/o參數(shù)? ????????????????????????時打出幫助信息。</span> |
- hadoop程序的編譯:(我是用的hadoop版本為hadoop-0.20.203.0)
1.注意的是要將hadoop的core包加入到classpath中,命令如下:
javac -classpath ~/hadoop-0.20.203.0/hadoop-core-0.20.203.0.jar? FileSystemDoubleCat.java
(這里還有一個疑問:我用通配符添加jar包時一直失敗(使用 *.jar),提示找不到類??????)
- 運行hadoop程序的方法如下:
1.直接使用hadoop CLASSNAME 【args】 運行,
??? ( 注意此時需設(shè)置環(huán)境變量 HADOOP_CLASSPATH中包含當前類。其中當前目錄中應(yīng)該包含.class文件,這個可以通過在eclipse中的bin文件下取得,或用上面的方法進行編譯)
如:hadoop FileSystemDoubleCat hdfs://localhost:9000/user/kqiao/uploadFile
2.將程序打包成jar包,然后使用hadoop jar命令運行。
???? 這只相當于將上面中的.class文件打包,然后運行該jar文件。(注意,如果以集群模式下運行hadoop,則只能使用這種方法,因為需要在各網(wǎng)絡(luò)節(jié)點上分發(fā)jar包)并且主程序中要有:
job.setJarByClass(MaxTemperature.class)這句,用于設(shè)定jar類
命令如下:jar -cvf FileSystemDoubleCat.jar FileSystemDoubleCat.class?
??????????????????? hadoop jar FileSystemDoubleCat.jar FileSystemDoubleCat hdfs://localhost:9000/user/kqiao/uploadFile
3.安裝eclipse的hadoop插件,直接在eclipse中編輯程序,然后運行
???? 這應(yīng)該算是最簡單的運行方法了吧。。。。
?? 在run configuration下完成配置,然后 run on hadoop即可。
-----------------------------------------------------------------------------------------------------------------------------------
? 以后記錄我在運行中遇到的問題~
(1)-D mapred.reduce.tasks=2?? 或? job.setNumReduceTasks(2) 設(shè)置reducer的數(shù)量??
??? (換了一個hadoop版本,不知道為什么,使用-D? 選項設(shè)置reducer數(shù)量失敗了,沒有報錯,但是reducer保持為1,只能使用job.set來設(shè)置?未解決。。)
? (2)如果已經(jīng)確定有某類的存在,卻一直提示找不到該類,一般是因為class_path的設(shè)置問題。
? (3)如果自定義的mapper類是主類的內(nèi)部類時,一定記得將其定義為static。
? (4)hadoop程序,如果有運行錯誤,主要通過查看job或task的日志解決:看看拋出了什么樣的異常,在哪個階段,哪個任務(wù)拋出了異常。
?? 如果是運行結(jié)果與預(yù)期不符,則通過查看計數(shù)器判斷那部分出錯,另一方面可以在程序中加入輸出語句,System.out.println("****");然后在web頁面中的job下查看各個job的task日志,看看 stdout log, stderr log進行分析排序。
總結(jié)
以上是生活随笔為你收集整理的hadoop程序运行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse安装hadoop插件及配置
- 下一篇: ACM计算几何题目推荐