今天终于在集群上测试了自己的毕业实验,遂将过程记录一下,以防后期用到。
整体步骤
- 在IntelliJ中打包程序,形成jar包
- 在集群master上submit程序运行
遇到的问题
上次集群环境是正常的,今天启动的时候,又遇到bug了,同样是ssh无密码访问问题。因为校园网动态ip的问题,关机重启之后,ip会有变化,所以之前在/etc/hosts 设置的ip地址需要更新,同时密钥需要重新生成。
解决方法:一不做二不休,将所有机器的~/.ssh下的所有文件删除,重新生成新的,按照之前配置集群相同的步骤执行。
但是过程中遇到了下面的问题:
1 | Agent admitted failure to sign using the key |
解决方法:在shell中执行ssh-add命令
第三个问题是:启动hadoop的时候,没有datanode;查看了hadoop日志,发现是因为namenode和datanode的不一致性引起的。
查看hadoop目录下的dfs/data/current/VERSION中的clusterID 与dfs/name/current/VERSION中的clusterID 是否一致,确保一致即可。
重新启动hadoop就会发现datanode出现了。
步骤一:IntelliJ为应用打jar包
File –> Project Settings –> Artifacts –> Jar –> From module with Dependencies –> OK
可以将scala和hadoop的依赖文件去掉,降低包大小。
Build –> Build Artifact –> Build
会在out/artifact目录下生成.jar文件
步骤二:集群上运行
spark对于输入数据默认是从hdfs上读取,所以我们先将数据放到hdfs上。进入到hadoop安装目录下
1 | # 新建文件夹放置输入数据 |
调用submit命令执行代码,进入到spark安装目录
1 | ./bin/spark-submit \ |
按回车运行,查看结果先将其从hdfs拷贝到本地。