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