当前位置: 首页>编程语言>正文

大数据学习环境准备[3] - Linxu及其他软件配置

qdice007@gmail.com 2017-12-21 13:05

写在前面的废话

我们至少需要三台虚拟机来组建大数据集群,所以,重复第1篇和第2篇的操作,再创建两个虚拟机,这三台不一样的地方就只是配置"网络和主机名"的地方,填入不同的主机名,比如我的主机名配置就是 bd-1, bd-2, bd-3

另外,可能我比较笨吧,建议不要只装好第一台虚拟机,就使用克隆来创建另外两台主机,还是一台一台装吧.

从现在开始,保持主机处于可以访问Internet的状态,因为我们需要实时联网安装一些软件.

开始

CentOS 7配置

1. 关闭selinux

查看selinux当前的配置

[libing@bd-1 ~]$ cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

需要把其中的 SELINUX=enforcing 改为 SELINUX=disabled

sudo vi /etc/selinux/config

改完后保存文件退出vi,可以马上重启机器使之生效,也可以和下面防火墙的配置改完后一起重启.

2. 关闭防火墙

查看防火墙的状态,CentOS 7的防火墙改用firewall了,而不再是iptables

[libing@bd-1 ~]$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2017-12-21 14:13:31 CST; 1h 34min ago
     Docs: man:firewalld(1)
 Main PID: 759 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─759 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

12月 21 14:13:31 bd-1 systemd[1]: Starting firewalld - dynamic firewall daemon...
......一大坨别的信息,此处略去

关闭并禁用防火墙,使其不再开机自行启动

[libing@bd-1 ~]$ sudo systemctl stop firewalld
[sudo] libing 的密码:
[libing@bd-1 ~]$ sudo systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

再次查看防火墙运行状态

[libing@bd-1 ~]$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

12月 21 14:13:31 bd-1 systemd[1]: Starting firewalld - dynamic firewall daemon...
......还是一大坨,此处略去

可以看到,防火墙是inactive(dead)状态了.
重启虚拟机.

3. 查看ssh服务状态,在虚拟机里操作总是比较别扭的,尤其是还没有图形界面的时候,所以,我们需要在主机里,通过ssh客户端软件(例如SecureCRT,Xshell,putty等),连接虚拟机的ssh端口(22),登录进虚拟机操作系统的Linux命令行.开启虚拟机,使用普通用户登录进去,查看ssh服务状态.
sudo systemctl status sshd.service

解释一下这条命令:

  • sudo表示你要使用超出你身份的系统权限,第一次使用,它会告诉你三件事,然后再要求你输入你这个用户的密码
  • systemctl全面接管了原来service和chkconfig命令的工作,命令格式也有所不同,详细使用说明自己bing或google一下吧

输出的结果中,加亮显示的"active(running)"表示ssh服务正在运行,其他的信息我们不用理会.


大数据学习环境准备[3] - Linxu及其他软件配置,第1张
查看ssh服务状态
4. 测试主机和虚拟机之间的网络连通性,打开主机的CMD命令行,ping一下虚拟机的网址,如下,证明网络是通的:
> ping 192.168.206.135

正在 Ping 192.168.206.135 具有 32 字节的数据:
来自 192.168.206.135 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.206.135 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.206.135 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.206.135 的回复: 字节=32 时间<1ms TTL=64

192.168.206.135 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms
5. 主机中使用Xshell来连接虚拟机,Xshell对个人和学生是免费的(官网原话是Xshell is free for home and school use),还是尽量不要用破解的SecureCRT吧.打开Xshell,点击菜单"文件"中的"新建...",分别在"连接"和"用户身份验证"中输入名称(自己随意起),主机(IP地址),用户名(安装CentOS时创建的普通用户)和密码,最后点击"确定按钮"保存
大数据学习环境准备[3] - Linxu及其他软件配置,第2张
连接

大数据学习环境准备[3] - Linxu及其他软件配置,第3张
身份验证
6. 接着会自动出现如下图的对话框,选中"bigdata-1",点击"连接"
大数据学习环境准备[3] - Linxu及其他软件配置,第4张
连接列表
7. 由于是第一次连接,所以需要点击"接受并保存"来自虚拟机的主机密钥,然后就可以顺利进入虚拟机的Linux命令行了
大数据学习环境准备[3] - Linxu及其他软件配置,第5张
接受并保存密钥
8. 使用YUM更新系统,并安装一些大数据要求的Linux组件,以及其他工具软件
Last login: Thu Dec 21 13:15:12 2017
[libing@bigdata-1 ~]$ hostname
bigdata-1
[libing@bigdata-1 ~]$ ifconfig
-bash: ifconfig: 未找到命令
[libing@bigdata-1 ~]$ java -version
-bash: java: 未找到命令

连ifconfig(用于查看网卡信息,主要是IP地址),JDK都没装,可见这Minimal版多干净.
我们来联网安装一些东西,首先使用YUM更新一下系统

[libing@bigdata-1 ~]$ sudo yum update
[sudo] libing 的密码:
已加载插件:fastestmirror
base 
extras 
updates 
(1/4): base/7/x86_64/group_gz 
(2/4): extras/7/x86_64/primary_db 
(3/4): base/7/x86_64/primary_db 
(4/4): updates/7/x86_64/primary_db 
Determining fastest mirrors
 * base: mirrors.shuosc.org
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 NetworkManager.x86_64.1.1.8.0-9.el7 将被 升级
---> 软件包 NetworkManager.x86_64.1.1.8.0-11.el7_4 将被 更新
---> 软件包 NetworkManager-libnm.x86_64.1.1.8.0-9.el7 将被 升级
---> 软件包 NetworkManager-libnm.x86_64.1.1.8.0-11.el7_4 将被 更新
......
......中间好多内容,此处略去
......
事务概要
===============
安装   5 软件包
升级  53 软件包

总下载量:113 M
Is this ok [y/d/N]: 

输入 y回车 就可以更新了,由于没有WiFi,我就不更新了,见谅.
接着安装一些其他工具(有些可能系统已经装了,顺便检查一下也没关系,YUM会自动智能处理),安装过程中如有暂停,问你输入y或N,输入 y 并按 回车 就行了.

[libing@bigdata-1 ~]$ sudo yum install openssh rsync bzip2 net-tools wget 
[sudo] libing 的密码:
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.shuosc.org
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
......
......中间又是一大坨,此处略去
......
已安装:
  bzip2.x86_64 0:1.0.6-13.el7    net-tools.x86_64 0:2.0-0.22.20131004git.el7   
  rsync.x86_64 0:3.0.9-18.el7   wget.x86_64 0:1.14-15.el7_4.1                          

更新完毕:
  openssh.x86_64 0:7.4p1-13.el7_4   

作为依赖被升级:
  openssh-clients.x86_64 0:7.4p1-13.el7_4    openssh-server.x86_64 0:7.4p1-13.el7_4   
完毕!

注意!!! 从现在开始,使用的都是之前搭建好的三台虚拟机,所以主机名以及IP地址和文章前面使用的不一样了.

9. 配置三台虚拟机之间的ssh免密登录

首先,把三台虚拟机的主机名和IP地址收集好,在每台虚拟机上执行如下命令来查看

[libing@bd-1 ~]$ hostname
bd-1
[libing@bd-1 ~]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.206.132  netmask 255.255.255.0  broadcast 192.168.206.255
......后面又是一大坨,此处略去

最终三台虚拟机的收集结果就是

  • 192.168.206.132 bd-1
  • 192.168.206.133 bd-2
  • 192.168.206.134 bd-3
    使用vi编辑器,将上面内容写入 /etc/hosts 文件的最后并保存
sudo vi /etc/hosts

这个文件的作用就是把主机名和IP地址对应起来,这样以后的一些操作或配置中,可以直接使用主机名,系统或其他软件可以根据这个文件中的对应关系,找到主机名对应的IP地址.
使用ping命令测试一下,例如,在bd-1虚拟机上ping其他两台虚拟机

[libing@bd-1 ~]$ ping -c 5 bd-2
PING bd-2 (192.168.206.133) 56(84) bytes of data.
64 bytes from bd-2 (192.168.206.133): icmp_seq=1 ttl=64 time=0.637 ms
64 bytes from bd-2 (192.168.206.133): icmp_seq=2 ttl=64 time=1.00 ms
64 bytes from bd-2 (192.168.206.133): icmp_seq=3 ttl=64 time=1.07 ms
64 bytes from bd-2 (192.168.206.133): icmp_seq=4 ttl=64 time=0.786 ms
64 bytes from bd-2 (192.168.206.133): icmp_seq=5 ttl=64 time=0.775 ms

--- bd-2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4013ms
rtt min/avg/max/mdev = 0.637/0.854/1.075/0.164 ms
[libing@bd-1 ~]$ ping -c 5 bd-3
PING bd-3 (192.168.206.134) 56(84) bytes of data.
64 bytes from bd-3 (192.168.206.134): icmp_seq=1 ttl=64 time=1.06 ms
64 bytes from bd-3 (192.168.206.134): icmp_seq=2 ttl=64 time=0.862 ms
64 bytes from bd-3 (192.168.206.134): icmp_seq=3 ttl=64 time=0.781 ms
64 bytes from bd-3 (192.168.206.134): icmp_seq=4 ttl=64 time=0.756 ms
64 bytes from bd-3 (192.168.206.134): icmp_seq=5 ttl=64 time=0.815 ms

--- bd-3 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4011ms
rtt min/avg/max/mdev = 0.756/0.855/1.062/0.110 ms

下面在bd-1虚拟机上配置ssh到其他两台虚拟机不需要密码.首先需要在bd-1上生成公钥/私钥对

[libing@bd-1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/libing/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/libing/.ssh/id_rsa.
Your public key has been saved in /home/libing/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MrrWf67vQ5Qf09QcYOsRmjWVIJyZ6ymntFOElGS1OoE libing@bd-1
The key's randomart image is:
+---[RSA 2048]----+
|        .o+o+B+=o|
|        oo =B =.o|
|       E...=.=   |
|         .=o+ o  |
|      o S+o..+   |
|     . o oo=.    |
|    ..  ..*      |
|    ...  +o      |
|   ..  .o*=.     |
+----[SHA256]-----+

连续按三次回车即可完成.会自动在当前用户的家目录下,建立 .ssh 目录,并在该目录下写入三个文件

[libing@bd-1 ~]$ ll ~/.ssh/
总用量 12
-rw-------. 1 libing libing 1675 12月 21 14:26 id_rsa
-rw-r--r--. 1 libing libing  393 12月 21 14:26 id_rsa.pub
-rw-r--r--. 1 libing libing  364 12月 20 12:37 known_hosts

其中 id_rsa 文件中保存了 私钥 ,而 id_rsa.pub 中保存了 公钥 .

在其他两台(bd-2和bd-3)中,使用libing用户,同样做一遍上述所有内容.

现在,以配置"bd-1虚拟机通过ssh访问bd-2不需要密码"为例,说明配置方法
将bd-1的公钥文件远程拷贝到bd-2的相同目录下

[libing@bd-1 ~]$ scp ~/.ssh/id_rsa.pub libing@bd-2:/home/libing/
The authenticity of host 'bd-2 (192.168.206.133)' can't be established.
ECDSA key fingerprint is SHA256:QNxHAL+gpIMhnXJA3dDzootU5/garFmxLRgsycheHrU.
ECDSA key fingerprint is MD5:a4:38:55:30:30:63:e9:fc:79:8e:5d:47:12:8d:85:a5.
Are you sure you want to continue connecting (yes/no)yes
Warning: Permanently added 'bd-2,192.168.206.133' (ECDSA) to the list of known hosts.
libing@bd-2's password: 
id_rsa.pub                    100%  393   243.6KB/s   00:00 

第一次使用scp(远程拷贝)还是需要确认(输入yes),然后还需要输入bd-2上libing的用户密码,才能将文件拷贝过去,简单解释一下这条命令

  • scp命令格式: scp 本地文件 远程主机的用户名@远程主机名:远程主机目录
  • 符号 ~ 表示当前用户的家目录(比如在这里就是代指 /home/libing 目录)
  • 要注意,是把bd-1的公钥文件拷贝到了bd-2的家目录下(而不是家目录下的.ssh目录)
    下面切换到bd-2虚拟机的命令行中,将bd-1虚拟机的公钥文件内容拷入 .ssh 目录下的authorized_keys文件,并修改其权限属性(该文件必须是600权限)
[libing@bd-2 ~]$ cd ~
[libing@bd-2 ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[libing@bd-2 ~]$ chmod 600 .ssh/authorized_keys 

现在验证bd-1是否可以免密码ssh登录到bd-2虚拟机了,切换回bd-1虚拟机的命令行

[libing@bd-1 ~]$ ssh bd-2
Last login: Thu Dec 21 14:25:38 2017 from 192.168.206.1
[libing@bd-2 ~]$ hostname
bd-2
[libing@bd-2 ~]$ exit
登出
Connection to bd-2 closed.

总结一下,通过以下三个步骤完成了A机器到B机器的ssh免密码登录:

  1. 在A机器某用户下生成公钥/私钥对(通过 ssh-keygen -t rsa 命令)
  2. 远程拷贝A机器某用户的公钥文件id_rsa.pub到B机器的某用户家目录下(通过scp命令)
  3. 在B机器上,将A机器的公钥文件内容添加进 .ssh目录下的authorized_keys文件,并且修改authorized_keys文件的权限属性(600)

捋一下吧,要做到三台虚拟机之间,任意两台之间ssh登录免密,需要完成如下每一项

  • bd-1 免密访问 bd-2
  • bd-1 免密访问 bd-3
  • bd-2 免密访问 bd-1
  • bd-2 免密访问 bd-3
  • bd-3 免密访问 bd-1
  • bd-3 免密访问 bd-2
    把ssh免密登录的配置方法走六遍就ok了.

重要补充
有时候,需要ssh免密访问自己,例如在bd-1虚拟机中,执行

[libing@bd-1 ~]$ ssh bd-1

这时可能还需要要求输入密码,那么就需要先执行

[libing@bd-1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

也就是把自己的公钥文件内容添加到authorized_keys文件中.
为了方便以后的操作,建议在每台虚拟机上都执行一下上面这行命令.

安装JDK

1. 在每台虚拟机的libing账户家目录下都创建 softwares 目录,用来存放所需要安装的软件包(例如JDK,hadoop什么的)
[libing@bd-1 ~]$ cd
[libing@bd-1 ~]$ mkdir softwares
2. 选择任一台虚拟机(例如bd-1)安装图形桌面环境,因为需要访问多个网站,并下载我们需要的软件包,当然,也可以在主机的浏览器中获取软件包的下载链接,然后在虚拟机的命令行使用wget来下载也可以.不过,受Windows的毒害这么多年,还是有个图形桌面操作的舒服一些,下面的命令用来安装GNOME桌面环境,当然你也可以装别的,例如XFCE什么的.
[libing@bd-1 ~]$ sudo yum groupinstall "GNOME Desktop"
......
......中间又是一大坨,此处略去
......
事务概要
=======================
安装  285 软件包 (+703 依赖软件包)
总下载量:654 M
安装大小:2.0 G
Is this ok [y/d/N]:

输入y并回车就可以安装了.
安装完之后还需要再安装个浏览器(Firefox),再配置成下次打开虚拟机直接登录图形桌面环境

[libing@bd-1 ~]$ sudo yum install firefox
......
......此处略去Firefox的安装过程
......
[libing@bd-1 ~]$ sudo systemctl set-default graphical.target
3. 下载JDK软件包,存入softwares目录,并远程拷贝到其他虚拟机

在具有图形桌面环境的虚拟机中,打开Firefox浏览器,访问Oracle网站,找到JDK的下载链接,版本就选1.8的吧,毕竟现在Hadoop 3.0都发布了,明确要求JDK是1.8,另外,下载的是 .tar.gz 结尾的压缩包,和 .rpm 结尾的相比,就是"绿色版"和"安装版"的区别.

[libing@bd-1 ~]$ ll softwares/
总用量 580100
-rw-rw-r--. 1 libing libing 189784266 12月 11 22:49 jdk-8u152-linux-x64.tar.gz

远程拷贝到bd-2和bd-3虚拟机

[libing@bd-1 ~]$ scp softwares/jdk-8u152-linux-x64.tar.gz libing@bd-2:/home/libing/softwares/
jdk-8u152-linux-x64.tar.gz     100%  181MB  42.5MB/s   00:04    
[libing@bd-1 ~]$ scp softwares/jdk-8u152-linux-x64.tar.gz libing@bd-3:/home/libing/softwares/
jdk-8u152-linux-x64.tar.gz     100%  181MB  81.0MB/s   00:02    
4. 安装与配置JDK

在bd-1虚拟机的命令行上解压下载的JDK软件包

[libing@bd-1 ~]$ cd
[libing@bd-1 ~]$ tar -xzf jdk-8u152-linux-x64.tar.gz -C /home/libing/
[libing@bd-1 ~]$ ll
总用量 4
drwxr-xr-x. 8 libing libing 255 9月  14 17:27 jdk1.8.0_152
drwxrwxr-x. 2 libing libing 148 12月 20 20:09 softwares
[libing@bd-1 ~]$ ll jdk1.8.0_152/
总用量 25936
drwxr-xr-x. 2 libing libing     4096 9月  14 17:25 bin
-r--r--r--. 1 libing libing     3244 9月  14 17:24 COPYRIGHT
drwxr-xr-x. 4 libing libing      122 9月  14 17:24 db
drwxr-xr-x. 3 libing libing      132 9月  14 17:24 include
-rw-r--r--. 1 libing libing  5202883 9月  14 14:34 javafx-src.zip
drwxr-xr-x. 5 libing libing      185 9月  14 17:25 jre
drwxr-xr-x. 5 libing libing      245 9月  14 17:25 lib
-r--r--r--. 1 libing libing       40 9月  14 17:24 LICENSE
drwxr-xr-x. 4 libing libing       47 9月  14 17:24 man
-r--r--r--. 1 libing libing      159 9月  14 17:24 README.html
-rw-r--r--. 1 libing libing      424 9月  14 17:24 release
-rw-r--r--. 1 libing libing 21117451 9月  14 17:24 src.zip
-rw-r--r--. 1 libing libing    63933 9月  14 14:34 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r--. 1 libing libing   145180 9月  14 17:24 THIRDPARTYLICENSEREADME.txt

创建链接

[libing@bd-1 ~]$ sudo ln -s /home/libing/jdk1.8.0_152/ /usr/local/jdk

配置环境变量,修改 /etc/profile 文件

[libing@bd-1 ~]$ sudo vi /etc/profile

在文件的最后增加如下内容,然后保存退出

# Added for JDK
JAVA_HOME=/usr/local/jdk/
export JAVA_HOME
PATH=${JAVA_HOME}/bin:$PATH
export PATH

使之马上生效,并验证java是否已可用

[libing@bd-1 ~]$ source /etc/profile
[libing@bd-1 ~]$ java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

结束


https://www.xamrdz.com/lan/5jn2016563.html

相关文章: