分布式计算系统课堂笔记

发布时间:2026/6/28 18:53:15

分布式计算系统课堂笔记 1.1大数据离我们有多远1.1.1存储单位完整版从 bit 到 YB一基础知识b bit比特最小信息单位只有 0 或 1B Byte字节计算机存储基本单位 1 B 8 b1 个汉字约占 2 个字节二完整进制1024 进位1 KB千字节 1024 B 例子小段文字1 MB兆字节 1024 KB 例子一首歌 3–5M1 GB吉字节 1024 MB 例子一部电影1 TB太字节 1024 GB 例子数据库25 万张高清图片1 PB拍字节 1024 TB 例子公司数据中心、云服务1 EB艾字节 1024 PB 例子全球级别、观测数据1 ZB泽字节 1024 EB 例子全球数据总量约 40ZB1 YB尧字节 1024 ZB 未来更大数据量级1.1.2 40ZB 的含义含义代表当今全球数据总量由互联网、手机、服务器、摄像头、传感器等共同产生。必须依靠大数据、分布式系统、云计算才能处理1.1.3大模型与大数据的关系1.1.3.1大数据核心属性延续大数据经典4V 特性Volume 数据量大、Variety 类型多样、Velocity 生成速度快、Value 价值密度低是数字时代的核心生产资料标志着数据分析从 “样本统计” 迈入 “全量数据” 时代。商业价值解决智能技术落地中“有什么”的基础问题是后续所有人工智能技术的底层基石为企业智能决策提供数据支撑。关键要求数据不仅要具备规模更要保证真实性和高质量低质量的 “垃圾数据” 会直接导致后续智能应用失效无法落地商业场景。1.1.3.2大模型定义通常指参数规模达到千亿乃至万亿级别在超大规模无标注数据集上完成预训练的深度学习模型是人工智能技术的核心升级方向。核心能力从海量大数据中抽象知识、理解语境、创造新知打破传统数据处理的边界能高效解析文本、图像、视频等非结构化数据。商业定位是企业数字化转型中的智能工具承接大数据的基础价值将无序数据转化为可落地的商业洞察适配餐饮、零售、制造、医疗等多行业的实际应用需求。1.1.3.3二者关系大数据是大模型的 “燃料” 与基石。大模型的训练本质是从海量数据中学习特征与规律数据的规模、质量、多样性直接决定模型性能。大模型是大数据的 “挖掘器” 与价值放大器。传统大数据处理难以高效解析非结构化数据如弹幕、评论、视频字幕大模型通过语义理解、多模态解析将无序数据转化为结构化洞察实现 “数据→信息→价值” 的跃迁。1.1.4 大数据重点笔记大数据技术要面对的基本问题也是最核心的问题海量数据如何可靠存储和高效计算HDFS MAPREDUCE1.1.4.1大数据 4V 特征大量化 Volume 存储量大增量大10TB快速化 Velocity 高速数据I/O-互联网连接设备数量增长多样化 Variety 来源多搜索引擎社交网络通话记录传感器··· 格式多结构化的数据非结构化的数据价值密度低 Value1.1.4.2数据库4v中的多样化结构化 固定格式 excel表关系型数据库My SQL半结构化 不严格。具有一定的层次结构介于结构化和非结构化之间 XMLJSON文件电子邮件标题正文附件非结构化 没有固定格式 文本文件图片音乐1.1.5为什么有 MySQL 还需要 HadoopMySQL 的局限性适用于小体量、结构化数据的存储与查询处理海量数据时在存储容量、分布式计算能力、并行处理效率上存在明显短板无法满足大数据的处理需求。Hadoop 的核心价值专为海量数据设计实现分布式存储与分布式计算可利用多台普通服务器搭建集群突破单台服务器的硬件限制能高效处理 PB 级甚至更大规模的数据精准弥补传统数据库的不足。Hadoop 核心认知1. 定义Hadoop 是大数据领域分布式处理的基础框架核心解决海量数据的分布式存储和分布式计算两大核心问题是大数据入门阶段的核心学习工具。2. 三大核心组件这是 Hadoop 的核心重点三大组件各司其职构成 Hadoop 的基础架构HDFSHadoop Distributed File System即分布式文件系统核心功能是将大文件拆分为小数据块分散存储在集群的各个节点中为大数据提供可靠的海量数据存储能力属于大数据的存储层。MapReduce分布式计算框架核心采用 “分而治之” 的思想将复杂的计算任务拆分后分配到集群各节点并行计算最后统一汇总各节点结果得到最终答案属于大数据的计算层主要适用于离线批处理场景。YarnYet Another Resource Negotiator资源调度器核心负责管理集群的 CPU、内存等硬件资源为 MapReduce、Spark 等各类计算框架合理分配资源协调各节点的工作节奏属于大数据的资源调度层。1.1.6Hadoop 生态体系Hadoop 全家桶Hadoop 并非单一工具而是围绕三大核心组件延伸形成的完整大数据处理生态包含多款配套工具覆盖大数据处理的全流程核心关联工具如下Hive基于 Hadoop 的数仓工具能将结构化数据映射为数据库表支持通过 HiveSQL 操作海量数据其语法与传统 SQL 相近让熟悉 SQL 的开发者无需编写复杂的 MapReduce 代码大幅降低大数据操作的门槛。HBase基于 HDFS 的分布式非关系型数据库适用于海量非结构化、半结构化数据的实时读写操作有效弥补了 HDFS 随机读写能力弱的短板。Spark/Flink基于 Yarn 资源调度的新一代分布式计算框架是传统 MapReduce 的升级替代工具核心提升了大数据的计算效率是目前生态中主流的计算工具。SparkSQLSpark 生态中的 SQL 查询模块支持用类 SQL 的语法操作 Spark 中的数据兼具 SQL 的易用性和 Spark 的高效计算能力是 Spark 实操的重要工具。1.1.7主流大数据计算框架对比易混点辨析1. MapReduce vs SparkMapReduce基于磁盘进行计算中间计算结果会写入磁盘处理速度较慢仅支持离线批处理一种任务类型功能相对单一但架构简单、稳定性高适合超大规模海量数据的离线批量处理。Spark基于内存进行计算中间结果直接存储在内存中处理速度比 MapReduce 快 10-100 倍功能全面支持离线批处理、实时流处理、机器学习等多种任务是目前大数据处理的主流计算框架适配绝大多数离线、近实时的计算场景。2. Spark vs FlinkSpark其实时处理采用微批处理模式即将实时产生的数据流切分为小批次进行处理延迟处于秒级兼顾离线处理与近实时处理生态体系完善实际应用场景更广。Flink专注于纯实时流处理对数据采用逐条处理的模式延迟可达毫秒级具备高吞吐、低延迟的特性适合对实时性要求高的业务场景比如电商实时推荐、金融风控、物联网实时数据处理等。1.1.8点拨重点E-R图(毕业论文常用)GFS大数据4v特征1.2Google的三驾马车1.2.1Google思想一GFS分布式文件系统1.2.1.1GFS的框架GFS Master节点管理所有文件系统元数据包括命名空间、访问控制信息、文件和块的银蛇信息以及当前块的位置信息GFS存储的文件被分割成固定大小的块每个块都会被复制到多个服务器上可靠性。块的冗余度默认为3GFS Master还管理着系统范围内的活动比如块服务器之间的数据迁移等。GFS Master与每个块服务器通信发送心跳包发送指令、获取状态。副本位置选择的策略要满足两大目标最大化数据可靠性和可用性。1.2.2Google思想二MapReduceMapReduce采用“分而治之”的思想把大规模数据集的操作分发给一个主节点管理下的各个子节点共同完成然后整合各个子节点然后整合各个子节点的中间结果得到最终的结算结果。简而言之MapReduce 就是分散任务汇总结果。Map的输出是Reduce的输入1.2.3Google思想三BigTable1.3 Hadoop的概述1.3.1 Hadoop是什么Hadoop是一个由Apache基金会所开发的分布式系统基础框架主要解决海量数据的存储和分析计算问题广义上来说Hadoop通常是指一个更广泛的概念--Hadoop生态圈1.3.2 Hadoop根据是Google三篇论文实现HDFS →GFSMapReduce →MapReduceHBase→BigTable1.3.2.1HDFSHDFS Hadoop Distributed File System是Hadoop项目的核心子项目是分布式计算中数据存储管理的基础。1.4Hadoop的优势高可靠性Hadoop底层维护多个数据副本所以即使Hadoop某个计算元素或存储出现故障也不会导致数据丢失高扩展性在集群间分配任务数据可方便地扩展数以千计的节点高效性在MapReduce的思想下Hadoop是并行工作的以加快任务处理速度高容错性能够自动将失败的任务重新分配。适合场景大数据分析数据量大 离线分析数据已生成不实时分析不适合场景少量数据 复杂数据 在线分析1.4.1Hadoop生态圈1.5Hadoop的组成1.5.1HDFS架构概述NameNode:存储文件的元数据如文件名、文件目录结构、文件属性生成时间、副本数、文件权限以及每个文件的块列表和块所在的DateNode等。DataNode在本地文件系统存储文件块数据以及块数据的校验和。Secondary NameNode每隔一段时间对 NameNode元数据备份。1.5.2YARN架构概述ResourceManager(RM整个集群资源内存、cpu等的老大。处理客户端请求启动和监控ApplicationNodeManager(NM)单个节点服务器资源老大ApplicationMaster单个任务运行的老大(1)负责数据的切分2为程序应用申请资源并分配给内部任务3任务的监控与容错Container容器相当于一台独立的服务器里面封装了任务运行所需要的资源如内存、cpu、磁盘、网络等。说明客户端可以有多个集群上可以运行多个ApplicationMaster每个NodeManager上可以有多个Container1.5.3MapReduce架构概述MapReduce将计算分为两个阶段map和reduceMap阶段并行处理输入数据Reduce阶段对Map结果进行汇总安装环境启动docker容器1.用来将一个docker镜像从/cg/images/hadoop_node.tar.gz压缩包加载到本地docker环境中docker load /cg/images/hadoop_node.tar.gz2.docker run --name master --privileged --ulimit nofile65535:65535 --hostname master --ip 172.18.0.2 --add-hostslave1:172.18.0.3 --add-hostslave2:172.18.0.4 --add-hostslave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.sh docker run --name slave1 --privileged --ulimit nofile65535:65535 --hostname slave1 --ip 172.18.0.3 --add-hostmaster:172.18.0.2 --add-hostslave2:172.18.0.4 --add-hostslave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave2 --privileged --ulimit nofile65535:65535 --hostname slave2 --ip 172.18.0.4 --add-hostmaster:172.18.0.2 --add-hostslave1:172.18.0.3 --add-hostslave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave3 --privileged --ulimit nofile65535:65535 --hostname slave3 --ip 172.18.0.5 --add-hostmaster:172.18.0.2 --add-hostslave1:172.18.0.3 --add-hostslave2:172.18.0.4 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.shdocker run --name master --privileged --ulimit nofile65535:65535 --hostname master --ip 172.18.0.2 --add-hostslave1:172.18.0.3 --add-hostslave2:172.18.0.4 --add-hostslave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.sh--name master (master容器的名字)--privileged赋予容器特权模式允许他访问主机上所有设备--ulimit nofile65535:65535设置文件描述符的软限制和硬限制--hostname master --ip 172.18.0.2 hostname容器的主机名为master唯一ip--add-hostslave1:172.18.0.3 --add-hostslave2:172.18.0.4 --add-hostslave3:172.18.0.5 三个奴隶-itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.sh3.查看启动的dockerdocker psdocker ps -a查看所有容器按上键可重复上一条终端代码docker psdocker ps -adocker start masterdocker start slave1docker start slave2docker start slave3docker exec -it --privileged master /bin/bash其他装口打开slave1安装Java1创建文件夹javamkdir /usr/local/java(ls查看文件目录ll查看目录有路径 有查看权限)2复制cp被复制文件的地址 复制到的地址最后放的地址cp /cgsrc/jdk-8u171-linux-x64.tar.gz /usr/local/java/3将压缩包jdk-8u171-linux-x64targz解压tar-zxvf 压缩包的名字输入tar-zxvf jdk-8u171-linux-x64.tar.gz4删除文件rm -f jdk-8u171-linux-x64.tar.gz5vim 编辑文件的名字进入文件后o,iexport JAVA_HOME/usr/local/java/jdk1.8.0_171 export CLASSPATH.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH$PATH:${JAVA_HOME}/binesc :wq!(退出)配置分布式模式hdfs NameNodeI一个 DataNode(多个) SecondaryNameNode(一个)(尽量不跟namenode放在同一个服务器上)Yarn:ResourceManager(一个消耗内存尽量不跟namenode和secondarynamenode配置在同一台机器上) NodeManager(多个几乎每一台机器都有)Hadoop1Hadoop2Hadoop3Hadoop4NameNodeDataNodeDataNodeDataNodeSecondaryNameNodeNodeManagerNodeManagerResourceManagerNodeManagerNodeManagerifconfig查看网络配置配置hosts文件vim /etc/hosts(最后一台是本机)查看是否连通ping ip地址ICNP协议测试两台计算机之间的连通性OSI第三层sshSecure Shell(安全外壳协议)一台计算机登录到另一台计算机一般需要密码公钥锁私钥钥匙A寄一个箱子给B但是箱子比较私密中途不想让任何人打开。1.B造一把锁公钥和一把钥匙私钥。2.B把锁给A。B把锁藏起来3.A用锁把箱子锁住4.中途没有人能打开5.只有B能打开A服务器B客户端1.生成公钥和私钥的命令ssh-keygen -t rsaknow_hosts记录ssh访问过计算机的公钥id_rsa生成的私钥id_rsa.pub生成的公钥authorized_keys存放授权过的无密码登陆服务器的公钥cd ~/.ssh #如果没有该目录先执行一次 ssh localhost密码默认为83953588abcrm -f ./id_rsa* #删除之前生成的公钥可不写ssh-keygen -t rsa #执行该命令后遇到提示信息均按Enter即可2.将公钥文件追加到另一个文件中cat ./id_rsa.pub ./authorized_keys3.scp自己本机master把 ~/.ssh/id_rsa.pub路径下文件复制到 rootslave1:/root slave1这台机器上用的登录账户root在slave1这台机器的/root下面另一种方法4.cat ~/id_rsa.pub ~/.ssh/authorized_keys将~/id_rsa.pub 文件内容追加到 ~/.ssh/authorized_keys这个文件的末尾master-----slave1,slave2,slave3,master免密任务1slave1免密扽登录到安装Hadoop并配置环境变量

相关新闻