linux环境准备
spark/hadoop安装包
spark-2.3.1-bin-hadoop2.7.tgz
Hadoop2.7.6
注:hadoop版本需要与spark对应的版本一致
集群机器
主机名 | IP地址(内网) |
---|---|
master | 10.24.21.144 |
slave1 | 10.24.21.4 |
slave2 | 10.24.21.7 |
- 修改三台服务器的hosts文件
vi /etc/hosts
# 文件追加
10.24.21.144 master
10.24.21.4 slave1
10.24.21.7 slave2
# 执行命令刷新dns
source /etc/hosts
java/scala安装(已安装请跳过)
- 下载 jdk-8u65-linux-x64.gz 后解压
tar -zxvf jdk-8u121-linux-x64.tar.gz
- 下载scala-2.12.6.tgz后解压
tar -zxvf scala-2.12.6.tgz
- 添加环境变量,在/etc/profile中添加:
export JAVA_HOME=/usr/java/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin:/opt/consul
export CLASSPATH=$JAVA_HOME/lib/
export SCALA_HOME=/usr/scala-2.12.6
export PATH=$PATH:$SCALA_HOME/bin
- 保存后刷新配置
source /etc/profile
- 检查是否安装成功
java -version && scala -version
集群ssh免密码配置
以下基于ubuntu,centos有些许差异
[1]
- 没有安装ssh的,输入以下指令进行安装
yum install ssh
- 生成master节点ssh秘钥、公钥
//进入master执行(一路回车,yes):
ssh-keygen -t rsa -P ''
#最后会在/root/.ssh/下生成两个文件,其中id_rsa是私钥,id_rsa.pub是公钥
//把id_rsa.pub追加到授权的key里面去,其中authorized_keys
//用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 执行如下指令,验证是否配置成功
ssh localhost
# 成功提示:
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is 7c:a1:56:1d:ff:c3:9a:8b:da:a1:53:94:93:19:f6:38.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.16.0-34-generic x86_64)
......
注:其中有台机器验证失败,输出如下:
root@sh-pip-spcloud03:/etc/ssh# ssh localhost
root@localhost's password:
Permission denied, please try again.
主要原因是目录权限不对,执行以下指令即可[2]:
chmod go-w ~/ && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
- 配置master、slave节点互相访问
按照上面,同时在其他两台机子上执行同样的命令
- 将slave1、slave2节点的公钥"id_rsa.pub"复制到master节点:
#方式1:scp远程拷贝(此时需要输入root用户密码) slave1机器执行: scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa.pub.slave1 slave2机器执行: scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa.pub.slave2 #方式2:sz手动拷出到windows,在rz拷贝到指定机器
- 将slave1、slave2的公钥追加到authorized_keys
此时可以从slave1、slave2机器访问mastercat ~/.ssh/id_rsa.pub.slave1 >> ~/.ssh/authorized_keys cat ~/.ssh/id_rsa.pub.slave2 >> ~/.ssh/authorized_keys
- 将master机器上的authorized_keys拷贝至slave1、slave2
#方式1 scp命令(此时仍然需要输入密码) scp ~/.ssh/authorized_keys root@slave1:/root/.ssh/authoried_keys scp ~/.ssh/authorized_keys root@slave2:/root/.ssh/authoried_keys #方式2:手动拷贝
- 验证
在master输入:ssh slave1 在slave1输入:ssh master
-
使用scp拷贝文件时可能会出现Permission denied
,可能原因有:密码错误
-
sshd_config未开启相应权限
1:修改ssh配置文件"/etc/ssh/sshd_config"的下列内容,将以下内容的注释去掉:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
2:重启ssh服务,才能使刚才设置有效。
sudo /etc/init.d/ssh restart -
文件权限不对[2]
可以使用以下指令到拷贝的目标机器上查看日志进行分析:
grep sshd /var/log/auth.log