0. 本文说明
- 本文主要撰写安装Spark过程中linux系统需要做的一些前置工作及系统配置
-
本文所有步骤均在以下环境实施:
- Centos 6.5
-
参考文献:
0. 基本配置
0.1 修改主机名
修改主机名的过程一般有两种,永久修改主机名和临时修改主机名,我们选择永久修改主机名。
1.临时修改主机名
hostname #显示主机名
hostname spark001 #将主机名临时设定成spark0001
2.永久修改主机名
修改/etc/sysconfig/network中的hostname。vim /etc/sysconfig/network
HOSTNAME=spark001 #将主机名永久设定为spark001
0.2 关闭防火墙和SELINUX
1.关闭防火墙
service iptables stop #临时关闭
chkconfig iptables off #重启后生效
2.关闭SELINUX
修改vim /etc/selinux/config
中的
SELINUX=disabled #重启后永久生效
0.3 SSH免密登录配置
每台机子都要配置
1.修改hosts文件,vim /etc/hosts
,加入如下内容:
192.168.1.101 cdh1
192.168.1.102 cdh2
192.168.1.103 cdh3
2.在每台机子上运行免密码SSH文件
0.4 配置交换设置及透明大页面压缩问题
每台机子都要配置
echo 0 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
1. yum源的配置
配置yum源的目的在于能够快速安装和下载所需要的工具,感谢阿里的yum源。
1.备份原yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup.`date +%Y%m%d.%H%M%S`
2.下载阿里的yum源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
3.运行yum makecache
更新yum缓存
2. JAVA环境的安装与配置
网上关于CDH使用JAVA包有以下几种说法:
- 不需要卸载系统自带的OPEN JDK,直接安装新的oracle的JDK即可
- 需要卸载OPEN JDK,并且是先安装新的oracle的JDK,后删除OPEN JDK
- 需要卸载OPEN JDK,先删除OPEN JDK,后安装新的oracle的JDK
2.1 卸载OPEN JDK
2.java -version
只能看到目前环境配置的情况,因此使用rpm -qa | grep java
命令来查看相关的安装包安装情况,从下图中我们可以看出,系统里面不止安装了1.7而且1.6也存在。
3.通过命令yum -y remove
命令依次卸载OPEN JDK,例如:
yum -y remove java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64
但是我们从以下的卸载结果来看,在删除OPEN JDK的过程中也删除了很多依赖包,可能会导致日后启动其他应用的时候出现问题,所以卸载的时候请务必谨慎
2.2 安装JDK 1.8
1.先从官网或者本文开头给予的下载地址下载java安装tar包(一定要选64位的)
2.将安装包放到固定目录下,我比较喜欢在/opt/software
目录下,并用过tar命令解压(附赠 tar命令教学)。
tar -zxvf jdk-8u144-linux-x64.tar.gz
3.配置环境文件
解压完之后就要用vim /etc/profile
配置全局环境,并添加以下内容,
JAVA_HOME=/opt/software/jdk1.8.0_144 #java home的地址
JRE_HOME=/opt/software/jdk1.8.0_144/jre #jre的地址
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
然后用命令source /etc/profile
让配置文件立刻生效,并通过以下命令查看配置是否正确
echo $JAVA_HOME
echo $CLASSPATH
echo $PATH
4.用java -version
确认配置是否完成。
3. 配置NTP服务器
3.1 基本命令
rpm -q ntp #查询ntp是否安装
yum install ntp #yum安装ntp
chkconfig ntpd on #设置NTP开机自启动
chkconfig --list ntpd #查看是否设置成功
#成功的话为:ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
NTP结构
由于是实验集群,故只有四台机器,主同步节点是spark001,我先手动设定了时间,接着让主机自同步,然后让集群中的其他服务器时间和主节点同步。集群如下:
- NTP主机:10.6.2.201(spark001)
-
NTP同步机器:
- 10.6.2.224(spark002)
- 10.6.2.214(spark003)
- 10.6.2.213(spark004)
3.2 主NTP节点配置
1.首先手动调整本地时间(默认是内网环境,无法连通外网),然后通过hwclock命令写入硬件时钟。hwclock命令参考 date命令参考
date -s "20170913 14:38:00" #设定本地时间
hwclock -w #写入硬件时钟,-r表示读取硬件时钟
2.修改NTP配置文件,vim /etc/ntp.conf
,并添加如下内容:
#server 10.6.2.201 #要同步的上级服务器地址,因为我这个是内网,我就注销了。如果相同步外网服务器就填外网的IP。
server 127.127.1.0 #设定本地始终为自同步源,当外界联系不上时候就自同步
fudge 127.127.1.0 stratum 10
#如果是封闭集群,屏蔽掉默认server:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
restrict 10.6.2.0 mask 255.255.255.0 nomodify notrap
#这条命令的含义是只允许。10.6.2.0网段的所有机器查询服务器时间,但不能修改和trap远程时间登录
其中restrict参数设定方式为:
restrict [address] mask [netmask_ip] [parameter]
其中parameter的参数主要有:
ignore:拒绝所有类型的ntp连接
nomodify:客户端不能使用ntpc与ntpq两支程式来修改服务器的时间参数
noquery:客户端不能使用ntpq、ntpc等指令来查询服务器时间,等于不提供ntp的网络校时
notrap:不提供trap这个远程时间登录的功能
notrust:拒绝没有认证的客户端
nopeer:不与其他同一层的ntp服务器进行时间同步
3.完成过后,通过以下命令,启动并查看结果。
service ntpd start #启动ntp服务,或者 service ntpd restart 重启服务
ntpq -p #查看对时服务器状态
ntpstat #查看同步状态
3.3 同步节点配置
1.设置NTP服务开机自动,并同步主节点
chkconfig ntpd on #设置NTP开机自启动
chkconfig --list ntpd #查看是否设置成功
#成功的话为:ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpdate -u 10.6.2.201 #同步命令,后面的IP为上级NTP时钟的IP
2.编辑NTP配置文件,vim /etc/ntp.conf
server 10.6.2.201 #添加主节点IP
restrict 10.6.2.201 nomodify notrap noquery #只允许和主节点连接
server 127.127.1.0 # 配置本地时钟
fudge 127.127.1.0 stratum 10
3.完成过后,通过以下命令,启动并查看结果。
service ntpd start #启动ntp服务,或者 service ntpd restart 重启服务
ntpq -p #查看对时服务器状态
ntpstat #查看同步状态
4.配置多台从节点时,可以考虑使用SCP命令来复制配置文件,从而实现快速配置的目的。SCP命令详解
ntpdate -u 10.6.2.201
scp 10.6.2.224:/etc/ntp.conf /etc/ntp.conf
#从spark002这个从节点复制配置文件到本地,不要错复制为主节点了,那就悲剧了。
service ntpd start
4.安装与配置Mysql
我这里的Mysql是用的阿里的源安装的Mysql,版本号5.1.73
4.1 Mysql安装
yum install mysql-server
4.2 配置Mysql
4.2.1 启动mysql服务和设置mysql开机启动
service mysqld start #启动mysql服务
chkconfig mysqld on #设置开机启动
4.2.1 登录Mysql及设置Mysql密码
使用如下代码登录mysql:
mysql -uroot
Mysql中的代码
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('123456') WHERE user = 'root'; #给所有情况下root登录时设置密码123456
mysql> FLUSH PRIVILEGES; #刷新权限
提前创建数据库并授权
# hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# amon
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# hue
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# oozie
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#reports
create database reports DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#授权用户在这些数据库的访问权限
Grant all privileges on *.* to 'root'@'spark001' with grant option;
Flush privileges;