hadoop是用于管理海量数据,且能够对海量数据进行高效率处理的一种系统框架。其特点有:1.  扩容性:能可靠的存储和处理海量数据 2.成本低:普通的机器就能够组成服务器集群来进行数据的存储和处理3. 高效性:通过分发数据,hdoop可以再数据所在的节点上并行的处理它们4. 可靠性:hadoop能自动地维护数据的多份副本,当计算任务失败后能自动重新部署计算任务。

hadoop的两个核心项目:HDFS和MapReduce。HDFS是对文件管理的一种方式:分布式文件系统。MapReduce并行计算框架。

HDFS像mysql系统一样,也是对文件的一种管理方式。其特点有:1.文件分布式存储2.通透性。通过网络进行数据的访问,由程序和用户看来就像是在访问本地数据。3.容错性。系统中有些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失。适用于一次写入多次查询的情况,不支持并发写情况,小文件也不合适。HDFS架构是主从结构。一个主节点,多个从节点。主节点是namenode,从节点是datanode。namenode的作用:1.接收用户操作请求 2.维护系统文件的目录结构 3. 管理block与文件,block与datanode的关系。datanode的作用1.文件被分为block块存储到磁盘上2. 为保证数据的安全,数据会有多个副本。

MapReduce并行计算框架,其架构也是主从结构。一个主节点,多个从节点。主节点是JobTracker。JobTracker的作用1.接收用户提交的计算任务2. 分发计算任务给TaskTracker 3. 监控TaskTracker的执行情况。TaskTracker的作用:执行分配的任务

FS:调用文件系统。

文件分块原因:

1.当文件很大时,打开文件和读取文件都会影响执行效率

2.文件不分块,当该文件被一个进程打开后,其他进程就不能对该文件进行读写

3.数据的安全性考虑


namenode是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。


文件包括:


①fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。在linux存放的目录为${ hadoop.tmp.dir}/dfs/name。在实际开发中,若保留多份namenode,需要在hadoop中修改原hdfs目录下的hdfs-default.xml。

hadoop namenode双活 hadoop的两个功能_数据


②edits:记录操作事务动作的日志文件。假如数据都上传成功,日志会有一个结束标志,如果上传失败,会有个失败标志,根据标志进行事务的回滚


③fstime:保存最近一次checkpoint的时间


datanode提供真实文件数据的存储服务。


1.文件块(block): 最基本的存储单位。 对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。 HDFS默认Block大小是64MB, 以一个256MB文件,共有256/64=4个Block.每一个文件块都有一个对应的校验文件,用于网络传输文件块时。通过对比校验文件的内容,来验证所传输的文件块是否正确


2.不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间,是占用实际空间大小的


ion。多复本。默认是三个。




SecondaryNamenode 1.执行过程:从 NameNode 上下载元数据信息( fsimage,edits ),然后把二者合并,生成新的 fsimage ,在本地保存,并将其推送到 NameNode ,同时重置 NameNode 的 edits. fsimage 一直存在于内存中。触发合并有两种情况:一种是到了设定的合并周期,另一种情况是edits日志文件大小到了设定的值