给一个小家伙装机时,我需要转到命令行界面进行操作,而它总是显示UI界面而不是命令行,我还以为是下载的VM版本不对,
上网搜了搜,自己操作了一下,在新建完虚拟后登录,然后同时 ctrl+alt+F5 就能切换到命令行操作界面,卡了好一会,我这个脑子啊。
参考链接:虚拟机怎么从图形界面转到命令行(去掉桌面)_vmware怎么进入命令行_虾仁猪心185的博客-CSDN博客
虚拟机软件(VMware官网)
Windows 虚拟机 | Workstation Pro | VMware | CN
使用虚拟机软件安装CentOS 7
Mirror List,这个是首页
centos-7-isos安装包下载_开源镜像站-阿里云,我下载的是首页中的这个
安装终端工具
MobaXterm,下载就行
下载 64位JDK(7/8) RPM安装包
Java Archive | Oracle
下载 hadoop2.x 安装包 我们使用的hadoop版本是 2.7.7
http://archive.apache.org/dist/hadoop/common/
前序下载VM及新建虚拟机,选择本地CentOS7,时间设置,打开以太网开关,我选择中文(英语好选英文)
打卡这个 以太网,同时要记录的是ip地址,默认路由,DNS的地址,后面会用到,我一般是直接截图保存一下,后面用直接看。
NTP服务器
s1
s2:
root密码设置为(自己随便设计)
注意:电脑的防火墙一定要关掉!!!!
进去后用:
yum install -y openssh-server vim gcc gcc-c++ glibc-headers
bzip2-devel lzo-devel curl wget openssh-clients zlib-devel autoconf automake
cmake libtool openssl-devel fuse-devel snappy-devel telnet unzip zip net-tools.x86_64
firewalld systemd ntp unrar bzip2
基本的需要两个就够了,hadoop,JDK
#查看防火墙状态:
firewall-cmd --state
#关闭防火墙:
systemctl stop firewalld.service
#禁止防火墙开机启动:
systemctl disable firewalld.service
#查看服务是否开机启动:
systemctl is-enabled firewalld.service
#查看关闭状态
/usr/sbin/sestatus -v
#编辑文件
vim /etc/selinux/config
#启动之后用命令:
/usr/sbin/sestatus -v
#查看selinux的修改状态
#解压
rpm -ivh jdk-8u144-linux-x64.rpm
-ivh:安装时显示安装进度
#在文件尾部追加以下内容,如下图
vi /etc/profile
#配置java环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#使修改生效
source /etc/profile
#查看系统变量值
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/java/jdk1.8.0_144/bin:/usr/java/jdk1.8.0_144/bin
#检查JDK 配置情况
java -version
#显示如下就算成功了
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
注意三台都要配置这个
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。
#安装npt
yum -y install ntp
同步成为阿里云服务器时间
控制台输入:
#控制台键入
ntpdate time1.aliyun.com >> /tmp/autontpdate 2>&1
#控制台输入:
crontab -e
在文件中编辑如下内容:
#整点同步时间
0 * * * * /usr/sbin/ntpdate time1.aliyun.com >> /tmp/autontpdate 2>&1
修改主机名并查看,我这是三台机器都改,我们可以自己设置集群主机名字,一般三台的设置为:
#master,worker1,worker2,也有设置为slave1slave2
#主节点执行
hostnamectl set-hostname master
#设置完后可以再使用hostname查看一下是否修改成功:
hostname
#从节点1执行
hostnamectl set-hostname worker1
#从节点2执行
hostnamectl set-hostname worker2
master
worker1
改名字都后面就会变了,reboot也行
创建hadoop 用户
useradd hadoop
设置密码
passwd hadoop
密码为:admin
三台都一样
su 一下
三台机器我都加了hadoop用户,并设置密码为admin,与root用户密码一样
通常情况下,一般用户通过执行“su -”命令、输入正确的root密码,可以登录为root用户来对系统进行管理员级别的配置。
但是,为了更进一步加强系统的安全性,有必要建立一个管理员的组,只允许这个组的用户来执行 “su -” 命令登录为 root 用户,而让其他组的用户即使执行 “su -” 、输入了正确的 root 密码,也无法登录为 root 用户。在UNIX和Linux下,这个组的名称通常为 “wheel” 。
su 时要求 这个用户必须加入到wheel组,否则权限不足
su root
#修改/etc/pam.d/su文件,将“#auth\t\trequired\tpam_wheel.so”,替换成“auth\t\trequired\tpam_wheel.so”
sed -i 's/#auth\t\trequired\tpam_wheel.so/auth\t\trequired\tpam_wheel.so/g' '/etc/pam.d/su'
#修改/etc/pam.d/su文件,将字符串“#auth\t\tsufficient\tpam_wheel.so”替换成“auth\t\tsufficient\tpam_wheel.so”
sed -i 's/#auth\t\tsufficient\tpam_wheel.so/auth\t\tsufficient\tpam_wheel.so/g' '/etc/pam.d/su'
只有wheel组可以su 到root
#备份
cp /etc/login.defs /etc/login.defs_back
# 把“SU_WHEEL_ONLY yes”字符串追加到/etc/login.defs文件底部
echo "SU_WHEEL_ONLY yes" >> /etc/login.defs
tail /etc/login.defs
#从文件底部查看,是有的
#把hadoop用户加到wheel组里
gpasswd -a hadoop wheel
#查看wheel组里是否有hadoop用户
cat /etc/group | grep wheel
为什么呢,我们一台主机master,两台worker,主机要可以随意访问worker,worker不能随意访问主机master,worker之间可以互相访问,在master,worker上执行如下操作,主机master,worker1及worker2上的命令:
su hadoop
mkdir ~/.ssh
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
如果报错:
chmod: 无法访问"/home/hadoop/.ssh/authorized_keys": 没有那个文件或目录,
那我们这么解决
先看一下有没有这文件,
ls -al ~/.ssh
如master中没有的话我们新建一下,注意这里我们用的是worker来看的(实际上只要master上会有authorized_keys这个操作)当然,你可以都配置免密呗,这个看自己。
touch ~/.ssh/authorized_keys
然后在执行操作就可以
把master的公钥扔到worker1和worker2上面去,这两个机器接受了,master就可免密登录
在master上执行命令如下
scp /root/.ssh/authorized_keys user@worker1:/root/.ssh/
scp /root/.ssh/authorized_keys user@worker2:/root/.ssh/
但是这样太麻烦了
#我用这个
ssh-copy-id worker1
ssh-copy-id worker2
我们可以直观的在worker1及worker2如下目录下看到前后的对比执行情况
从master免密到worker1,worker2
同样使用这个命令
ssh-copy-id hadoop-worker2
ssh-copy-id hadoop-worker1
[hadoop@hadoop-master root]$ ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.20.128 netmask 255.255.255.0 broadcast 192.168.20.255
inet6 fe80::666b:bc2:cfef:b77c prefixlen 64 scopeid 0x20
ether 00:0c:29:84:fb:36 txqueuelen 1000 (Ethernet)
RX packets 30040 bytes 2138384 (2.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 67355 bytes 7719890 (7.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 74 bytes 6220 (6.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 74 bytes 6220 (6.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#配置配置文件
cd /etc/sysconfig/network-scripts/
#修改ifcfg-ens33
vi icfg-ens33
进入如下界面
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fa278d3e-e01e-4f16-b6e0-889c927c82ad"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.20.128
PREFIX=24
GATEWAY=192.168.20.2
DNS=192.168.20.2
配置完后,用
#重启网络服务
systemctl restart network.service
重启网络服务,当前的ssh就连接不上了,是因为网络IP被改变成你自己设置的静态IP。
上不了网正常,网络IP被改变成你自己设置的静态IP。要执行下面操作
#查看nameserver是否被设置正确
cat /etc/resolv.conf
[root@hadoop-master network-scripts]# cat /etc/resolv.conf
vi /etc/resolv.conf 修改文件,如果不存在nameserver就在文件下面添加,如果存在就修改,把nameserver 设置成自己对应的DNS。
[root@hadoop-master network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManager
search hadoop
nameserver 192.168.20.2
#停止NetworkManager服务
systemctl stop NetworkManager.service
#并设置成开机不启动
systemctl disable NetworkManager.service
#重启网络服务
systemctl restart network.service
[root@hadoop-master network-scripts]# systemctl stop NetworkManager.service
[root@hadoop-master network-scripts]# systemctl disable NetworkManager.service
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
[root@hadoop-master network-scripts]# systemctl restart network.service
[root@hadoop-master network-scripts]# ping www.baidu.com
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=128 time=27.3 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=128 time=28.6 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=3 ttl=128 time=30.6 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=4 ttl=128 time=28.2 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 27.382/28.723/30.671/1.227 ms
ping一下百度
基本环境配置完毕
我们安装了三台虚拟机,一台主,两台从,安装完使用MobaXterm来操作
上传文件,关闭防火墙,关闭SElinux,并安装JDK,配置NTP服务器,创建hadoop用户,配置ssh秘钥并验证,配置静态IP,修改对应文件ifcfg-ens33,最后验证网络服务。这基本上完成基本功能的搭建。
后续安装别的大数据组件呗,写这东西真费劲啊,不过还挺有趣,前面创建虚拟机省略部分步骤,其他的都很完整!我真牛逼!