win7平臺上使用eclipse(luna)將mapred任務上傳到叢集上執行
win7平臺上使用eclipse(luna)將mapred任務上傳到叢集上執行
本地環境:
- jdk版本 1.7.0_51
- hadoop版本:2.4.1和2.7.2
- hadoop eclipse外掛:hadoop-eclipse-plugin-2.4.1.jar
hadoop叢集環境:
- jdk版本 1.7.0_79
- hadoop版本:2.7.2
- 一臺master,兩臺slaver,使用YARN做資源管理器
步驟:
配置windows上的hadoop環境
官網上下載hadoop壓縮包hadoop-2.7.2.tar.gz 然後解壓。在windows上使用hadoop需要下面一些檔案:hadoop.dll、hadoop.exp、hadoop.lib、hadoop.pdb、libwinutils.lib、winutils.exe、winutils.pdb。這些檔案網上有說是怎麼生成的,我是直接在網上搜現成的。貌似不同版本的這些檔案好像差別不是很大。然後還需要將hadoop.dll放在system32資料夾下。具體原理也不是很清楚。配置eclipse上的hadoop環境
這一步主要是使用hadoop-eclipse-plugin-2.4.1.jar這個外掛。這個外掛網上也有生成的方法,使用https://github.com/winghc/hadoop2x-eclipse-plugin 提供的方法,使用ant編譯,ant jar -Dversion=2.7.2 -Dhadoop.version=2.7.2 -Declipse.home=/opt/eclipse -Dhadoop.home=/usr/local/hadoop
最後卡在那一晚上都沒成功,最後還是放棄了,在網上下載了一個2.4.1版本的。然後就是一般的配置方法了,重啟eclipse,配置hadoop路徑,這個地方是可以切換版本的,我的2.4.1和2.7.2切換沒有問題,然後就是編輯mapreduce配置。- 配置mapred專案
將叢集上的core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml四個配置檔案放在專案中,注意一定要複製到src資料夾中,否則是不會起作用的。當然如果要看日誌,也需要新建一個log4j.properties檔案,檔案內容網上隨便搜。
在mapred-site.xml檔案中新增如下配置:
<property>
<name>mapred.remote.os</name>
<value>Linux</value>
<description>Remote MapReduce framework's OS, can be either Linux or Windows</description>
</property>
<property>
<name>mapreduce.app-submission.cross-platform</name>
<value>true</value>
</property>
然後點run on hadoop,就能夠執行了。
問題
- 叢集中的mapred-site.xml檔案中一定要配置mapreduce.framework.name為yarn,否則總是在本地執行,而不能在叢集中執行。
- 如果報你的mapred程式的類不存在錯誤,那麼恭喜你,前面都設定成功了,接下來只要把你專案匯出jar包,然後上傳到叢集中的hadoop安裝目錄share/hadoop/mapred/lib下就可以了。當然叢集中每臺機器都需要這樣上傳的。本來以為eclipse提交任務,這些jar包可以自動傳到叢集上,但是細想一下,萬一jar包很大呢,而且應該是需要手動傳上去的。
- 如果不設定上節3中的 mapred.remote.os和mapreduce.app-submission.cross-platform,那麼就會報:org.apache.hadoop.util.Shell.runCommand(Shell.java:545),並且提示返回值是0這樣的錯誤。具體原理也不是很清楚。
- 之前一直報錯,在mapred web頁面發現提交的使用者是hadoop而我又沒有新建hadoop使用者,新建了hadoop使用者之後還是一樣的錯誤,說明不是hadoop使用者的問題,使用hadoop叢集執行任務好像和使用者沒有關係。
弄了好久的使用eclipse直接執行叢集上的mapred任務終於成功了,雖然瞭解一些hadoop的原理,但是發現是遠遠不夠的,以後有時間,需要好好看看hadoop的原始碼。下載的hadoop包中也包括了各個jar包的原始碼。可以好好研究研究!
相關文章
- 如何使用WorkManager執行後臺任務(上)
- IDEA上執行Flink任務Idea
- ubuntu上使用cron執行定時任務計劃Ubuntu
- Eclipse上傳專案到GitEclipseGit
- Spark叢集和任務執行Spark
- 在多節點的叢集上執行Cassandra
- 使用SecureCRT的SFTP將檔案上傳到Liunx系統上SecurecrtFTP
- 《如何將windows上的軟體包或檔案上傳到linux服務上》WindowsLinux
- 把本地專案上傳到github 不使用eclipseGithubEclipse
- 上傳執行sql檔案到linuxSQLLinux
- 使用git將本地專案上傳到githubGithub
- Spark程式碼在叢集上執行過程理解Spark
- 如何將自己的本地專案上傳到github上?Github
- Retrofit+RxJava上傳圖片上傳圖片到後臺RxJava
- W5500上傳溫溼度到oneNET平臺
- 本地開發spark程式碼上傳spark叢集服務並執行(基於spark官網文件)Spark
- Linux平臺上搭建apache+tomcat負載均衡叢集LinuxApacheTomcat負載
- 如何在SAP雲平臺上使用MongoDB服務MongoDB
- 玩轉Redis叢集(上)Redis
- 使用screen後臺執行任務
- 利用SSIS在SQL Azure中執行計劃任務(上)DJSQL
- 晉南鋼鐵集團人工智慧廢鋼定級平臺上線執行人工智慧
- 使用 Terraform 在 AWS 上快速部署 MQTT 叢集ORMMQQT
- Docker中提交任務到Spark叢集DockerSpark
- 在 CentOS 7 / RHEL 7 上怎樣安裝 Eclipse Luna IDECentOSEclipseIDE
- ClusterShell:一個在叢集節點上並行執行命令的好工具並行
- Kubernetes 叢集搭建(上)
- 附加題:將四則運算原始碼上傳到Github賬戶上原始碼Github
- SQL Server平臺上資料倉儲管理員的關鍵任務SQLServer
- HarmonyOS 後臺任務管理開發指南上線!
- Spark 叢集執行任務失敗的故障處理Spark
- 簡單兩步就能將 Laravel Log 資訊發到其他平臺上Laravel
- 使用 NodeJS 將檔案或影像上傳到伺服器NodeJS伺服器
- 如何將 SAP 電商雲 Spartacus UI 部署到 tomcat 上執行UITomcat
- 串列埠PLC透過資料採集閘道器上傳到物聯網雲平臺進行監控串列埠
- 使用git上傳程式碼到碼雲Git
- 將 nuxt 打包檔案上傳到騰訊雲 cosUX
- 如何將docker 映象上傳到docker hub倉庫Docker