Spark环境搭建(上)——基础环境搭建

Spark摘说

        Spark的环境搭建涉及三个部分,一是linux系统基础环境搭建,二是Hadoop集群安装,三是Spark集群安装。在这里,主要介绍Spark在Centos系统上的准备工作——linux系统基础环境搭建。这个主要包括:

  •  运行环境说明:硬软件环境、集群网络环境、Linux使用工具(xshell和xftp)
  •  样板机环境搭建:安装操作系统及创建hadoop用户、设置系统环境(机器名,IP地址,Host映射文件,关闭防火墙、SElinux)、配置运行环境(更新OpenSSL-—可选,修改SSH配置文件,JDK安装及配置,Scala安装及配置)
  •  集群环境配置:复制样板机, 设置集群机机器名和IP地址,配置SSH无密码登录,设置CentOS7启动模式(主要针对有X-Windows界面的版本,本最小化版本不需要)

1.运行环境说明

 1.1 硬软件环境要求

  •    主机操作系统:Windows 64位,8G内存
  •    虚拟软件:VMware-workstation-full-14.0.0-6661328
  •    虚拟机操作系统:CentOS-7-x86_64-Minimal-1708最小化系统(纯命令行界面),单核,1G内存
  •    虚拟机运行环境:

                     JDK : jdk-8u151-linux-x64

                     Scala : scala-2.10.4

        Hadoop : hadoop-2.9.0 (不需要编译,可以直接在官网下载完整版)

                     Spark :  spark-2.2.0-bin-hadoop2.7(不需要编译,可以直接在官网下载完整版)

1.2 集群网络环境要求

所有节点均是Centos7 64系统,防火墙/SELinux均禁用,所有节点上均创建了一个hadoop用户;

集群包含三个节点,节点之间可以免密码SSH访问;

所有节点上均创建一个目录/opt/app用于存放安装程序,并且拥有者是hadoop用户。注意:要求hadoop用户对目录/opt/app必须有rwx权限(一般做法是root用户在根目录下创建/opt/app目录,并使用chown命令修改该目录拥有着为hadoop),否则hadoop用户使用SSH往其他机器分发文件会出现权限不足的提示。

所有节点上均创建一个目录/opt/uploads用于存放安装包tar.gz,并且拥有者是hadoop用户,要求同上。

上述的hadoop用户或者目录/opt/app都是不唯一的,可以是其他用户,或者其他目录,但是得保证创建的用户对创建的目录拥有rws权限。

1.3安装使用的工具

1.3.1 Linux命令行工具xshell 5

 XShell5可用于连接远程服务器或者VMware创建的centos虚拟机机,如图:

1.3.2 Linux文件传输工具Xftp5

Xftp5用于在windows和Linux两个系统之间进行文件的传输,如图:

 两个文件的下载地址为:https://www.portablesoft.org/xshell-xftp-integrated/ 

2、搭建样板机环境

   本次安装集群分三个节点,本节为搭建样板机环境搭建,搭建分为安装操作系统及创建hadoop用户、设置系统环境(机器名,IP地址,Host映射文件,关闭防火墙、SElinux)和配置运行环境(更新OpenSSL-—可选,修改SSH配置文件,JDK和Scala的安装及配置)三个步骤

2.1 安装操作系统及创建hadoop用户

 第一步,使用VMware14创建新的虚拟机,处理器和内核选择数量为1,内存为1G,网络连接为NAT模式,其他选择为推荐,虚拟磁盘大小选择20G并选择将虚拟磁盘存储为单个文件,如图:

 

第二步 开始安装CentOS 7,直接选择第一个Install CentOS7 

第三步 按Enter键启动安装程序,然后到语言选择界面,直接选择英文English吧,因为是命令行界面,哈哈哈哈........

 

第四步 转到INSTALLAION SUMMARY界面,根据提示,选择系统安装磁盘,然后点Done;

         

第五步 返回INSTALLAION SUMMARY界面,点Begin Installation,开始安装,转到配置CONFIGURATION界面,配置root用户密码和创建hadoop用户及其密码,如图:

设置root密码

创建hadoop用户及其密码,并将其设置为administrator管理者用户

第六步 完成配置,CentOS安装完成。

第七步 给hadoop用户赋予root权限,以root用户使用如下命令:

# vi /etc/sudoers 

hadoop ALL=(ALL)   ALL

2.2 设置系统环境

   系统环境设置,包括机器名,IP地址,Host映射文件,关闭防火墙、SElinux。该部分对服务器的配置需要在服务器本地进行配置,配置完毕后需要重启服务器确认配置是否生效,特别是远程访问服务器需要设置固定IP地址。

2.2.1 设置机器名

以root用户登录,使用# vi /etc/sysconfig/network打开配置文件,设置机器名,以样板机为第一台,设置内容为HOSTNAME=hadoop1,集群配置时再分别设为hadoop2、hadoop3等,新机器名在重启后生效

2.2.2 设置IP地址

1.使用命令ip addr查看本机是否分配IP,可以发现系统的网卡没有分配IP地址,在此我们需要记住本机网卡的名称,本篇中网卡为ens33:

2.查找网卡ens33,使用# cd /etc/sysconfig/network-scripts/ && ll 进入network-scripts文件夹查看,ifcfg-ens33为本机网卡配置文件:

3. 系统刚装好时,会缺少很多包,例如由于缺net-tools包,ifconfig命令无效;而ifcfg-ens33里面有个现成的配置,能通过宿主机连接WWW万维网,需要开启自动连接网络,步骤如下:使用# vi ifcfg-ens33打开ifcfg-ens33配置文件,把 ONBOOT=no 改为 ONBOOT=yes 保存,使用命令service network restart重启网络,如图:

   

 再使用ping www.baidu.com,可以ping通:

 再使用命令ip addr,可以看到系统已经自动随机分配IP地址啦:

使用命令yum install net-tools,安装net-tools包:

输入命令ifconfig查看网卡地址IP、mac地址等等配置信息:

输入命令route -n查看网关信息:

4.修改或重建网络连接,设置该连接为手工方式,第三步配置系统分配的IP地址是随机,而我们需要固定的IP的地址,在此前先把ifcfg-ens33原本的配置全部加#注释,在下方重新写,设置如下网络信息:

    左为原配置注释,右为在重新配置:

5. 在命令行中,使用 # service network restart 重启网络,使修改IP信息生效,是否生效,可以使用ifconfig命令查看:

哈哈哈哈,至此IP地址修改完毕。

注意

        虚拟机的IP地址、网关及网络掩码设置与VMware虚拟网络设置有关:

       第一步   在VMware14菜单栏目,点击编辑,再选虚拟网络编辑器,如图:

           

         第二步 查看GATEWAY网关值

          

         第三步 查看IP设置范围和NETMASK网络掩码值:

         

 2.2.3 设置Host映射文件

1. 使用root身份编辑/etc/hosts映射文件,设置IP地址与机器名的映射,设置信息如下:

# vi /etc/hosts

  •  192.168.187.201  hadoop1
  •  192.168.187.202  hadoop2
  •  192.168.187.203  hadoop3

2. 使用如下命令对网络设置进行重启,以下命令都要以root身份运行

# sudo  /etc/init.d/network restart

或者 # sudo service network restart

 

3. 验证设置是否成功,ping通则成功

2.2.4 关闭防火墙

 在hadoop安装过程中需要关闭防火墙和SELinux,否则会出现异常

1. systemctl status firewalld 或是 firewall-cmd --state 查看防火墙状态,从CentOS7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。如果是CentOS7版本以下的或是其他Ubuntu系统,可通过service iptables status查看防火墙状态。

# systemctl status firewalld

# firewall-cmd --state

2.以root用户或是hadoop用户root权限sudo去停止firewalld服务即可。如果是CentOS7版本以下的或是其他Ubuntu系统,使用#chkconfig iptables off命令关闭防火墙。

root用户  :  # systemctl stop firewalld.service && systemctl disable firewalld.service   

或是   

hadoop用户 : # sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service

 

3. systemctl status firewalld 或是 firewall-cmd --state 查看防火墙状态,可以看出,防火墙已关闭

 2.2.5 关闭SElinux

       SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。

1. 使用getenforce命令查看是否关闭

2. 修改/etc/selinux/config文件,永久关闭内核防火墙

将SELINUX=enforcing改为SELINUX=disabled,执行该命令后重启机器生效

root 用户:# vi /etc/selinux/config    或是    hadoop用户:  # sudo vi /etc/selinux/config

3.使用getenforce查看是否关闭

2.3 配置运行环境

  本节为第三节配置运行环境(更新OpenSSL——可选,修改SSH配置文件,JDK安装及配置,Scala安装及配置)

2.3.1 更新OpenSSL——可选

CentOS7不需要更新OpenSSL,CentOS6及以下版本可能需要更新OpenSSL。看下图,可以看到CentOS7无包可更新。

hadoop用户 :# sudo yum install openssl

2.3.2 修改SSH配置文件

 1. 以root用户或是hadoop用户用root权限sudo使用如下命令打开sshd_config配置文件。修改ssh配置文件,主要是为了后面集群机之间可以免密码登录。

 root用户: # vi /etc/ssh/sshd_config     或是   hadoop用户:  # sudo vi /etc/ssh/sshd_config

 开放三个配置,如下图所示:

 RSAAuthentication yes

 PubkeyAuthentication yes

 AuthorizedKeysFile .ssh/authorized_keys

2. 配置后重启服务。CentOS7 重启sshd服务,其他低版本系统重启服务命令为# service sshd restart。service sshd restart命令在CentOS7下不起作用。

# systemctl restart sshd.service

 2.3.3 JDK安装及配置

1. 下载jdk-8u151-linux-x64安装包

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

打开界面之后,先选中Accept License Agreement,然后下载jdk-8u151-linux-x64.tar.gz,如下图所示:

2. 赋予hadoop用户/usr/lib/java目录可读写权限,使用命令如下:

# sudo chmod -R 777 /usr/lib/java     -R 为对文件夹里面所有的文件递归修改权限

 

3. 把下载的安装包,使用Xftp工具上传到/usr/lib/java目录下,使用如下命令进行解压

# tar -zxvf  jdk-8u151-linux-x64.tar.gz

解压后目录如下图所示:

 

 4. 使用root用户或是hadoop用户用root权限sudo配置/etc/profile文件,并生效该配置

root用户 : # vi /etc/profile      或是     hadoop用户: # sudo vi /etc/profile

添加如下内容:

export JAVA_HOME=/usr/lib/java/jdk1.8.0_151

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

5.使用命令使配置生效并校验:

# source /etc/profile

# java -version

2.3.4 Scala安装及配置

1. 下载Scala安装包

http://www.scala-lang.org/download/2.10.4.html

 2.  以root用户或是 hadoop用户以root权限sudo,创建/opt/uploads存放安装包tar.gz、/opt/app目录存放安装程序,并把它们的拥有者与用户组修改为hadoop用户和hadoop组,使用命令如下:

root 用户: # mkdir app && mkdir uploads

或是

hadoop用户; # sudo mkdir app  &&  sudo  mkdir uploads

root用户:略,只是少sudo     

或是         

hadoop用户:# sudo  chown -R hadoop:hadoop  /opt/app && sudo chown -R hadoop:hadoop /opt/hadoop  修改文件拥有者以及所属用户组

【注意】:把文件拥有者和用户组修改为hadoop是为了方便集群机传递文件以及集群系统创建文件方便,避免因权限问题出现错误。

3. 上传Scala安装文件

把下载的scala安装包使用Xftp工具上传到/opt/uploads上

 

4. 解压缩

  到上传目录下,用如下命令解压缩:

  # cd /opt/upload

  # tar -zxvf scala-2.10.4.tgz

迁移到/opt/app目录下

# sudo mv  ./scala-2.10.4   /opt/app

 

5. 使用root用户或是hadoop用户以root权限sudo配置/etc/profile文件,并生效该配置

export  SCALA_HOME=/opt/app/scala-2.10.4

export PATH=$PATH:$SCALA_HOME/bin

在配置java环境的基础上配置scala环境

 6. 使用如下命令刷新profile配置文件

# source /etc/profile

# scala -version

3. 配置集群环境

复制样板机生成其他两个节点,按照规划设置及其命名和IP地址,最后设置SSH无密码登录。

 3.1 复制样板机

复制样板机两份,分别为hadoop2和hadoop3

 

3.2 设置集群机机器名和IP地址

以root用户或是 hadoop用户以root权限sudo ,使用# vi /etc/sysconfig/network打开配置文件,根据1.2规划修改其余两台机器名,修改机器名后需要重新启动机器,新机器名在重启后生效

   

按照2.2.2里面的第四步配置方法修改机器IP地址,以root用户或是hadoop用户root权限sudo,使用命令 # sudo vi /etc/sysconfig/network-script/ifcfg-ens33 打开网卡ens33配置文件。ifcfg-ens33文件名不唯一,可能为ifcfg-xxx其他命名,可以参照2.2.2里面的第一,二步查找网卡文件。

hadoop2的配置:                                                                         hadoop3的配置:

                   

3.3 配置SSH无密码登录

第一种方法,比较繁琐:

 1. 使用hadoop用户登录在三个节点中使用如下命令生成私钥和公钥:

# ssh-keygen -t rsa       命令解析:-t 用于指定密钥类型  rsa 为指定的密钥类型

2. 进入/home/hadoop/.ssh目录在三个节点中分别对应把公钥命名为authorized_keys_hadoop1、authorized_keys_hadoop2和authorized_keys_hadoop3,使用命令如下:

# cd /home/hadoop/.ssh

# cp id_rsa.pub authorized_keys_hadoop1

3. 把两个从节点(hadoop2、hadoop3)的公钥使用scp命令传送到hadoop1节点的/home/hadoop/.ssh文件夹中,或者通过Xftp工具直接复制也行:

# scp authorized_keys_hadoop2 hadoop@hadoop1:/home/hadoop/.ssh

# scp authorized_keys_hadoop3 hadoop@hadoop1:/home/hadoop/.ssh

 

hadoop1上 /home/hadoop/.ssh目录:

 4. 把三个节点的公钥信息保存到authorized_keys文件中,使用如下命令:

# cat authorized_keys_hadoop1 >> authorized_keys 

# cat authorized_keys_hadoop2 >> authorized_keys

# cat authorized_keys_hadoop3 >> authorized_keys

5. 把该密码文件分发到其他两个从节点上,使用如下命令

# scp authorized_keys hadoop@hadoop2:/home/hadoop/.ssh

# scp authorized_keys hadoop@hadoop3:/home/hadoop/.ssh

6. 在三台机器中使用如下设置authorized_keys读写权限,读写权限为600,而400会报错

# chmod 600 authorized_keys

 

7. 测试ssh免密码登录是否生效

 

第二种方法,比较简单(每台机器均执行如下命令):

# ssh-keygen -t rsa 

# ssh-copy-id hadoop1

# ssh-copy-id hadoop2

# ssh-copy-id hadoop3

3.4 设置CentOS 7 启动模式(主要针对有X-Windows界面的版本,本最小化版本不需要)

因为此系统CentOS 7为最小化版本,没有X-Window桌面模式,只有命令行模式,所有不必要修改启动模式。

下面的说明,主要是针对CentOS 7 有X-Window桌面界面版本:

设置好集群环境后,可以让集群运行在命令行模式下,减少集群所耗费的资源。以root用户或是hadoop用户的root权限sudo,使用 # vi /etc/inittab,将id:5:initdefault: 改为id:3:initdefault: 

   Linux系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和所要达到的目的都不同。

CentOS设置了如下表所示的运行级,并且系统可以在这些运行级别之间进行切换,以完成不同的工作。运行级说明:

0 所有进程将被终止,机器将有序的停止,关机时系统处于这个运行级别

1 单用户模式。用于系统维护,只有少数进程运行,同时所有服务也不启动

2 多用户模式。和运行级别3一样,只是网络文件系统(NFS)服务没被启动

3 多用户模式。运行多用户登录系统,是系统默认的启动级别

4 留给用户自定义的运行级别

5 多用户模式,并且在系统启动后运行X-Window,给出一个图形化的登录窗口

6 所有进程被终止,系统重新启动

 

参看资料:

http://www.cnblogs.com/shishanyuan/p/4701510.html 石山园大神的讲解

http://blog.csdn.net/lina791211/article/details/11818825 authorized_keys 权限为600原因

https://zhidao.baidu.com/question/139006065.html 权限修改

https://jingyan.baidu.com/article/ca2d939d2cf1aceb6c31ce0a.html IP地址修改

https://jingyan.baidu.com/article/4853e1e5641c771909f72617.html ifconfig找不到

http://blog.csdn.net/c233728461/article/details/52679558 CentOS7 firewalld防火墙关闭

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值