IntelliJ IDEA中编写mapreduce程序上传至远程Hadoop集群运行
本文主要讲怎么将 m a p r e d u c e mapreduce mapreduce程序打包成 j a r jar jar包并上传远程 H a d o o p Hadoop Hadoop集群运行,所以不讨论如何编写 m a p r e d u c e mapreduce mapreduce程序以及如何搭建 H a d o o p Hadoop Hadoop集群。然后虽然我这里实在 m a c O S macOS macOS系统下演示的,其实 w i n d o w s windows windows系统一样适用。
-
右键项目选择 O p e n M o d u l e S e t t i n g Open\ Module\ Setting Open Module Setting
-
选择 A r t i f a c t s → + → J A R → F r o m m o d u l e s w i t h d e p e n d e n c i e s Artifacts\ \rightarrow\ +\ \rightarrow JAR \rightarrow From\ modules\ with\ dependencies Artifacts → + →JAR→From modules with dependencies
-
选择主类
先选择你这个项目的主类
然后把这里的路径改成项目位置的一级目录下面,如下图所示:
-
点击 A p p l y Apply Apply
-
选择 B u i l d → B u i l d A r t i f a c t s Build\ \rightarrow\ Build\ Artifacts Build → Build Artifacts
-
可以看到 j a r jar jar包已经生成
上述操作之后会发现项目下面多了两个文件夹,一个是 M E T A − I N F META-INF META−INF (这个不用管他),另一个是 o u t out out文件夹,在里面有你要的 j a r jar jar包
-
在终端或者 c m d cmd cmd里面 s s h ssh ssh到你的远程虚拟机
-
然后上传刚才生成的 j a r jar jar包
我这里直接放在了 H o m e Home Home下面,也就是上图中的红色文件(我是提前传上去了) -
运行之前要检查你的 H a d o o p Hadoop Hadoop集群是否正确运行
这里根据你的集群是伪分布模式还是完全分布式集群,使用 j p s jps jps命令查看所有必须的进程是否已经启动(有哪些进程与你搭建集群时的配置有关系) -
然后将你的数据上传至 h d f s hdfs hdfs
你可以先将数据从本地上传到虚拟机上,然后使用一下命令上传到 h d f s hdfs hdfs:hdfs dfs -put 虚拟机本地jar包存储完整路径 hdfs文件系统存储的路径
-
最后测试啦
命令如下所示(以我的例子为例):
注意这里运行之前 / w z w /wzw /wzw下面只有一个 i n p u t input input文件夹, o u t p u t output output文件夹是没有的且不能有的。所以运行之前最好检查一下是否有这个目录,不然会报错。下面是运行结果[hadoop@CQU-Hadoop-052 ~]$ hadoop jar PlayerCount.jar /wzw/input /wzw/output
可以看到运行成功了
浏览器进入配置 r e s o u r c e m a n a g e r resourcemanager resourcemanager的节点的 8088 8088 8088端口(好像这个是默认的,如果修改了的话可能不是这个,如果忘记了的话可以翻一下你的那几个 x m l xml xml配置文件)也可以看到刚才提交的 j o b job job 是 S U C C E E D E D SUCCEEDED SUCCEEDED状态