1. 实验场景与整体思路拆解
1.1 这个实验到底在解决什么问题
做大数据和数据库实验,最大的痛点不是你写不出那几行SQL,也不是搞不懂Hadoop的MapReduce原理,而是环境根本起不来。我见过太多同学在实验报告里写着“实验结果正确”,实际上连集群都没启动成功,全靠脑补。说白了,大数据实验的核心前提是:你得先有一台能稳定连接的Linux环境,能把JDK、Hadoop、MySQL这些东西传上去,能看得见日志,能改得了配置文件。
这次实验的标题是“FinalShell连接主机和Ubuntu(二)”,从序号就能看出来,这已经是系列操作的第二篇。上一篇大概率是把VMware虚拟机里的Ubuntu装好、把基础环境调通,这一篇的核心任务就是解决“怎么让Windows主机和Ubuntu虚拟机之间建立一条稳定、好用、看得见摸得着的连接通道”。
为什么大家都卡在这一步?因为大数据实验不是单机游戏。你在Windows上写完代码,要传到Linux上编译运行;你在Linux上启动Hadoop集群,要在Windows上查看日志和监控状态;你要在数据库里建表导数据,总不能在虚拟机里瞪着眼睛看命令行输出。所以这条“通道”的质量,直接决定你后面所有实验的效率。
1.2 为什么选择FinalShell而不是其他工具
市面上能连Linux的工具不少,Xshell、Putty、SecureCRT、MobaXterm,各有各的拥趸。但FinalShell在这几年的实验场景里几乎是统治级的,原因不复杂:它是国产工具,免费版已经覆盖了学生做实验的绝大多数需求;它自带SFTP文件管理,左边是Windows文件、右边是Linux文件,拖拽就能上传,比Xshell需要单独配Xftp方便太多;它的监控面板能直接看到CPU、内存、磁盘IO曲线,启动Hadoop的时候你能肉眼看到内存被撑起来的过程,这对理解集群资源消耗特别有帮助。
另外说句实话,FinalShell的界面是中文的,对刚接触Linux的同学非常友好。你用Xshell连上之后还得记一堆快捷键,用FinalShell基本零学习成本,左侧文件树、右侧终端、底部监控,布局一目了然。我自己的习惯是:生产环境用MobaXterm多一点,但给学生上课、带实验课、自己快速调试虚拟机,FinalShell顺手到不需要思考。
有一个细节很多人不知道:FinalShell的4.3.10版本在激活这块有专门的教程,网上搜“finalshell 4.3.10 激活”能找到不少方法。但说实话,免费版功能已经足够实验用了,专业版的多余功能在课程设计和大数据实验里基本用不上。我建议别折腾什么激活,直接用官网下载的免费版就行,省心省力。
1.3 实验的完整链路和前置条件
这个实验看起来只是“打开FinalShell,输IP和密码,点连接”,但背后其实有一条完整的链路。先把这条链路理清楚,后面排查问题的时候才不会抓瞎。
整个连接过程大概是这样的:
- Ubuntu虚拟机里必须安装并启动SSH服务(OpenSSH Server),这是Linux系统对外提供远程登录功能的守门员;
- 虚拟机网络配置必须正确,Windows主机能ping通虚拟机的IP地址,这是网络层的连通性前提;
- FinalShell作为SSH客户端,用正确的协议(SSH)、端口(默认22)、用户名和密码发起连接请求;
- 连接成功后,FinalShell会启动终端会话和SFTP文件传输会话,两条通道各司其职。
前置条件有三个:第一,Ubuntu系统本身要装好,最好是最小安装加中文语言包,这个在上一篇实验里应该已经完成;第二,虚拟机的网络要能上网且能和Windows互访;第三,你要知道Ubuntu的IP地址和登录账号密码。
就我观察到的实际情况,70%的人卡在SSH服务没装或者没启动,20%的人卡在IP地址配置不对,10%的人卡在防火墙或者FinalShell自身的设置上。所以这篇文章的重点,我打算放在“如何从零到一把这条链路完整打通”上,包括那些最容易踩的坑。
2. 环境准备:Ubuntu端配置与网络检查
2.1 确认Ubuntu系统状态和IP地址
先别急着打开FinalShell。第一步是进入你的Ubuntu虚拟机,确认系统本身是健康的。打开终端,敲几个命令看看。
# 查看系统版本 lsb_release -a # 查看当前登录用户和主机名 whoami hostname # 查看IP地址(Ubuntu 18.04之后用ip命令,老版本用ifconfig) ip addr show如果你的系统还没装net-tools工具包,ifconfig命令会提示未找到。这时候不用纠结,ip addr show的效果是一样的。从输出结果里找到类似192.168.x.x或者10.0.x.x这样的地址,记下来。注意看网卡名称,常见的叫ens33、ens160、eth0,如果看到docker0或者virbr0这种,那不是物理网卡,别选错了。
我遇到过一种尴尬情况:Ubuntu显示IP是127.0.0.1或者127.0.1.1,这是因为系统没有从DHCP服务器获取到地址,网卡没起来。这种情况先检查VMware的虚拟机网络设置,确认“已连接”那个勾选框打了勾,然后执行sudo dhclient ens33手动尝试获取IP。
2.2 安装并启用SSH服务
这是整个实验最关键的一步。Ubuntu默认安装往往不会自动装上OpenSSH Server,但FinalShell连接依赖的就是它。检查方法很直接:
# 检查SSH服务是否安装 dpkg -l | grep openssh-server # 检查SSH服务是否运行 systemctl status ssh如果提示Unit ssh.service could not be found,说明没安装,执行:
sudo apt update sudo apt install -y openssh-server安装完成后启动服务:
sudo systemctl start ssh sudo systemctl enable ssh这里我多说一句,为什么要enable?因为如果不设置开机自启,你虚拟机重启之后SSH服务不会自动跑起来,下次连不上又得打开虚拟机手动启动,非常麻烦。做实验讲究的是少折腾,一次配置到位。
装好之后验证一下端口是否在监听:
sudo netstat -tlnp | grep 22看到0.0.0.0:22或者[::]:22在监听,说明SSH服务已经正常工作了。
2.3 虚拟机网络模式的选型与检查
VMware提供了三种网络模式:NAT、桥接、仅主机。这个选择直接影响FinalShell能不能连上,属于重点基础配置。
我的建议是:做大数据实验用NAT模式就够了,也是绝大多数教程推荐的方式。NAT模式下虚拟机通过宿主机共享IP上网,虚拟机的IP地址和宿主机的Windows不在同一个网段,但虚拟机可以访问外网,宿主机也可以访问虚拟机。你可能会问,NAT模式下Windows能ping通虚拟机吗?答案是可以,前提是VMware Network Adapter VMnet8这个虚拟网卡在Windows里没有被禁用。
如果想要局域网内其他电脑也能访问你的虚拟机,那就选桥接模式。桥接模式下虚拟机在局域网里就是一个独立的设备,有自己的IP地址,别人可以直接访问。但桥接模式的问题在于,如果局域网IP是动态分配的,虚拟机IP会变,每次连接前都要重新确认。
检查方法是在VMware的虚拟机“编辑”菜单里点“虚拟网络编辑器”,确认当前的网络类型是NAT。同时,在Windows端打开“网络连接”,确认VMware Network Adapter VMnet1和VMnet8这两个虚拟网卡是启用状态。
2.4 Windows端连通性测试
Ubuntu端准备就绪后,回到Windows上做一次连通性测试,这一步能隔离很多问题。打开Windows命令行(Win+R输入cmd),执行:
ping 虚拟机的IP地址如果ping通了,说明网络链路没问题,可以进入FinalShell连接环节。如果ping不通,先别急着找FinalShell的毛病,回到VMware里检查虚拟机的网卡连接状态,或者重新执行sudo dhclient ens33获取IP。
这里有一个非常容易踩的坑:Windows防火墙会拦截ping请求。如果你ping虚拟机的时候虚拟机IP是通的,但虚拟机ping Windows不通,多半是Windows防火墙拦了ICMP。做实验的时候建议把防火墙临时关闭,或者给防火墙添加ICMP放行规则。虽然这看起来不合适,但实验环境内网可以关闭,外网生产千万不能这么做。
另外可以试试看Windows和Ubuntu互相ping的时候,DNS解析是否正常。不过在这个实验里,DNS不重要,我们是用IP直连,不走域名解析。
3. FinalShell安装与连接配置全流程
3.1 下载安装与初次启动
FinalShell的下载渠道很多,但为了安全起见,认准官网就行。去FinalShell的官方网站下载Windows版本,目前主流版本是4.3.10,安装包大概几十兆,下载速度很快。安装过程没什么特别之处,一路下一步就行,唯一需要注意的是安装路径里不要有中文,避免一些奇怪的兼容性问题。
安装完成之后打开FinalShell,界面是中文的,左侧是会话列表,中间是终端区域,右侧是文件管理区域,底部是监控面板。
初次打开时会提示是否绑定手机号,这个可以跳过,不影响使用。新版本或许还有其他在线功能,不用管,直接进入主界面。
主界面左下角有个“文件夹”图标,点开会发现一个名为“我的主机”的分组。右键这个分组,选择“新建连接”,然后选择“SSH连接”,就会进入连接配置页面。这个页面就是整个实验的核心配置界面,里面要填的东西不多,但每一项都不能填错。
3.2 连接参数详解与填写技巧
连接配置页面需要填写的内容包括:
| 配置项 | 填写内容 | 说明 |
|---|---|---|
| 名称 | 随意填写,建议写成“Ubuntu大数据实验机” | 这个名称只用于本地识别 |
| 主机 | 虚拟机的IP地址 | 就是前面ip addr show查到的地址 |
| 端口 | 22 | SSH默认端口,除非你改过 |
| 用户名 | 你的Ubuntu用户名 | 比如hadoop、ubuntu、root等 |
| 认证方式 | 密码或密钥 | 实验中一般用密码 |
| 密码 | 相应用户的密码 | 注意不是sudo密码,是登录密码 |
这里有一个重要提醒:关于用户名和登录权限。不建议用root直接登录,因为Ubuntu默认禁止root远程登录,如果你确实想用root,得先给root设置密码并修改SSH配置文件/etc/ssh/sshd_config里的PermitRootLogin为yes,还要重启systemctl restart ssh。但做实验嘛,用普通用户足够,sudo提权完全可以覆盖所有操作需求。
填完之后点“确定”保存连接。如果你在实验室或者家里切换网络,虚拟机的IP可能会变,到时候需要修改这个连接配置里的主机IP。我在操作中习惯给虚拟机配置静态IP,这样IP就不会漂移,省得每次实验前都得重新查IP。具体方法是修改/etc/netplan/01-netcfg.yaml配置文件(文件名可能不同),把dhcp4: yes改成dhcp4: no,然后手动指定addresses、gateway4和nameservers。
3.3 第一次连接与常见结果分析
配置保存后,双击这个连接,FinalShell会尝试建立SSH连接。第一次连接时,如果弹出一个“首次连接验证”的提示框,询问是否信任该主机的指纹密钥,选择“接受并保存”就好。这就像第一次去某个地方,不认识路,对方先出示一下身份证,你看一眼记住长相,以后再去就直接认识了。
正常连接成功后,终端区域会显示Linux的命令行提示符,比如hadoop@ubuntu:~$,这说明你已经成功登录到Ubuntu了。同时右侧的文件管理区域会自动切换到家目录,你可以在Windows和Linux之间直接拖拽文件上传下载。
连接失败时,FinalShell会弹出错误提示,常见的错误类型我整理一下:
- “连接超时”:主机IP不对,或者虚拟机没开机,或者网络隔离了;
- “拒绝连接 或者 Cannot connect”:目标机器上SSH服务没有启动,或者防火墙拦截了22端口;
- “认证失败 或者 Authentication failed”:用户名或密码错误,或者SSH服务端配置了不允许密码登录;
- “channel is not opened”:连接建立后通道没有成功打开,多半是服务端问题或网络抖动。
第一次连接如果成功,建议立刻做三件事:第一,用sudo apt update测试网络能不能访问软件源,确认外网连通;第二,用df -h看一下磁盘空间,避免后期装大数据组件时磁盘满了;第三,改一个容易记住的主机名,比如sudo hostnamectl set-hostname bigdata,这样终端提示符会变得好认,后期启动Hadoop集群时日志也会更清晰。
4. 连接中断与常见问题排查实录
4.1 连接成功但立刻断开的典型案例
我在带实验的时候遇到最多的一个情况是:FinalShell显示连接成功,终端都出现提示符了,结果一两秒钟之后直接断开,提示“连接失败”或者“channel is not opened”。
第一次遇到这个问题的时候我也奇怪,SSH服务正常、密码正确、网络通的,为什么建立连接后马上被掐断?后来一查,发现一个非常隐蔽的原因:虚拟机磁盘空间满了。
SSH连接建立之后,服务端需要创建会话进程、分配临时文件、写入日志。如果/分区的剩余空间低于某个阈值,服务端会话初始化会失败,连接就会被强制断开。因为磁盘满这个事不会影响TCP三次握手,所以你会看到“连接成功”的假象,然后系统实际干活的时候才发现资源不足。
排查命令很简单:
df -h如果/dev/sda1或者其他挂载点的Use%到了100%,清理一下。大多数情况下是/var/log下面的日志文件太占地方,或者/tmp目录积累了临时文件。用sudo apt autoremove和sudo apt autoclean清理无用的安装包,或者手动删除大的日志文件。
另一个导致连接成功后立刻断开的案例是SSH的MaxSessions或MaxStartups限制。如果你之前残留了多个SSH会话,服务端的连接数快达到上限,新连接会被拒绝或者建立后断开。重启ssh服务可以释放:
sudo systemctl restart ssh4.2 网络层面的排查流程
连接超时和连接被拒这两种错误的排查思路完全不同,先看网络还是先看服务,顺序不能乱。
我的建议是先确认虚拟机是不是开着。这个问题听起来很基础,但真的有人虚拟机都还没启动就急着点连接。确认虚拟机正常运行后,在Windows里ping虚拟机的IP:
如果ping不通,说明问题出在虚拟机网络配置或者VMware虚拟网卡上。检查Web界面右上角的网络连接图标是不是处于已连接状态,试试在虚拟机里执行sudo dhclient -r释放IP再重新获取。
如果ping通了,说明网络层没问题,接着检查22端口是否开放。用telnet或者PowerShell的Test-NetConnection测一下:
Test-NetConnection 虚拟机IP -Port 22如果返回TcpTestSucceeded : True,说明端口是通的,问题在SSH认证或FinalShell配置上。如果返回False,说明SSH服务没起来,或者防火墙拦截了端口。
Ubuntu自带的ufw防火墙如果开启了,默认不会放行22端口。检查Ubuntu里面防火墙状态:
sudo ufw status如果显示active,执行sudo ufw allow 22/tcp放行SSH端口。虽然实验环境里很多人直接关闭防火墙,但既然学了数据库,就应该有安全意识,有针对性放行端口比一关了之要专业得多。
4.3 认证失败和权限问题的快速定位
认证失败是比较常见又比较难诊断的一类问题,因为它涉及多个环节:用户名、密码、SSH服务端配置、SELinux/AppArmor。
最常见的原因是密码输错,但很多人连续输了几次都提示认证失败,这个时候就要怀疑是不是键盘布局的问题。虚拟机里的Ubuntu如果默认是英文键盘,密码里包含@、:这些符号时,Windows键盘的键位和Ubuntu的键位可能不一致导致输入错误。解决办法是在连接配置里先别急着保存密码,手动输入几次试试,或者打开Ubuntu的“设置-Region&Language”看一下键盘布局。
还有一种情况是SSH服务端配置了禁止密码认证。查看配置文件:
sudo cat /etc/ssh/sshd_config | grep PasswordAuthentication如果看到PasswordAuthentication no,说明服务端只允许密钥登录,密码登录被禁止了。做实验时改成yes,然后重启ssh服务。
如果用户名不存在或者用户被锁定,也会认证失败。可以用sudo cat /etc/shadow查看用户状态,如果密码字段里有!,说明该用户密码被锁定。用sudo passwd 用户名重置密码即可。
我在实际实验中还会遇到一种情况:用户密码格式没问题,但总是认证失败,最后发现是FinalShell软件自身的Bug导致保存的密码被错误编码。这种时候把连接配置里的密码清空,第一次连接时手动输入,反而能成功。
4.4 FinalShell特有问题的处理技巧
FinalShell除了作为SSH客户端,还有文件管理和监控功能。这些功能在连接不稳定的时候会反过来引发一些问题。
比如“channel is not opened”这个报错,很多时候就是SFTP通道建立失败导致的。现象是终端能连上,但右侧文件区域显示“连接失败”或者一直转圈。这个问题的根源通常是FinalShell同时建立SSH通道和SFTP通道,SFTP通道在服务端被限制了。SSH配置文件里Subsystem sftp这一行如果被注释掉,SFTP就会失败。确认方法:
sudo grep -i sftp /etc/ssh/sshd_config正常情况下会看到Subsystem sftp /usr/lib/openssh/sftp-server。如果这一行被注释或者没有,取消注释并重启ssh服务。
另外一个常见问题是FinalShell内置的监控面板有时候显示CPU占用特别高,而Ubuntu自带的top命令显示正常。这是因为监控面板默认采样频率太高,比如每秒一次,对虚拟机的虚cpu来说采样本身就消耗资源。解决办法是在监控面板右上角的设置里把采样间隔从1秒改成5秒。
FinalShell还支持快捷命令和脚本功能,我建议在连接成功后先设置几个常用的快捷命令,比如sudo apt update、sudo systemctl restart ssh、start-dfs.sh这些,后续实验中可以一键执行,节省大量重复输入时间。
5. 大数据与数据库实验中的应用实战
5.1 用FinalShell搭建大数据集群环境的完整流程
连接稳定之后,就可以正式使用FinalShell来进行大数据和数据库实验了。这套环境我部署过多次,以最常见的“单节点Hadoop + MySQL”组合为例,完整流程大概是这样的。
第一步是上传JDK安装包。假设你已经下载好了jdk-8u211-linux-x64.tar.gz,在FinalShell右侧文件管理区域找到Windows本地的安装包,直接拖拽到Ubuntu用户家目录下。这个操作比scp命令更直观,也会让后续工作顺利很多。然后打开终端执行:
sudo mkdir -p /usr/local/java sudo tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/java接下来配置环境变量,用sudo vim /etc/profile或者用FinalShell自带的编辑器打开文件追加内容。这里有一个坑:如果你在FinalShell的编辑器里编辑远端文件,保存的时候如果网络不稳定,可能产生临时文件残留。建议用vim命令行方式编辑,保存后执行source /etc/profile生效。
第二步是配置Hadoop。把Hadoop安装包同样拖拽上传,解压到/usr/local/hadoop,修改core-site.xml、hdfs-site.xml、yarn-site.xml这些配置文件。当配置里涉及主机名时,注意和你在/etc/hostname里设置的主机名保持一致,不然启动时会出现hostname解析问题。
第三步是启动集群。执行hdfs namenode -format格式化名称节点,然后执行start-dfs.sh和start-yarn.sh。这时候用FinalShell的监控面板看着内存曲线飙升,同时用jps命令确认NameNode、DataNode、ResourceManager这些进程都在运行。
这个过程我特意把每一步都用FinalShell的操作来演示,原因很简单:大数据实验最烦人的就是文件分发和配置同步,而FinalShell的文件拖拽和远程编辑功能,比命令行scp和vim的效率高太多了。你只需要把安装包上传一次,然后用scp命令分发给其他节点就行。
5.2 数据库实验中的实际用法
数据库方面的实验,主要是在Ubuntu上安装MySQL或者PostgreSQL,然后用SQL完成增删改查操作。用FinalShell做这些实验,比直接在虚拟机里操作方便很多。
安装MySQL的常规流程:
sudo apt update sudo apt install -y mysql-server sudo systemctl start mysql sudo mysql_secure_installation这里有一个新手容易踩的坑:MySQL装完之后,root用户默认使用socket认证,你用mysql -u root -p输入密码是登不进去的。需要先用sudo权限进入MySQL:
sudo mysql然后修改认证方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码'; FLUSH PRIVILEGES;这些操作在FinalShell终端里执行,过程和直接坐在Ubuntu图形界面打开终端完全一样,但好处是你能够一边在Windows上查资料,一边在虚拟机里执行操作,窗口切换成本低很多。
数据库实验还有一个高频需求是导入数据和导出数据。比如你在Windows上的Navicat或者DataGrip里编写SQL,需要把数据导入Ubuntu的MySQL中。这时候用FinalShell的文件管理,把SQL脚本拖拽到用户目录,然后在终端里执行:
mysql -u root -p -e "source /home/用户名/数据脚本.sql"或者移动到数据库表所在目录执行source命令。这个流程比在虚拟机里手动创建文件再执行方便很多。
5.3 日志查看和监控的实战技巧
大数据实验和数据库实验都有个共同点:出了问题要看日志。Hadoop的日志在$HADOOP_HOME/logs/userlogs,MySQL的错误日志一般在/var/log/mysql/error.log,这些日志文件用FinalShell查看有一种天然优势:支持右键“用编辑器打开”或者用tail -f命令实时跟踪。
上面提到的监控面板,在数据库压测或者Hadoop跑MapReduce任务时特别有用。你跑一个WordCount任务,可以看到内存和CPU的实时曲线变化,能直观感受到分布式计算对资源的消耗模式。有一次我在实验课上让同学们用FinalShell监控面板观察MapReduce任务运行时的资源占用,大家第一次意识到Reduce阶段内存占用会有一个明显的尖峰,这是只看静态截图学不到的东西。
日志滚动也是一个要注意的点。Linux的日志系统默认会做logrotate,日志文件到一定大小会自动轮转。如果发现日志文件特别大或者磁盘空间变化异常,可以先执行journalctl --disk-usage看看systemd日志占了多少空间,必要时用sudo journalctl --vacuum-size=500M清理旧日志。
5.4 多节点集群时的连接管理
如果你的课程设计需要做多节点集群(比如一个主节点加两个从节点),FinalShell的多标签页管理就很方便。每个节点建立一个连接,用不同的颜色标记,同时打开多个标签页,可以Parallel地执行命令而不需要在多个窗口之间来回切换。
更重要的是,FinalShell支持“发送命令到所有会话”功能。选中多个连接后,在命令输入框中输入同样的命令时,可以选择发送到所有的会话。这个功能在批量部署环境时太有用了,比如给三个节点同时执行sudo apt update,或者同时修改某个配置文件。
不过这里要提醒一句:发送到所有会话的功能,一定要确认命令在每台机器上都是相同的意图。比如在三个节点上同时执行rm -rf /tmp/test没问题,但如果执行sudo systemctl stop mysql而某些节点根本没装MySQL,就会报错。这种误操作在真实场景中会导致部分服务异常,所以用这个功能时我会格外小心。
6. 实验环境长期维护与经验总结
6.1 静态IP配置防止连接地址漂移
做实验最怕什么?上次连接好的虚拟机,今天打开准备继续实验,发现IP变了,FinalShell里保存的地址连不上了。这个问题在多节点的集群环境里尤其致命,因为主节点配置里写着从节点的IP,一旦从节点IP变掉,整个集群就启动不了。
解决办法上文提到过,就是配置静态IP。Ubuntu 18.04以上版本使用netplan管理网络。查看配置文件:
ls /etc/netplan/通常有一个01-network-manager-all.yaml或者01-netcfg.yaml文件,打开修改成类似这样:
network: version: 2 ethernets: ens33: dhcp4: no addresses: - 192.168.35.100/24 routes: - to: default via: 192.168.35.2 nameservers: addresses: - 114.114.114.114 - 8.8.8.8修改后执行sudo netplan apply生效。
注意这里的网关地址要和你VMware的NAT网络配置一致。在“虚拟网络编辑器”里选中NAT模式,可以查看到子网IP和网关IP。比如子网是192.168.35.0,网关通常是192.168.35.2。如果写错网关,虚拟机可以通内网但上不了外网。
配置完成后,重启虚拟机,验证IP是否还能上网:
ip addr show ens33 ping 114.114.114.114静态IP配置好之后,FinalShell里的连接配置就永远不用改了,体验会好很多。
6.2 快照功能与实验环境的备份恢复
VMware的快照功能同时也能起到备份作用。我的习惯是:在Ubuntu刚装好、SSH配通、环境变量配好之后,给虚拟机打一个干净的快照。比如装好SSH、网络配置好后打一个“基础环境”,然后装Hadoop之前再打一个“环境干净版”,安装配置完成后再打一个“Hadoop集群已配置”。
这样做的意义在于:一旦后续实验把环境搞崩了,比如配置文件写错导致系统起不来,或者误删了某个目录,只需恢复到上一个快照,几分钟就能回到正常状态。相比重装系统,快照恢复的效率高太多,而且不会丢失已经配好的网络、SSH等基础设置。
创建快照的时机也有讲究。我不建议在系统运行大数据任务时打快照,那样快照文件会非常大,而且恢复时可能因为内存状态不一致导致异常。正确做法是把要备份的虚拟机正常关机,然后在VMware里右键虚拟机,选择“快照-拍摄快照”,这样最稳定。
6.3 常用命令与连接配置速查
最后整理一份我平时用得最多的“必备速查表”,你可以截图保存或者收藏,后续做大数据实验遇到问题时直接翻。
# SSH服务管理 sudo systemctl status ssh sudo systemctl start ssh sudo systemctl restart ssh sudo systemctl enable ssh # 网络配置 ip addr show sudo netplan apply ping 网关IP # 防火墙 sudo ufw status sudo ufw allow 22/tcp sudo ufw disable # 磁盘和内存 df -h free -h top # 大数据常用进程检查 jps start-dfs.sh start-yarn.sh # 日志实时查看 tail -f $HADOOP_HOME/logs/hadoop-*.log tail -f /var/log/mysql/error.log6.4 最后的经验之谈
做了这么多年大数据和数据相关的实验教学,我个人最大的体会是:学大数据,先把环境搞稳定,后面的一切才有意义。
很多人一开始就陷入看视频、背命令的误区,结果环境没配好,所有命令都跑不了,越学越没信心。而像FinalShell连接Ubuntu这类的“小事”,恰恰是把环境稳住的基石。连接通了、文件能传了、日志能看了,整个实验的反馈路径就建立起来了。接下来你写的每一个命令,都有实时反馈,你看到的每一个报错,都有了排查入口,这才是真正高效的学习方式。
最后的最后,再分享一个很实用的小技巧:在FinalShell里,给每个连接设置一个“备注”,写明这台虚拟机的用途、IP、账户名、配置了哪些服务。比如“Ubuntu-Hadoop集群主节点-192.168.35.100-hadoop用户-JDK8+Hadoop3.2+MySQL8.0”。这样过两个星期再回到实验台前,你扫一眼备注就能想起来这台机器的所有关键信息,不用再重新翻文档回忆。这个习惯我一直保留到现在,不管管理多少台机器,从来不乱。