【hadoop权威指南知乎】Hadoop权威指南笔记一
Hadoop 分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统。它是一个高度容错性的系统,适合部署在廉价的机器上,能提供高吞吐量的数据访问,适合大规模数据集上的应用。
硬件错误是常态而不是异常,因此错误检测和快速、自动的回复是HDFS最核心的架构目标。
运行在HDFS上的应用和普通的应用不同,需要流式的访问他们的数据集。HDFS的设计中更多的是考虑到了数据批处理,而不是用户交互处理。比之数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。
运行在HDFS上的应用具有很大的数据集。HDFS上的一个典型文件大小一般都在G字节至T字节。
HDFS应用需要一个“一次写入多次读取”的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变,这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。
一个应用请求的计算,离它操作的数据越近就越高效,在数据达到海量级别的时候更是如此。因为这样就能降低网络阻塞的影响
HDFS集群有两类节点以管理节点-工作节点模式运行,即一个namenode(管理节点)和多个datanode(工作节点)。namenode管理文件系统的命名空间。它维护着文件系统树及整棵树内所有的文件和目录。
这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。namenode也记录着每个文件中各个块所在的数据节点信息。但它并不永久保存块的位置信息,因为这些信息会在系统启动时根据数据节点信息重建。 --- 摘自《Hadoop权威指南》
Hadoop有一个抽象的文件系统概念,HDFS只是其中的一个实现,其他的实现有file、webhdfs等等。
Hadoop的Filesystem类:它是与Hadoop的某一文件系统进行交互的API,HDFS的实例DistributedFileSystem. - 读 - 写 - 查询 - 删除
复本的存放:Hadoop的默认布局策略是在运行的客户端节点上放第一个复本,如果客户端运行在集群之外,就随机选择一个节点,不过系统会避免选择那些存储太满或者太忙的节点。第二个复本放在与第一个不同且随机另外选择的机架中节点上,第三个复本与第二个复本放在同一机架上,且随机选择另一个节点。其他复本放在集群中随机选择的节点上,不过系统会尽量避免在同一个机架上放太多复本。
YARN中有三种调度:FIFI调度器(FIFO Scheduler)、容器调度器(Capacity Scheduler)、公平调度器(Fair Scheduler)。 - FIFO Scheduler:按照提交的顺序运行应用;不需要配置;不适合共享集群 - Capaciry Scheduler:以队列为单位划分资源,每个队列可设定一定比例的资源最低保证和使用上限。 - Fair Scheduler