spark yarn集群搭建(一:准备工作)

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
    cat ~/.ssh/id_rsa.pub.slave1 >> ~/.ssh/authorized_keys
    cat ~/.ssh/id_rsa.pub.slave2 >> ~/.ssh/authorized_keys
    
    此时可以从slave1、slave2机器访问master
    • 将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

spark yarn集群搭建(二:hadoop集群搭建)

spark yarn集群搭建(三:spark集群搭建)


  1. Ubuntu和CentOS如何配置SSH使得无密码登陆 ↩

  2. ssh localhost "Permission denied" ↩ ↩

你可能感兴趣的:(spark yarn集群搭建(一:准备工作))