spark分布式集群

来源:互联网 发布:单片机连接串口扫描 编辑:程序博客网 时间:2024/06/05 20:29

使用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_79export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport 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/javaPress 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-hadoop1export 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/sparkexport 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 masterexport 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=yesHOSTNAME=master

3 配置hosts文件

将ip与hostname对应的信息写入hosts文件,如图所示:

#vi /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.61.128 master192.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_keyschmod 700 ~/.sshservice 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

0 0