Hadoop主要由HDFS和MapReduce引擎两部分组成。 从0.20.X分支发展出hadoop 1.0.X版 目前是稳定版本。生产环境优先使用。 分布式文件系统(DFS) 1、是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的用户分享文件和存储空间。 2、对用户透明。用户看来像访问本地的磁盘一样。 3、容错性。即使系统中某个节点宕机,整体系统仍然可以持续运作而不会有数据丢失。 HDFS的架构 主从(Master-Slave),master在系统中只有一个,slave在系统中可以有多个。master维护namenode。 slave维护datanode。 Namenode:整个文件系统的管理节点。负责文件系统名称空间的管理与维护,客户文件操作的控制及具体存储任务的管理与分配。元数据的管理。元数据(fsimage:存储某一时段NameNode内存元数据信息;edits: 操作日志文件;fstime:保存近一次chechpoint的时间;version:标志性文件,表明前三个创建成功)。 hdfs-site.xml的dfs.name.dir的属性。 DateNode:提供真实文件数据的存储服务。文件分块(Block),默认块大小64MB。Replication:默认有两个副本。有三个文件保证文件的安全。在hdfs.site.xml的dfs.replication配置。 SecondaryNameNode:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,同时重置NameNode的editis.SecondaryNameNode默认安装在NameNode节点上,但这样不安全,可以移动位置。 HDFS数据流-写文件流程: 1、客户端把数据缓存到本地临时文件夹 2、客户端联系NameNode,申请文件命名空间,文件权限等,NodeNode分配DataNode,DateNode依照客户端的位置被排列成一个有着近物理距离的序列。 3、与序列的第一个数据服务器建立Socket连接,发送请求头,然后等待回应,一次下传,客户端得到回包,流水线建立成功。 4、正式发送数据,以4K为大小传送。 HDFS数据流-读文件流程 客户端联系NameNode,得到所有数据块信息,以及数据块对应的所有数据服务器的位置信息尝试从某个数据块对应的一组数据服务器中选出一个,进行连接。数据被一个包一个包发送回客户端,等到整个数据块的数据都被读取完了,会断开此链接,尝试连接下一个数据块对应的数据服务器,整个流程,依次如此反复,直到所有想读的都读取完了为止。