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地址等等配置信息:
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免密码登录是否生效
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防火墙关闭