参考博客
【MapReduce打包成jar上传到集群运行】http://t.csdn.cn/2gK1d
【Xshell7/Xftp7 解决强制更新问题】http://t.csdn.cn/rxiBG
IDEA打包MapReduce程序(方式一)【轻量级打包】
这里的打包是打包整个项目,后期等学会怎么打包单个指定的mapreduce程序再来更新博客。
1、编译打包
注意:
这个时候已经在 target 目录下打包好了一个jar包:
我们可以直接使用这个来执行 ,而且这个jar包非常的轻量级只有几十KB,但是如果你有一些依赖项是hadoop集群中没有的,那么在这一步结束后,你就接着用我下面的这种方式打包吧:
IDEA打包MapReduce程序(方式二)【连依赖一起打包】
必须在第一步的基础上进行,因为我们的代码总是要经过编译的,不然你修改不编译无效。
2、File -> Project Structure -> Artifacts
3、选择mapreduce程序的运行入口
4、点击 ok -> build -> build artifacts -> build
生成一个out目录 里面有我们打包好的jar包(默认名称就是我们的项目名.jar)
5、使用Xftp把jar包传到 linux。
两种打包方式集群下运行时的注意事项
1、第一种打包方式(直接package编译打包)
这种方式打包的是我们整个Maven项目的源代码(不包括依赖项),所以我们的集群中必须有相关的依赖,这种方式最轻量级。
在集群下运行的时候,必须指定运行的类的全限定名!
hadoop jar wc.jar com/lyh/mapreduce/wordcount2/WordCountRunner /wcinput /wcoutput
2、第二种方式(build artifacts)
这种不需要指定运行类的全限定名:
hadoop jar wc.jar /wcinput /wcoutput
但就是空间太大,一个wordcount几十MB呢。
XShell7 和 Xftp7 的过期解决办法
XShell.bat
@echo off color 3e title Xshell启动器 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit ::获取Xshell启动程序路径 ::set Xshell="D:\Program Files (x86)\NetSarang\Xshell 7\Xshell.exe" set Xshell= ::如果上边未设置Xshell变量值,那么会自动去查找当前已安装的Xshell路径 if not defined Xshell ( for /F "delims=" %%T in ('where Xshell') do set Xshell="%%T" ) ::如果上边两处都没有得到Xshell路径,那么就由用户手动输入 if not defined Xshell ( echo 请提供Xshell启动程序路径 set /P Xshell= ) if not defined Xshell ( echo 拜拜我不干了! exit ) ::在更改系统日期前,先获取系统当前日期 set cTime=%date:~0,4%-%date:~5,2%-%date:~8,2% ::修改系统日期,这里获取Xshell.exe的创建时间作为设置的系统日期 for /F "delims=" %%S in ('dir ^/TC %Xshell% ^| findstr "Xshell.exe"') do set Ftime=%%S set fctime=%Ftime:~0,4%-%Ftime:~5,2%-%Ftime:~8,2% date %fctime% echo 修改系统日期完成 ::启动Xshell程序 start "" %Xshell% echo 等待Xshell启动中 ::等待xshell启动完成 timeout /T 10 /NOBREAK ::ping 0.0.0.0 -n 5> nul echo Xshell启动完成 ::恢复系统日期 echo 恢复系统日期 date %cTime% ::ping 0.0.0.0 -n 5> null ::第二部分,为当前脚本创建.lnk快捷方式,放到用户桌面 ::把原有的lnk快捷方式删掉,注意有的是在public桌面,有的是在当前user桌面 if exist "%PUBLIC%\Desktop\Xshell 7.lnk" (del /f /q "%PUBLIC%\Desktop\Xshell 7.lnk") if exist "%USERPROFILE%\Desktop\Xshell 7.lnk" (del /f /q "%USERPROFILE%\Desktop\Xshell 7.lnk") ::由Xshell.bat创建的快捷方式,不存在才创建 set Desktop=%PUBLIC%\Desktop if exist %Desktop%\Xshell.lnk goto:EOF ::切换到Xshell.bat脚本所在目录 cd /d %~dp0 ::创建一个临时的vbs脚本, 写入以下内容. ::创建一个 wscript.shell 对象. echo set wshell = WScript.CreateObject("WScript.Shell") > create_shortcut.vbs ::在 vbs 脚本中声明快捷方式路径及名称,放到用户桌面 echo file_lnk = "%Desktop%\Xshell.lnk" >> create_shortcut.vbs ::创建一个 shortcut 对象. echo set shortcut = wshell.CreateShortcut(file_lnk) >> create_shortcut.vbs ::下面开始设置 shortcut 对象的属性. ::1. 将目标路径设置为当前批处理脚本 Xshell7.bat echo shortcut.TargetPath = "%cd%\Xshell7.bat" >> create_shortcut.vbs ::2. 为 Xshell.bat 设置参数(当然这里不需要) :: echo shortcut.Arguments = "A B C" >> create_shortcut.vbs ::3. 将 "Xshell.bat所在目录" 设置为起始目录 :: 注意这里双写百分号用来避免百分号被转义 (即双写百分号表示单个 "%"). echo shortcut.WorkingDirectory = "%%cd%%" >> create_shortcut.vbs ::4. 添加快捷方式描述 (可选). echo shortcut.Description = "Powerful TELNET/SSH terminal emulator" >> create_shortcut.vbs ::5. 添加快捷方式图标 (可选). echo shortcut.IconLocation = %Xshell% >> create_shortcut.vbs ::6. 保存 vbs 脚本. echo shortcut.Save >> create_shortcut.vbs ::执行vbs脚本. cscript create_shortcut.vbs ::删除临时的vbs脚本. del /f /q create_shortcut.vbs exit
Xftp7.bat
@echo off color 3e title Xftp启动器 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit ::获取Xftp启动程序路径 set Xftp="D:\Program Files (x86)\NetSarang\Xftp 7\Xftp.exe" ::set Xftp= ::如果上边未设置Xftp变量值,那么会自动去查找当前已安装的Xftp路径 if not defined Xftp ( for /F "delims=" %%T in ('where Xftp') do set Xftp="%%T" ) ::如果上边两处都没有得到Xftp路径,那么就由用户手动输入 if not defined Xftp ( echo 请提供Xftp启动程序路径 set /P Xftp= ) if not defined Xftp ( echo 拜拜我不干了! exit ) ::在更改系统日期前,先获取系统当前日期 set cTime=%date:~0,4%-%date:~5,2%-%date:~8,2% ::修改系统日期 for /F "delims=" %%S in ('dir ^/TC %Xftp% ^| findstr "Xftp.exe"') do set Ftime=%%S set fctime=%Ftime:~0,4%-%Ftime:~5,2%-%Ftime:~8,2% date %fctime% echo 修改系统日期完成 ::启动Xftp程序 start "" %Xftp% echo 等待Xftp启动中 ::等待Xftp启动完成 timeout /T 10 /NOBREAK ::ping 0.0.0.0 -n 5> nul echo Xftp启动完成 ::恢复系统日期 echo 恢复系统日期 date %cTime% ::ping 0.0.0.0 -n 5> null ::第二部分,为当前脚本创建.lnk快捷方式,放到用户桌面 ::把原有的lnk快捷方式删掉,注意有的是在public桌面,有的是在当前user桌面 if exist "%PUBLIC%\Desktop\Xftp 7.lnk" (del /f /q "%PUBLIC%\Desktop\Xftp 7.lnk") if exist "%USERPROFILE%\Desktop\Xftp 7.lnk" (del /f /q "%USERPROFILE%\Desktop\Xftp 7.lnk") ::由Xftp.bat创建的快捷方式,不存在才创建 set Desktop=%PUBLIC%\Desktop if exist %Desktop%\Xftp.lnk goto:EOF ::切换到Xftp.bat脚本所在目录 cd /d %~dp0 ::创建一个临时的vbs脚本, 写入以下内容. ::创建一个 wscript.shell 对象. echo set wshell = WScript.CreateObject("WScript.Shell") > create_shortcut.vbs ::在 vbs 脚本中声明快捷方式路径及名称,放到用户桌面 echo file_lnk = "%Desktop%\Xftp.lnk" >> create_shortcut.vbs ::创建一个 shortcut 对象. echo set shortcut = wshell.CreateShortcut(file_lnk) >> create_shortcut.vbs ::下面开始设置 shortcut 对象的属性. ::1. 将目标路径设置为当前批处理脚本 Xftp7.bat echo shortcut.TargetPath = "%cd%\Xftp7.bat" >> create_shortcut.vbs ::2. 为 Xftp.bat 设置参数(当然这里不需要) :: echo shortcut.Arguments = "A B C" >> create_shortcut.vbs ::3. 将 "Xftp.bat所在目录" 设置为起始目录 :: 注意这里双写百分号用来避免百分号被转义 (即双写百分号表示单个 "%"). echo shortcut.WorkingDirectory = "%%cd%%" >> create_shortcut.vbs ::4. 添加快捷方式描述 (可选). echo shortcut.Description = "Xftp: Secure file transfer software for MS Windows Platform." >> create_shortcut.vbs ::5. 添加快捷方式图标 (可选). echo shortcut.IconLocation = %Xftp% >> create_shortcut.vbs ::6. 保存 vbs 脚本. echo shortcut.Save >> create_shortcut.vbs ::执行vbs脚本. cscript create_shortcut.vbs ::删除临时的vbs脚本. del /f /q create_shortcut.vbs exit
只需要替换脚本中的 XShell7和Xftp7的安装目录(XShell.exe和Xftp的目录)即可。
完了直接桌面点击脚本文件。