为了一篇正在准备的用spark做文本分析的博文,快速搭建了一个4节点的Spark on Yarn+Hadoop的集群。算是给这个系列的一点简单小结。因为资源的限制,HA的hadoop的集群搭建还要在等一段时间才能来继续了。
由于工作内容变动,有一段时间没有搞环境搭建,这次居然手生了很多,所这里也快速的记录一下自己的步骤来当做文档。
-- 机器配置
所有的机器都把防火墙给关了,节省时间。在linux里面用命令
chkconfig iptables off
service iptables stop
这次搭搞笑了一把,只跑了第一个chkconfig命令,然后忘了重启了,结果后来环境运行起来,死活没法用web ui去看环境状态,最后发现是防火墙没关。被狂嘲笑。。。
然后把系统自带的openjdk给删了,具体的删法视OS的预装而定,基本都是rpm -qa 先看看是预装的啥jdk,然后rpm再删掉。
删完了,装上Oracle JDK,这次用的是Java7_u75。之前经验是这个版本对hadoop 2.6.×和Spark 1.4之后的都支持。具体安装的步骤就省了,无非就是先下载,再解压,然后配置环境变量,在java -version确认。基本上在master上配一边,然后scp到slave们上,就简单了,不用都一个个的手工敲命令。
Java搞定了后,就是配置ssh免密码登录。之前的博文分析过,hadoop里面只要namenode能免ssh登录datanode就可以了,所以这次就只配置master到3个slave的root账号的免密码ssh登录。具体命令就两个:
1. 先在master机上创立root的rsa code
ssh-keygen -t rsa
一路回车下去,再
2. 拷贝master的root的rsa code到3个slave上
ssh-copy-id root@slaves
中间会提示输入slaves的密码和是否要接受footprint,就一路yes下去就ok了
3. ssh root@slaves试一试是否真的不要密码了。
-- 安装Hadoop 2.6.0
自己也搞了好几次了,就简化一下步骤,不写命令了
1. 下载预编译好的tar包;
2. 解压缩到自己习惯的地方,我一般都放在 /opt/hadoop里面;
3. 创建dfs的name,data,tmp目录;
4. 把自己在本机上修改好的 /etc/hadoop下面的配置文件拷到 hadoop的 /etc/hadoop里面。具体如何修改就大家自己搜去吧。
5. 然后在master上 把整个hadoop目录和dfs的name,data,tmp也都scp到slave们上,简单方便。
6. 千万记得在启动hadoop之前,先格式化namenode!!!千万记得在启动hadoop之前,先格式化namenode!!!千万记得在启动hadoop之前,先格式化namenode!!!重要的事情说3遍。
7. 这下可以启动hadoop了,也就是 start-dfs.sh和start-yarn.sh。
-- 安装Spark 1.5.2
同上,简化步骤,不写命令。
1. 下载预编译好的tar包;
2. 解压缩到自己习惯的地方,我一般都放在 /opt/spark里面;
3. 修改 /conf目录下的配置文件,也是在本机上做好一套,然后拷到 spark的/conf里面。不复杂,只是记得把JAVA_HOME给加上,尽管官方文档里面没有说一定要配这个。之前就出现过一次,尽管所有机器OS的JAVA_HOME都配了,但是spark里面没加,结果worker就是报错,说找不到java目录,启动失败。
4. 然后同样把master上的整个spark目录给scp到所有的slaves上去,简单方便,其实这个步骤可以和hadoop一起搞。这样就节省了很多在slave机器上的操作。
5.这样就可以启动spark了,sbin/start-all.sh就好了。
-- 验证安装
1. 在master上用jps命令查看进程,应该有4个进程,namenode,secondarynamenode,resourcemanager,master。在slave的机器上用jps查看,应该有3个,datanode,nodemananger,worker。
2. 用浏览器,用master的ip加端口8088和50070来查看yarn和hdfs的情况,或者在Eclipse里面添加一下这hdfs连接试一试。没事就拷两个文件进去玩玩。我再写了个wordcount程序,在eclipse里面直接部署运行,一切正常。