Hadoop
作为一个大数据处理系统,最核心的包括:数据存储(HDFS)和数据处理(传统的计算模型是MapReduce)
数据处理
术语:
- MapReduce作业(Job)是客户端需要执行的一个工作单元:包括输入数据、MapReduce程序和配置信息。Hadoop将作业分为若干任务(task) 来执行,其中包括两类任务:map任务和reduce任务。这些任务运行在集群节点上,同过YARN进行调度。如果一个任务失败,它将在另一个 不同的节点山重新调度运行。
- Hadoop将MapReduce的输入数据划分成等长的小数据块,称为输入分片(input split)或简称“分片”。Hadoop为每个分片构建一个map任务,运行用户自定义的map函数处理分片。 注意: 分片是对于MapReduce计算模型的概念,计算模型对于自己输入数据的一种处理 后面介绍HDFS时会有“块”的概念,这个是针对于HDFS存储数据的
Hadoop分布式文件系统
管理网络中跨多台计算机存储文件系统称为分布式文件系统。该系统架构于网络之上。Hadoop自带一个称为HDFS的分布式文件系统。但是Hadoop是一个综合性的文件系统抽象,可以与其他存储系统集成,例如本地文件系统,Amazon S3系统。
1 HDFS的设计
- 超大文件:对于大容量的文件
- 流式数据访问:HDFS的构建思路是:一次写入,多次读取是最高效的访问模式。 数据集通常由数据源生成,或从数据源复制而来,接着在此数据集上长时间进行各种分析,每次分析都涉及该数据集上的大部分数据甚至全部
- 低时间延迟的数据访问:要求低时间延迟数据访问的应用,如几十毫秒,不适合在HDFS上运行。HDFS是为高数据吞吐量为目标的
- 大量的小文件:(不太明白)
- 多用户写入,任意修改文件:HDFS中的文件写入支持单个写入者,而且写操作总是以“只添加”方式在文件末尾写数据。不支持多个写入者的操作,也不支持在文件的任意位置进行修改。
2 HDFS的概念
-
数据块 每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位,构建于单个磁盘上的文件系统通过磁盘块来管理该文件系统中的块,一般文件系统中的块是磁盘中块大小的整数倍
HDFS也有块的概念,但大得多,默认128MB,HDFS上的文件也被划分为块大小的多个分块,作为独立的存储单元。与单一磁盘的文件系统不同,HDFS中小于一个块大小的文件不会占据整个块的空间。
-
namenode, datanode HDFS集群,这两个概念是对应HDFS集群中的节点。
HDFS集群有两类节点,以“管理节点-工作节点”模式运行,即一个namenode(管理节点)和多个datanode(工作节点)。namenode管理文件系统的命名空间,它维护着文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。namenode也记录着每个文件中各个块所在的数据节点信息,但它并不会永久保持块的位置信息,因为这些信息会在系统启动时根据数据节点信息重建。
DataNode是文件系统的工作节点,根据需要存储并检索数据块,定期向namenode发送它们所存储的块的列表。
YARN
是Hadoop的集群资源管理系统,YARN被引入Hadoop 2,最初是为了改善MapReduce的实现,但它具有足够的通用性,同样可以支持其他的分布式计算模式。