270 likes | 567 Views
Hadoop 分布式文件系统. by余磊. 分布式文件系统. 分布式文件系统 当数据及大小超过一台独立计算机存储能力,就有必要对其进行分区并存储到若干单独的计算机上。 挑战 容忍节点故障不丢失数据. HDFS设计 1.流式数据访问模式 一次写入多次读取效率最高 2.商用硬件 可运行在普通硬件的集群上 3.低延迟数据访问 可能会以高时间延迟为代价 4.大量小文件 文件总数受限于namenode的内存容量 5.多用户写入,任意修改文件 写操作将数据添加在文件末尾,不支持多个写入者和文件任意位置修改. HDFS概念 . “.
E N D
Hadoop 分布式文件系统 by余磊
分布式文件系统 分布式文件系统 当数据及大小超过一台独立计算机存储能力,就有必要对其进行分区并存储到若干单独的计算机上。 挑战 容忍节点故障不丢失数据 HDFS设计 1.流式数据访问模式 一次写入多次读取效率最高 2.商用硬件 可运行在普通硬件的集群上 3.低延迟数据访问 可能会以高时间延迟为代价 4.大量小文件 文件总数受限于namenode的内存容量 5.多用户写入,任意修改文件 写操作将数据添加在文件末尾,不支持多个写入者和文件任意位置修改
HDFS概念 “ “ 数据块 磁盘进行数据读写的最小单位 HDFS块 默认为64MB,HDFS中小与一个块大小的文件不会占据整个块 HDFS块为什么这么大 目的:最小化寻址开销 块设置足够大,从磁盘传输数据时间可以明显大于定位块开始位置所需时间 不宜过大,任务数太少会减缓mapreduce中的map任务运行速度
HDFS块抽象设计的优点 1.一个文件大小可以大于网络中任意一个磁盘的容量 文件的所有块不需要存储在同一磁盘上 2.使用块作为存储单元大大简化了存储子系统的设计 简化存储管理 消除了元数据的顾虑 3.块适合用于数据备份提供数据容错力和可用性 将块复制到少数几个独立机器上,在发生磁盘故障时不丢失数据
HDFS集群两类节点:namenode和datanode 管理者-工作者运行模式 namenode(管理者)管理文件系统的命名空间 维护文件系统树和所有文件目录,以命名镜像文件和编辑日志文件形式永久保存在本地磁盘 datanode(工作节点)根据需要存储并检索数据快,定期向namenode发送所需存储块的列表 Hadoop namenode容错机制 没有namenode文件系统无法使用!!运行namenode服务的机器损坏则所有文件丢失 容错机制: 1.备份组成文件系统元数据持久状态的文件 2.运行一个辅助namenode,定期通过编辑日志合并命名空间镜像。但保存状态滞后于主节点,主节点全失效会丢失部分数据。
Hadoop文件访问权限 1.只读权限 2.写入权限 3.可执行权限 每个文件和目录都有所属用户、组别和模式 超级用户 对于超级用户,系统不会执行任何权限检查
HDFS命令行接口 伪分布模式 Hadoop进程运行在本地机器上模拟小规模集群 fs.default.name设置默认文件系统,设置namenode主机和端口 值:“hdfs://localhost/” dfs.replication 不会按照默认将文件块备份 值:“1” 基本文件操作 将本地系统文件复制到HDFS -copyFromlocal 命令 本地文件被复制到HDFS实例 将文件复制回本地(MD5)校验
HDFS JAVA抽象类接口 org.apache.hadoop.fs.FileSystem Hadoop是java写的,通过java api可以调用所有hadoop文件系统的交互操作。其他非java程序调用hadoop比较麻烦 Thrift API 弥补以上不足,把Hadoop文件系统包装成Apache Thrift服务,包含其他语言远程调用的接口
java接口 FileSystem类 与Hadoop某一文件系统交互的API
写入数据 FileSystem创建文件方法:指定path,返回写入数据输出流public FsDatatOutputStream creat(Path f) throws IOExceptoion 使用apppend()方法在已有文件末尾增加数据public FsDatatOutputStream append(Path f) throws IOExceptoion
文件模式 在一个表达式中使用通配符来匹配多个文件是比较方便的
通配符 通配符并不总是精确表达我们想要访问的文件集,FileSystem提供了PathFilter对象
一致模型 文件一致模型描述了对文件读写的可见性(在创建一个文件后希望能在文件系统的命名空间中立即可见,但写入文件的内容并不一定能保证立即可见) HDFS强制所有缓存与数据节点同步,调用FSDataOutputSystem Sync()方法
distcp并行复制 并行处理文件,在两个集群间传输大量数据 distcp作为mapreduce作业来实现,通过集群中并行的map完成,每个文件通过单一map复制,并为每个map分配大致相等数据块
hadoop存档 文件按块存储,元数据存储在namenode内存,小文件效率低 HAR Hadoop存档文件,将文件存入HDFS块,减少namnode内存使用,允许对文件透明访问,可用作mapreduce输入 archieve指令
HAR不足之处 1.创建存档文件会创建原始文件副本,需要多余内存空间 2.一旦创建存档文件不能被修改 3.HAR可被作为mapreduce输入但InputFormat类不知道文件存档。
在此输入标题 “ “ 输入文字 在此录入上述图表的综合分析结论 在此录入上述图表的综合分析结论 在此录入上述图表的综合分析结论 在此录入上述图表的综合分析结论 谢谢您的耐心阅读!