系统:CentOS 6.2
操作账号:root
Spark版本:spark-0.8.0-incubating-bin-Hadoop1.tgz
jdk版本:jdk-7-linux-x64.rpm
scala版本:scala-2.9.3.tgz
使用的节点情况:(172.18.11.XX) XX=16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,34 共17个节点
主控节点:hw024,以下操作如无特别说明全部在hw024上进行
注意:(1)因为我之前在24-28上安装过所有环境,所以以下for循环中没有这五个节点,但是如果要自行配置,需要在for循环中加入所有节点hostname
(2)注意,三台机器spark所在目录必须一致,因为master会登陆到worker上执行命令,master认为worker的spark路径与自己一样。
Spark简介及其在Ubuntu下的安装使用
Spark 并行计算模型
1. 配置各个节点无密码登陆
(a)在每个节点分别执行:
yum remove selinux* -y(预防ssh-keygen命令不成功)
ssh-keygen -t rsa(之后一路回车)
这将在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
(b)将所有datanode节点的公钥id_rsa.pub传送到namenode上:
cp id_rsa.pub hw016.id_rsa.pub
scp hw016.id_rsa.pub "namenode节点ip地址":/root/.ssh
......
cp id_rsa.pub hw0XX.id_rsa.pub
scp hw0XX.id_rsa.pub namenode节点ip地址:/root/.ssh
(c)namenode节点上综合所有公钥(包括自身)并传送到所有节点上
cp id_rsa.pub authorized_keys 这是namenode自己的公钥
cat hw016.id_rsa.pub >> authorized_keys
......
cat hw0XX.id_rsa.pub >> authorized_keys
然后使用SSH协议将所有公钥信息authorized_keys复制到所有DataNode的.ssh目录下
scp authorized_keys “data节点ip地址”:/root/.ssh
这样配置过后,所有节点之间可以相互SSH无密码登陆,可以通过命令
“ssh 节点ip地址”来验证。
配置完毕,在namenode上执行“ssh 本机,所有数据节点”命令,因为ssh执行一次之后将不会再询问。
备注:用scp命令拷贝到所有节点时,可以放到脚本执行,脚本内容如下:
for dir in hw016 hw017 hw018 hw020 hw021 hw023 hw024 hw025 hw026 hw027 hw028 hw029 hw030 hw031 hw032 hw033 hw034
do
echo cping to $dir
scp -r authorized_keys root@$dir:/root/.ssh/
done
2. 修改hosts并拷贝到所有节点
hosts内容如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.18.11.15 hw015
172.18.11.16 hw016
172.18.11.17 hw017
172.18.11.18 hw018
172.18.11.20 hw020
172.18.11.21 hw021
172.18.11.23 hw023
172.18.11.24 hw024
172.18.11.25 hw025
172.18.11.26 hw026
172.18.11.27 hw027
172.18.11.28 hw028
172.18.11.29 hw029
172.18.11.30 hw030
172.18.11.31 hw031
172.18.11.32 hw032
172.18.11.33 hw033
172.18.11.34 hw034
scp到所有节点的/etc/目录下
这一步是为了方便以后的操作,以后再拷贝其他文件,在脚本中就不用写ip。
3. 拷贝所有需要安装的包到各个节点的对应目录下
#!/bin/bash
for dir in hw016 hw017 hw018 hw020 hw021 hw023 hw029 hw030 hw031 hw032 hw033 hw034
do
echo cping to $dir
scp -r jdk-7-linux-x64.rpm root@$dir:/home/xxx
done
4. 分别登陆各个节点,安装jdk1.7
进入每个节点的/home/xxx, 执行命令:rpm -ivh jdk-7-linux-x64.rpm
其自动安装到/usr/Java/jdk1.7.0
5. 安装scala
解压scala-2.9.3.tgz到/home/xxx下,生成scala-2.9.3目录
拷贝scala-2.9.3到每个节点的/usr/lib下:
for dir in hw016 hw017 hw018 hw020 hw021 hw023 hw029 hw030 hw031 hw032 hw033 hw034
do
echo cping to $dir
scp -r scala-2.9.3 root@$dir:/usr/lib
done
6. 安装Spark
(1)解压 spark-0.8.0-incubating-bin-hadoop1.tgz 到每个节点的/home/xxx目录下
由于我们已经将解压好的spark目录拷贝到各个节点上(见步骤3),故这里略去。
(2)设置环境变量
我们会在后面统一设置环境变量。
(3)设置spark的配置文件
设置spark源码目录下的/conf/slaves文件如下:
hw016
hw017
hw018
hw020
hw021
hw023
hw025
hw026
hw027
hw028
hw029
hw030
hw031
hw032
hw033
hw034
设置spark-env.sh文件,添加一行内容:
export SCALA_HOME=/usr/lib/scala-2.9.3
保存退出
(4)拷贝配置好的spark源码到所有slaves节点上:
#!/bin/bash
#for dir in hw016 hw017 hw018 hw020 hw021 hw023 hw029 hw030 hw031 hw032 hw033 hw034
for dir in hw016 hw017 hw018 hw020 hw021 hw023 hw024 hw025 hw026 hw027 hw028 hw029 hw030 hw031 hw032 hw033 hw034
#for dir in hw025 hw026 hw027 hw028
do
echo cping to $dir
scp -r spark-0.8.0-incubating-bin-hadoop1 root@$dir:/home/xxx
done
保存退出,spark配置完成