本文共 3355 字,大约阅读时间需要 11 分钟。
思考题
如何在1T的大文件中找出重复的单词 分治法 分布式 分而治之:并行计算 计算向数据移动 用哈希进行分类,注意哈希碰撞 集群思想 并行:提升速度的关键 分布式运行 计算与数据在一起 计算向数据移动
hadoop的思想之源:google的论文
openstack: nasa——云计算平台
问题:
面对的数据和计算难题 大量的网页怎么存储 搜索算法
思路:
带给我们的关键技术和思想 Google三驾马车 GFS Map-Reduce Bigtable
Hadoop创始人介绍
Hadoop作者Doug cutting,就职Yahoo期间开发了Hadoop项目,目前在Cloudera 公司从事架构工作
hadoop简介
分布式存储系统HDFS(Hadoop Distributed File System )POSIX 分布式存储系统 提供了 高可靠性、高扩展性和高吞吐率的数据存储服务分布式计算框架MapReduce 分布式计算框架(计算向数据移动) 具有 易于编程、高容错性和高扩展性等优点。分布式资源管理框架YARN(Yet Another Resource Management) 负责集群资源的管理和调度
HDFS
存储模型 存储模型:字节偏移量 文件线性切割成块(Block):偏移量 offset (byte)分散 Block分散存储在集群节点中 单一文件Block大小一致,文件与文件可以不一致副本数 Block可以设置副本数,副本分散在不同节点中 副本数不要超过节点数量 文件上传可以设置Block大小和副本数读写 已上传的文件Block副本数可以调整,大小不变 只支持一次写入多次读取,同一时刻只有一个写入者 可以append追加数据
hdfs架构模型
元数据 文件元数据MetaData,文件数据 元数据 数据本身节点 (主)NameNode节点保存文件元数据:单节点 posix (从)DataNode节点保存文件Block数据:多节点信息交互 DataNode与NameNode保持心跳,提交Block列表 HdfsClient与NameNode交互元数据信息 HdfsClient与DataNode交互文件Block数据
NameNode
存储方式 基于内存存储 :不会和磁盘发生交换 只存在内存中 持久化 功能 NameNode主要功能: 接受客户端的读写服务 收集DataNode汇报的Block列表信息 信息 NameNode保存metadata信息包括 文件owership和permissions 文件大小,时间 (Block列表:Block偏移量),位置信息 Block每副本位置(由DataNode上报) 静态信息和动态信息 持久化 NameNode持久化 NameNode的metadate信息在启动后会加载到内存 metadata存储到磁盘文件名为”fsimage” Block的位置信息不会保存到fsimage edits记录对metadata的操作日志
DataNode
文件形式 本地磁盘目录存储数据(Block),文件形式信息交互 同时存储Block的元数据信息文件 启动DN时会向NN汇报block信息心跳 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN
HDFS优缺点
HDFS优点 高容错性 数据自动保存多个副本 副本丢失后,自动恢复 适合批处理 移动计算而非数据 数据位置暴露给计算框架(Block偏移量) 适合大数据处理 GB 、TB 、甚至PB 级数据 百万规模以上的文件数量 10K+ 节点 可构建在廉价机器上 通过多副本提高可靠性 提供了容错和恢复 机制HDFS缺点 低延迟数据访问 比如毫秒级 低延迟与高吞吐率 小文件存取 占用NameNode 大量内存 寻道时间超过读取时间 并发写入、文件随机修改 一个文件只能有一个写者 仅支持append
SecondaryNameNode
它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间。SNN执行合并时机 根据配置文件设置的时间间隔fs.checkpoint.period 默认3600秒 根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB
DataNode block块的放置策略
Block的副本放置策略 第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。 第二个副本:放置在于第一个副本不同的 机架的节点上。 第三个副本:与第二个副本相同机架的节点。 更多副本:随机节点
HDFS写流程
切分文件Block 按Block线性和NN获取DN列表(副本数) 验证DN列表后以更小的单位流式传输数据 各节点,两两通信确定可用 Block传输结束后: DN向NN汇报Block信息 DN向Client汇报完成 Client向NN汇报完成 获取下一个Block存放的DN列表 最终Client汇报完成 NN会在写流程更新文件状态
HDFS读流程
和NN获取一部分Block副本位置列表 线性和DN获取Block,最终合并为一个文件 在Block副本列表中按距离择优选取
HDFS安全模式
为什么有安全模式? 在HDFS启动的时候,加载fsimage,因为NameNode中没有动态元数据信息,所以等待DataNode向NameNode返回信息,再工作hadoop1.x集群启动的过程:1、namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。2、一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。3、此刻namenode运行在安全模式。即namenode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败)。4、在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的, 在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束5、当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。
转载地址:http://wyjtd.baihongyu.com/