十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

云计算导论实战:从虚拟化到分布式计算,把概念变成命令

云计算导论实战:从虚拟化到分布式计算,把概念变成命令 简介这份《云计算导论》文档面向计算机专业学生、IT从业者及希望系统了解云计算基础知识的入门读者围绕云计算的概念界定、技术支撑、使用模式与产业影响展开帮助读者建立对云计算的完整认知框架。文档共1个doc文件压缩包约61KB内容以章节化讲义形式组织涵盖引言、定义、与IT技术的关系、使用模式、对服务提供商与用户的意义、基础设施基本特征以及云计算与网格计算、效用计算、分布式计算、虚拟化、服务器集群等关联概念的辨析并延伸至云计算架构分层、现存难题与典型企业应用案例。目前已有754人学习下载适合作为课程预习、知识梳理或技术科普的参考材料读者可借此厘清云计算的核心术语与边界理解其按需付费、弹性扩展、虚拟化等关键特征并对比相关计算模型的异同为后续深入学习云平台与虚拟化技术打下概念基础。1. 云计算导论的第一道坎为什么你背得出定义却跑不起来一个容器很多人第一次接触云计算导论是在一门课的期末周。PPT 上写着“云计算是一种按使用量付费的模式”下面配一张三层架构图IaaS、PaaS、SaaS 排得整整齐齐。考试能过但真让你在一台机器上把 Docker 跑起来、把 Hadoop 伪分布式搭起来立刻卡住。问题不在你在于导论课把“云计算”讲成了一个名词而它本质上是一组可动手的工程能力虚拟化、分布式计算、资源调度、按需计费。这篇笔记不打算复述教材。我按一线做法把云计算导论里最该先落地的几件事拆开虚拟化怎么开、容器怎么跑、分布式计算的最小集群怎么搭、资源怎么算钱。适合两类人正在上头歌这类实践平台、被“hello docker”卡住的学生以及刚转云计算运维、需要把概念变成命令的从业者。读完你至少能在一台普通开发机上把导论里 80% 的名词变成能敲的命令。2. 虚拟化云计算导论里最先要动手的一层虚拟化是云计算的地基没有它就没有“多租户”和“按需分配”。但导论课通常只讲 Type-1 和 Type-2 的区别不讲你打开 VMware Workstation 时那句“在此主机上不支持嵌套虚拟化”到底在说什么。这一章先把虚拟化的判断、开启和验证讲透再落到容器这个更轻的虚拟化形态。2.1 先判断你的机器到底支不支持虚拟化不管后面用 VMware、ESXi 还是 WSL2第一步都是确认 CPU 虚拟化扩展有没有开。Intel 叫 VT-xAMD 叫 AMD-V。很多“虚拟化引擎要全开吗”的疑问根源是 BIOS 里没开或者被 Hyper-V 占用了。Windows 下最直接的方式是看任务管理器性能标签页 → CPU → 右下角“虚拟化已启用/已禁用”。如果显示已禁用进 BIOS 找 Intel Virtualization Technology 或 SVM Mode 打开。Linux 下用命令确认# 检查 CPU 是否支持并启用了虚拟化扩展 # vmx 对应 Intelsvm 对应 AMD grep -Eoc (vmx|svm) /proc/cpuinfo # 输出大于 0 表示支持再确认内核模块是否加载 lsmod | grep -E kvm_intel|kvm_amd第一行统计 CPU 标志位里 vmx/svm 的出现次数大于 0 说明硬件支持。第二行看 KVM 模块是否加载没有输出说明内核虚拟化没启用。这两步是后面所有虚拟化操作的前置条件不通过就别往下走。提示Windows 上如果开了 Hyper-V 或“虚拟机平台”VMware Workstation 可能报“不支持嵌套虚拟化”。常见做法是二选一或者用 WSL2 时接受 Hyper-V 占用。2.2 用 Docker 跑通云计算导论的第一个实例导论里讲 IaaS 和 PaaS最直观的体感来自容器。头歌平台上“云计算 hello docker”这类任务本质就是让你拉镜像、跑容器、看输出。本地复现只需要三步。# 1. 确认 Docker 已安装并运行 docker version # 2. 拉取一个最小镜像并运行 docker run --rm hello-world # 3. 跑一个交互式容器验证隔离性 docker run -it --rm ubuntu:22.04 bash -c hostname cat /etc/os-release | head -2docker run --rm表示容器退出后自动删除避免残留。-it分配交互终端。第三步里hostname输出的是容器 ID和宿主机不同这就是命名空间隔离的直接证据。ubuntu:22.04是镜像名加标签标签不写默认 latest生产环境不建议用 latest。参数上最容易被忽略的是资源限制。导论讲“按需分配”落到 Docker 就是--cpus和--memory# 限制容器最多用 1 个 CPU 核心和 512MB 内存 docker run --rm --cpus1.0 --memory512m alpine \ sh -c echo cpu/mem limited; free -m--cpus1.0是软限制--memory是硬限制超了会被 OOM kill。这两个参数是理解“效用计算”计费模型的起点——你限制了多少资源就按多少资源算钱。2.3 服务器虚拟化和容器虚拟化的边界在哪导论常把虚拟化等同于 VMware但容器也是虚拟化只是层级不同。服务器虚拟化ESXi、KVM、华为虚拟化平台虚拟的是硬件每个虚拟机有独立内核容器虚拟的是操作系统层共享宿主机内核。这个区别决定了选型。维度服务器虚拟化容器虚拟化隔离级别硬件级独立内核进程级共享内核启动速度分钟级秒级资源开销每 VM 预留内存按需占用典型场景多租户、异构 OS微服务、CI/CD导论对应概念IaaSPaaS/CaaS如果你要跑 Windows 虚拟机只能用服务器虚拟化如果只是部署一组 Linux 微服务容器更划算。ESXi 部署时常见“设备启动失败”多数是引导模式UEFI/BIOS和磁盘格式不匹配不是虚拟化本身的问题。3. 分布式计算从单机到最小可跑集群云计算导论的另一半是分布式计算。网格计算、效用计算这些词听着玄落到工程就是“多台机器协作完成一个任务”。这一章用 Hadoop 伪分布式和 Docker Compose 两种方式把分布式计算的最小闭环跑起来。3.1 头歌 Hadoop 搭建任务在本地怎么复现头歌实践平台上“云计算 hadoop 的搭建”通常要求配置 core-site.xml、hdfs-site.xml格式化 NameNode启动 HDFS。本地用 Docker 可以跳过环境差异直接复现核心步骤。# 拉取带 Hadoop 的镜像并启动伪分布式 docker run -d --name hadoop-pseudo \ -p 9870:9870 -p 8088:8088 \ -h hadoop-master \ apache/hadoop:3 # 进入容器格式化 HDFS首次必须 docker exec -it hadoop-pseudo bash hdfs namenode -format # 启动 HDFS 和 YARN start-dfs.sh start-yarn.sh # 验证 jpshdfs namenode -format只在首次执行重复格式化会导致 clusterID 不一致NameNode 起不来。jps应该看到 NameNode、DataNode、ResourceManager、NodeManager 四个进程。9870 是 HDFS Web UI 端口8088 是 YARN 端口浏览器打开能看到集群状态。配置上最关键的是fs.defaultFS伪分布式要指向hdfs://localhost:9000。如果写成file:///HDFS 命令会操作本地文件系统看起来成功实际没进 HDFS这是新手最常见的翻车点。3.2 用 Docker Compose 搭一个能算的分布式任务伪分布式只是单机模拟。要真正体现分布式计算至少两个节点。用 Docker Compose 起一个 NameNode 加两个 DataNode跑一个 WordCount。# docker-compose.yml version: 3 services: namenode: image: apache/hadoop:3 hostname: namenode command: [hdfs, namenode] ports: - 9870:9870 environment: ENSURE_NAMENODE_DIR: /tmp/hadoop-root/dfs/name datanode1: image: apache/hadoop:3 hostname: datanode1 command: [hdfs, datanode] datanode2: image: apache/hadoop:3 hostname: datanode2 command: [hdfs, datanode]ENSURE_NAMENODE_DIR让容器首次启动自动格式化省去手动步骤。三个服务共享同一个网络DataNode 通过 hostname 注册到 NameNode。启动后docker exec -it namenode bash用hdfs dfsadmin -report能看到两个 DataNode 在线。跑 WordCount 时输入文件要先进 HDFS# 在 namenode 容器内 echo cloud computing cloud virtual /tmp/input.txt hdfs dfs -mkdir -p /input hdfs dfs -put /tmp/input.txt /input/ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \ wordcount /input /output hdfs dfs -cat /output/part-r-00000hadoop jar指定示例 jar 包wordcount是主类后面两个参数是输入和输出路径。输出目录不能预先存在否则任务报错。这一步跑通MapReduce 的 map、shuffle、reduce 三个阶段就从 PPT 变成了可观察的进程。3.3 网格计算和效用计算在今天的对应物导论里网格计算强调“跨组织资源共享”效用计算强调“按用量付费”。今天前者对应 Kubernetes 的多集群联邦和 HAMi 这类 GPU 虚拟化方案后者对应云厂商的按秒计费和 Spot 实例。HAMi 是近几年在 GPU 虚拟化方向比较活跃的开源项目解决的是“一块 GPU 怎么分给多个 Pod”的问题。导论不会讲这个但它是效用计算在 AI 时代的直接延续。如果你在导论课后想深入GPU 虚拟化和算力计费是比背定义更值得投入的方向。4. 避坑与排查虚拟化和分布式环境的高频翻车记录这一章集中写我在虚拟化和分布式环境里踩过的坑。每条按现象、原因、解决写都是能直接对号入座的。现象VMware Workstation 报“在此主机上不支持嵌套虚拟化模块 hv 启动失败”。原因Windows 的 Hyper-V 或“虚拟机平台”功能占用了 CPU 虚拟化扩展VMware 拿不到。解决在“启用或关闭 Windows 功能”里关掉 Hyper-V、虚拟机平台、Windows 虚拟机监控程序平台重启。如果必须用 WSL2就接受 VMware 和 WSL2 不能同时全速运行二选一。现象WSL2 无法启动提示“此计算机上未启用虚拟化”。原因BIOS 里 VT-x/AMD-V 没开或者被其他虚拟化软件占用。解决先看任务管理器虚拟化状态再进 BIOS 开。开了还不行检查是不是装了旧版 VMware 或 VirtualBox它们的驱动会锁虚拟化扩展。现象Docker Desktop 启动失败提示“未检测到虚拟化支持”。原因和 WSL2 同源虚拟化扩展没开或被占。解决确认 BIOS 开启确认 Hyper-V 和 WSL2 的组件状态一致。Windows 11 上还要确认“虚拟机平台”已勾选Docker Desktop 依赖它。现象HDFS 格式化后 NameNode 起不来日志报 clusterID 不一致。原因重复执行了hdfs namenode -format或者 DataNode 的 clusterID 和 NameNode 不匹配。解决删掉所有节点的 dfs 数据目录重新格式化一次然后只启动一次。生产环境格式化前必须备份。现象MapReduce 任务卡在 map 0% reduce 0%。原因YARN 的 NodeManager 没起来或者 DataNode 没注册上。解决jps确认进程hdfs dfsadmin -report看 DataNode 数量。少于预期就检查网络和 hostname 解析容器环境里 hostname 必须能互相 ping 通。5. 把导论变成能力资源限制、计费验证和一个可复用的检查习惯导论最后一章通常讲“云计算的优势”但真正让你和别人拉开差距的是能不能把“按需付费”算清楚。这一章给一个可复用的验证方法用容器资源限制模拟计费再对照云厂商的计费模型。先看一个能直接跑的计费模拟。假设某云厂商 1 vCPU 每小时 0.05 元1GB 内存每小时 0.01 元。用 Docker 限制资源跑固定时长算出理论费用。# 启动一个限制 2 vCPU、2GB 内存的容器跑 60 秒 start$(date %s) docker run --rm --cpus2.0 --memory2g alpine \ sh -c sleep 60 end$(date %s) duration$((end - start)) # 计费2 vCPU * 0.05 2 GB * 0.01 0.12 元/小时 # 实际用时 duration 秒费用 0.12 * duration / 3600 echo 运行 ${duration}s理论费用 $(echo scale6; 0.12 * $duration / 3600 | bc) 元这段脚本的价值不在算钱在于让你建立“资源规格 × 时长 成本”的直觉。云厂商的计费粒度通常是秒级但不足一分钟按一分钟算的也有具体看厂商文档。你自己用容器模拟一遍比背“效用计算”定义有用得多。再给一个可复用的检查习惯。每次搭虚拟化或分布式环境前按这个顺序过一遍检查项命令/位置通过标准CPU 虚拟化任务管理器 / grep cpuinfo已启用内核模块lsmod | grep kvm已加载容器运行时docker version正常响应网络解析ping hostname互通存储目录df -h有空间端口占用ss -tlnp目标端口空闲这个表我贴在工位上每次环境起不来先过一遍能省掉一半排查时间。虚拟化这东西玄学的地方不多多数是前置条件没满足。最后说个我自己的教训。刚学云计算导论时我花了两周背 IaaS、PaaS、SaaS 的区别却连一个 Docker 容器都没跑过。后来真正让我理解云计算的是把一个 WordCount 在三个容器里跑通的那天晚上。概念是别人的命令和踩坑才是自己的。如果你也在学导论别停在 PPT 上找一台机器把 hello docker 和 Hadoop 伪分布式跑一遍比什么都强。希望帮到你。本文还有配套的精品资源点击获取
返回列表