Hadoop生态系统之HDFS

一、介绍



HDFS : 分布式文件系统(distributed filesystem),主从结构。

以流式数据访问模式来存储超大文件,运行于商用硬件集群上。

超大文件: 几百M,几百G,甚至几百TB大小的文件。

流式数据访问: 一次写入,多次读取。每次读取都涉及到数据集的大部分数据甚至是全部,因

此读取整个数据集的延迟比读取一条数据的延迟更为重要)

商用硬件:不需要运行在高昂的高可靠的硬件上。

官方介绍: http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

二、NameNode 和 DataNodes

HDFS是一个主从master/slave架构。一个HDFS集群包含一个NameNode,这是一个master服务器,用来管理文件系统的命名空间以及调节客户端对文件的访问。除此,会有一堆DataNode,通常是集群里每个节点一个DataNode,管理在此节点上的数据存储。HDFS对外暴露一个文件系统命名空间,并允许用户数据以文件的形式存储。在内部,一个文件被分成一个或多个块并且这些块被存储在一组DataNode上。NameNode来执行文件系统命名空间的操作比如打开、关闭、重命名文件和目录。NameNode同时也负责决策将数据块映射到对应的DataNode。而DataNode负责服务文件系统客户端发出的读写请求。DataNode同时也负责接受NameNode的指令来进行数据块的创建、删除和复制。

NameNode和DataNode都是被设计为在普通PC机上运行的软件程序。这些机器最典型的就是运行在一个GNU/Linux操作系统上。HDFS是Java写的;任何支持Java的机器都可以运行NameNode或者DataNode。Java语言本身的可移植性意味着HDFS可以被广泛的部署在不同的机器上。一个典型的部署就是一台专用机器来运行NameNode。集群中的其他机器每台运行一个DataNode实例。该架构并不排除在同一台机器上运行多个DataNode实例,但在实际的部署中很少的情况下会这么做。

单一NameNode的设计极大的简化了集群的系统架构。NameNode是所有HDFS元数据的仲裁和存储库。系统被设计为用户数据从来不会流经NameNode。

整体架构


假设和目标

硬件失效

硬件失效是常态而不是特例。一个HDFS集群可能包含了成百上千的服务器,每个都会存储文件系统的部分数据。而大量的组件就会导致组件出错的概率非常高,而这也意味着HDFS的部分组件会经常不工作。因此,检查缺陷和快速自动地恢复就成了HDFS的核心架构目标。

流式数据访问

运行在HDFS上的应用程序需要流式访问数据集的能力。它们不是普通的运行在普通文件系统上的程序。HDFS被设计用来应对批量计算的场景,而不是用来和用户交互。重点是数据访问的高吞吐而不是低延迟。POSIX引入了大量的硬性需求来约束应用程序,而这些需求不是HDFS的目标需求。POSIX语义在一些关键领域被认为可以提高数据吞吐率。

大规模数据集

运行在HDFS上的程序拥有大规模的数据集。一个HDFS文件可能是GB级别或是TB级别的存储。因此HDFS被调优为存储大文件。它应该提供高聚合的数据带宽并且可以在单个集群内扩展到其他的上百上千的节点。程序应该支持在单实例中存在千万级别的文件。

简单的一致性模型

HDFS程序需要一个一次写入多次读出的文件访问模型。一旦一个文件被创建、写入数据然后关闭,这个文件应该不再需要被改动。此假设简化了数据一致性的问题,并且支持了数据的高吞吐。一个Map/Reduce程序或者一个网络爬虫程序就非常符合这种模型。未来有计划支持对于文件的追加写。

“迁移计算比迁移数据成本要低”

一个程序如果在运行计算任务时能更贴近其依赖的数据,那么计算会更高效。尤其是在数据集规模很大时该效应更加明显。因为这会最小化网络消耗而增加系统整体的吞吐能力。这一假设就是:把计算靠近数据要比把数据靠近计算成本更低。HDFS提供给应用程序接口来做到移动程序使其离数据更近。

跨异构硬件软件平台的可移植性

HDFS被设计为可以很容易的从一个平台移植到另一个平台。这有利于推广HDFS,使其作为广泛首选的大数据集应用的平台。

HDFS文件访问方式


replication(复制因子):定义了每份数据保存几个副本,可以在hdfs-core.xml配置文件中设置,默认值是 3。

1. 命令行访问:

上传文件到hdfs:       hdfs dfs –put /localfile /hdfsdir

从hdfs拉文件到本地: hdfs dfs –get  /hdfsdir /localfile

查看文件: hdfs dfs –ls /

创建目录: hdfs dfs –mkdir /newDir

2. http

通过http方式访问hdfs有两种方式:

a) 直接访问: 主要是访问namenode和datanode内嵌的web服务器作为WebHDFS的端节点运行(由于dfs.webhdfs.enabled被设置为true,WebHDFS默认是启用状态)。 文件元数据由namenode管理,文件读写操作首先被发往 namenode,由namenode发送一个http重定向至某个客户端,指示以流方式传输文件数据的目的或源datanode。

b) 依靠一个或者多个代理服务器http访问hdfs。(由于代理服务是无状态的,因此可以运行在标准的负载均衡器之后。)

3. NFS

使用hadoop的NFSv3网关将HDFS挂载为本地客户端的文件系统,然后你可以使用Unix实用程序(ls和cat)与该文件系统交互。

4. C语言

提供访问hdfs的c语言库。

Java接口

待补充

参考:

《hadoop权威指南》

http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

原文地址:https://www.cnblogs.com/NeilZhang/p/9826490.html

时间: 2024-11-08 23:52:38

Hadoop生态系统之HDFS的相关文章

Hadoop组件之-HDFS(HA实现细节)

Hadoop NameNode 高可用 (High Availability) 实现解析 在 Hadoop 的整个生态系统中,HDFS NameNode 处于核心地位,NameNode 的可用性直接决定了 Hadoop 整个软件体系的可用性.本文尝试从内部实现的角度对 NameNode 的高可用机制进行详细的分析,主要包括 NameNode 的主备切换实现分析和 NameNode 的共享存储实现分析.文章的最后在结合作者自身实践的基础上,列举了一些在高可用运维过程中需要注意的事项. 0 评论 程

Hadoop生态系统

摘要:介绍Hadoop生态系统,从Hadoop生态系统有什么成员,成员能做什么和Hadoop生态系统能够提供大数据问题解决方案两方面来认识. 关键词:Hadoop  HDFS  MapReduce   HBase  Hive  Pig Hadoop生态图,通俗地说,就是Hadoop核心模块和衍生的子项目. 一幅Hadoop生态图,让我想到了两个问题. 问题一:Hadoop生态系统包括哪些成员?每个成员各自扮演什么样的角色? 问题二:从系统论的角度来观察,Hadoop生态系统为我们破解大数据问题可

比较Apache Hadoop生态系统中不同的文件格式和存储引擎的性能

这篇文章提出了在Apache Hadoop生态系统中对比一些当前流行的数据格式和可用的存储引擎的性能:Apache Avro,Apache Parquet,Apache HBase和Apache Kudu空间效率,提取性能,分析扫描以及随机数据查找等领域.这有助于理解它们中的每一个如何(何时)改善你的大数据工作负载的处理能力. 引言 最初把Hadoop文件格式和存储引擎做比较的想法是在初始系统修订版之一的驱动下完成的 --这个系统是在CERN中大规模调节Hadoop-ATLAS EventInd

Hadoop生态系统学习路线

主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等. 从2011年开始,中国进入大数据风起云涌的时代,以Hadoop为代表的家族软件,占据了大数据处理的广阔地盘.开源界及厂商,所有数据软件,无

Hadoop 生态系统

当下 Hadoop 已经成长为一个庞大的生态体系,只要和海量数据相关的领域,都有 Hadoop 的身影.下图是一个 Hadoop 生态系统的图谱,详细列举了在 Hadoop 这个生态系统中出现的各种数据工具. 这一切,都起源自 Web 数据爆炸时代的来临.Hadoop 生态系统的功能以及对应的开源工具说明如下. MapReduce Google的网络搜索引擎在得益于算法发挥作用的同时,MapReduce在后台发挥了极大的作用.MapReduce框架成为当今大数据处理背后的最具影响力的“发动机”.

hadoop生态系统的详细介绍

1.Hadoop生态系统概况 Hadoop是一个能够对大量数据进行分布式处理的软件框架.具有可靠.高效.可伸缩的特点. Hadoop的核心是HDFS和MapReduce,hadoop2.0还包括YARN. 下图为hadoop的生态系统: 2.HDFS(Hadoop分布式文件系统) 源自于Google的GFS论文,发表于2003年10月,HDFS是GFS克隆版. 是Hadoop体系中数据存储管理的基础.它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行.HDFS简化了文件的

hadoop 之Hadoop生态系统

1.Hadoop生态系统概况 Hadoop是一个能够对大量数据进行分布式处理的软件框架.具有可靠.高效.可伸缩的特点. Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YARN. 下图为hadoop的生态系统: 2.HDFS(Hadoop分布式文件系统) 源自于Google的GFS论文,发表于2003年10月,HDFS是GFS克隆版. 是Hadoop体系中数据存储管理的基础.它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行.HDFS简化了文件的

什么是Hadoop生态系统

在一些 Teiid 的一些文章和示例上都会有关于 JBoss Data Virtualization (Teiid) 通过 Hive 使用 Hadoop 作为数据源的信息.当使用 Hadoop 环境创建 Data Virtualization 示例时,比如 Hortonworks Data Platform, Cloudera Quickstart 等等,里面会包含大量的开源项目.本篇文章主要是对 Hadoop 生态系统有个初步的认识,以下的一些开源项目详情可以查看 hadoop ecosyst

(转)Hadoop生态系统

以下图1是hadoop生态图,通俗的说,就是hadoop核心模块和衍生的子项目. 图 1 Hadoop生态系统图 由图可知,hadoop生态系统包括以下成员: ①     各种浏览器,产生海量的Web数据: ②     Nutch项目,一个快速搜索海量网页的开源项目 ③     HDFS,Hadoop分布式文件系统,大数据的存储系统: ④     数据分析和可视化工具: ⑤     MapReduce,大数据处理系统: ⑥     非结构化数据采集和处理工具(fuse,webdav,chukwa