使用centOS虚拟机搭建集群,先设置一个虚拟机节点作为master,另一个直接克隆,后修改配置,关闭防火墙,设置hostname,并通过ssh免密码登陆使master直接访问,最后完成集群搭建。
创建虚拟机:
vmware中添加centos的镜像,创建linux虚拟机。作为主节点master。
安装配置
1.下载jdk:jdk-7u79-linux-x64.tar.gz 放入/usr/java
解压:tar zxvf jdk-7u79-linux-x64.tar.gz
设置配置文件 /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
手动修改将系统默认的JDK:
# update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_79/bin/java 300
# update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_79/bin/javac 300
# update-alternatives --config java
会出现现有版本路径,请你选择:
There are 3 alternatives which provide `java'.
Selection Alternative
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
2 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
3 /usr/java/jdk1.7.0_79/bin/java
Press enter to keep the default[*], or type selection number:
查看版本,是否安装成功
#java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
然而我使用jps却是没有此命令
是jdk未配置好
ln -s /usr/java/jdk1.7.0_79/bin/jps /usr/bin
参考:http://linux.it.net.cn/CentOS/CentosBug/2015/0528/15583.html
2.安装配置spark
这里的spark我下载的是spark-1.2.0-bin-hadoop1.tgz
下载地址 http://spark.apache.org/downloads.html
一般spark可使用scala语言,和python。我主要想研究基于python的spark,所以不安装scala。
解压并安装到 /my
tar –zvxf spark-1.1.0-bin-hadoop2.4.tgz
在etc/profile中增加环境变量SPARK_HOME,并使之生效:
export SPARK_HOME=/usr/my/spark-1.2.0-bin-hadoop1
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
配置Spark,修改spark-env.sh配置文件:
进入spark的conf目录
#cp spark-env.sh.template spark-env.sh
#vi spark-env.sh
可添加的很多,可根据情况添加,例如
export SPARK_HOME=/my/spark
export SPARK_MASTER_IP=192.168.61.128
//export MASTER=spark://192.168.61.128我这里master写成大写时报错
15/12/20 22:51:42 WARN AppClient$ClientActor: Failed to connect to master
export master=spark://192.168.61.128
修改conf/slaves文件,将计算节点的主机名添加到该文件
#cp slaves.template slaves
#vi slaves
slave
克隆虚拟机
vmware中可以克隆机子,克隆出来作为新节点,为确保正确ifconfig查看ip是否重新分配。我的是不同于master虚拟机的
此时两个节点都构建好了,下面要修改一些配置
1 修改两个机子的hostname和关闭防火墙
#hostname slave
2 修改网关
#vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
3 配置hosts文件
将ip与hostname对应的信息写入hosts文件,如图所示:
#vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.61.128 master
192.168.61.129 slave
4 配置完成后重启网卡:
#service network restart
5 关闭防火墙
#service iptables stop
建议将服务器按如下设置:
#chkconfig iptables off --关闭防火墙开机启动
#chkconfig iptables –list – 查看状态
两节点无密码登陆ssh
主节点master能无密码访问子节点slave。主要是生成秘钥对:公钥id_rsa.pub 和私钥id_rsa。将master的公钥追加到对应节点的authorized_keys文件里。这样master才能无密码访问对应节点(包括自身)。注意修改.ssh和authorized_keys的权限。
在master上
#cd ~/.ssh
1 .生成秘钥对 (id_rsa和id_rsa.pub)
#ssh-keygen –t rsa
2 .把master上生成的公钥id_rsa.pub追加到授权的key中
#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.修改授权key的权限
#chmod 600 ~/.ssh/authorized_keys
master本地可以连接了,接下来就是连其他节点
4.将公钥复制到slave的~/目录下
#scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
这里scp ~/.ssh/id_rsa.pub root@192.168.61.129:~/
5.slave这台机子上将公钥追加到对应~.ssh/authorized_keys里
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys –>追加公钥到授权key中
rm ~/id_rsa.pub –>保险起见,删除公钥
6.修改权限
chmod 600 authorized_keys
chmod 700 ~/.ssh
service sshd restart -->重启ssh服务
参考 http://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html
妹的 ssh愣是行不通 只能通过ip来无密码登陆,通过主机名字就是不行,结果一重启,啥都好了,fuck!!
启动spark
[root@master my/spark]#sbin/start-all.sh
jps查看启动情况或浏览器http://master:8080