1 设置主机名
安装CentOS 7后系统会自动将主机名确定为localhost,用户一般都希望将这个localhost修改成个性化的主机名,如Master、Slave0或HadoopMaster等。下面我们就来修改前面安装的虚拟机的主机名,包括Master和Slave,也就是说,修改主机名的操作要在集群中所有虚拟机上进行。
要特别注意的是,设置主机名需要Root用户权限,请输入“su root”命令。cd /etc/sysconfig/
输入命令:vi network
权限不够:sudo chmod -R 777 network
# Created by anaconda NETWORKING=yes HOSTNAME=master
之后输入:hostname master
验证是否生效
同理配置其他虚拟机
2 修改host
输入命令:vi /etc/hosts
192.168.99.129 master 192.168.99.130 slave0 192.168.99.131 slave1
3 关闭防火墙
防火墙是一种位于计算机和它所连接的网络之间的安全功能软件,一般分为网络层防火墙(Network Level Firewall)和应用层防火墙(Application Level Firewall)两种。
网络层防火墙本质上就是IP包过滤软件,它依据一定的安全规则对IP包进行检测,允许授权数据包通过,拒绝非授权数据包通过。网络层防火墙还可以关闭不使用的端口,或者禁止特定端口的流量,以阻止来自特殊站点的访问。网络层防火墙处于操作系统的网络层,是内核的一部分,具有较高的效率和准确性。
应用层防火墙工作在TCP/IP协议堆栈的应用层上。Web访问、电子邮件和FTP文件传输所产生的数据流都属于应用层。应用层防火墙基于应用层协议对数据进行扫描和安全处理,通常会直接丢弃不安全的数据包。
Linux防火墙主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。大数据应用系统通常部署在Linux集群上,一般属于内部网络平台,且计算机之间关系十分密切,通信频繁,因此不需要启用防火墙。
1.检查系统防火墙状态
- 命令:
systemctl status firewalld.service
启动中…
2.关闭防火墙
命令:systemctl stop firewalld.service
永久关闭防火墙:systemctl disable firewalld.service
4 对所有集群发送统一命令
5 固定ip地址
地址:CentOS 6和CentOS 7各种区别(固定ip地址和防火墙关闭)
5 免密配置
大数据集群中的计算机之间需要频繁通信,但是Linux系统在相互通信中需要进行用户身份认证,也就是输入登录密码。在集群规模不大的情况下,在每次登录时输入密码认证,所需要的操作时间尚且不多。但是,如果集群有几十台、上百台甚至上千台计算机,频繁的认证操作会大大降低工作效率,这也是不切实际的,因此,实际中的集群都需要进行免密钥登录配置。
免密钥登录是指两台计算机之间使用SSH连接时不需要用户名和密码。SSH(Secure Shell Protocol,安全外壳协议)是一种在不安全网络上提供安全远程登录及其他安全网络服务的协议。在默认状态下,SSH连接是需要密码认证的,但是可以通过修改系统认证,使系统通信免除密码输入和SSH认证。
下面的配置分为在Master节点的操作和在所有Slave节点上的操作,同时要注意,这里使用的是普通账户,所以如果目前处于Root用户,则需要切换回普通用户状态(输入exit命令可退出Root用户)。
5.1 Master节点的配置
1.命令:ssh-keygen -t rsa
“ssh-keygen”是用来生成private和public密钥对的命令,将public密钥复制到远程计算机后,就可以使SSH到另外一台计算机的登录(不用密码登录)。“ssh-keygen”通过参数-t指定加密算法,这里的参数rsa表示采用RSA加密算法。RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解这种数学难题,是应用最广泛的非对称加密算法之一。
生成的密钥在.ssh目录下,切换到该目录后可以通过“ls -l”命令查看。
需要将公钥文件改名后复制到“/.ssh/”目录下。
命令: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
复制的目的是为了便于修改该文件的权限,请使用“chmod 600 ~/.ssh/authorized_keys”命令进行修改。
将authorized_keys复制到所有的Slave,这里需要分别复制到Slave0和Slave1,命令是scp ~/.ssh/authorized_keys csu@slave0:~/和命令scp ~/.ssh/authorized_keys csu@slave1:~/。
5.2 Slave的配置
完成Master的配置后,需要转到Slave上进行配置。
1.使用ssh-keygen命令生成密钥,如图3-69所示,一路按Enter键即可。
注:密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。所以不用-t 后面的也可以
2.将authorized_keys(注意,这个文件是从Master复制过来的)文件移动到“/.ssh/”目录下,采用的命令是mv authorized_keys ~/.ssh。
3.修改authorized_keys文件的权限。先使用“cd”命令切换到“/.ssh/”目录,再输入命令chmod 600 authorized_keys修改authorized_keys文件的权限。
至此,免登录密钥的配置就完成了。
4.验证
下面来验证一下配置是否有效。在Master上执行“ssh slave0”命令来登录Slave0,如果登录成功,并且无须输入登录密码,证明配置完成。
要退出远程计算机回到本地计算机,只要输入“exit”命令即可。
5.最后相互配置完成互相免密登录
6 卸载自带数据库
由于CentOS 7已经存在MariaDB安装包,因此在安装MySQL前需要先将其删除。输入命令rpm -qa | grep mariadb可以检查现有的MariaDB安装包。
rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64
6 常见问题
6.1 普通用户操作某个文件或文件夹中操作权限不足
is not in the sudoers file
解决方案:
首需要切换到root身份
$su -
(注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用户的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样)
然后
$visudo //切记,此处没有vi和sudo之间没有空格
1、移动光标,到最后一行
2、按a,进入append模式
3、输入
your_user_name ALL=(ALL) ALL
4、按Esc
5、输入“:w”(保存文件)
6、输入“:q”(退出)
这样就把自己加入了sudo组,可以使用sudo命令了。+
2.Linux 配置Permission denied
开放所有权限:命令行执行 sudo chmod -R 777 路径
3.删除文件夹
删除一个文件,可通过 rm 命令删除一个文件。
删除一文件夹,可通过 rm -rf命令删除目录。
6.2 80端口占用
6.2.1 Linux 查看端口占用情况
Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。
6.2.2 lsof
lsof(list open files)是一个列出当前系统打开文件的工具。
lsof 查看端口占用语法格式:
lsof -i:端口号
6.2.3 实例
查看服务器 8000 端口的占用情况:
# lsof -i:8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nodejs 26993 root 10u IPv4 37999514 0t0 TCP *:8000 (LISTEN)
可以看到 8000 端口已经被轻 nodejs 服务占用。
lsof -i 需要 root 用户的权限来执行,如下图:
更多 lsof 的命令如下:
lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件abc.txt的进程 lsof -c abc:显示abc进程现在打开的文件 lsof -c -p 1234:列出进程号为1234的进程所打开的文件 lsof -g gid:显示归属gid的进程情况 lsof +d /usr/local/:显示目录下被进程开启的文件 lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长 lsof -d 4:显示使用fd为4的进程 lsof -i -U:显示所有打开的端口和UNIX domain文件
6.2.4 netstat
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
1
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
例如查看 8000 端口的情况,使用以下命令:
# netstat -tunlp | grep 8000 tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 26993/nodejs
更多命令:
netstat -ntlp //查看当前所有tcp端口 netstat -ntulp | grep 80 //查看所有80端口使用情况 netstat -ntulp | grep 3306 //查看所有3306端口使用情况
6.2.5 kill
在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令:
kill -9 PID
如上实例,我们看到 8000 端口对应的 PID 为 26993,使用以下命令杀死进程:
kill -9 26993