???? HDFS是Hadoop家族成员之一,Hadoop还包括hive ,hbase ,zombie,mapreduce等。
首先介绍一下hdfs:
??????????????????????????? 全称是?? Hadoop distributed file system, 中文称? “分布式文件系统”
????????????????????????????其特点:高容错性,保证了数据不易丢失,维护数据的完整性。
??????????????????????????? 适用对象:适用于大规模数据集。
?????????????????????????? hdfs被设计成适合批量处理的,而不是交互式,重点在数据的吞吐量。
?????????????????????????? hdfs是主从结构,即一个主节点(namenode)和多个从节点(datanode).
既然是分布式文件系统,当然是为了存储文件而生,文件是由数据组成的,也可以理解成元数据+文件类容。
namenode:
?????????????? 1.用来存储文件的元数据(即文件的文件名,文件大小,建立文件的日期,路径等文件属性)
???????????????2,元数据保存在内存中。
???????????????3,保存文件block,datanode之间的映射关系。
datanode:
??????????????? 1.存储文件类容
??????????????? 2.文件保存在硬盘中
???????????????3. 维护了block id 到datanode本地文件的映射关系。
HDFS运行机制:
1.一个名字节点和多个数据节点。
2.数据复制(数据复制,保证数据完整性,不易丢失)。
3.存放位置,即不能部署在一个机架上,至少要两个机架。
故障检测:
1.心跳包检测(检测是否宕机)。
2,块报告(安全模式下检测)。
3.数据完整性检测(检验比较)。
HDFS数据存储单元(block):
1.数据的存储单元是block
2.默认是64MB
3.大小不到64MB,可单独存储一个block。
文件存储方法:
1.按照大小被切分成若干个block存储在不同的节点上。
2.默认情况下,每个block都有三个副本。
注意事项:block大小和副本数通过client编译上传文件设置,文件上传成功后,副本数可以变更,大小是不可以变更的。
HDFS写数据流程:
客户端要向hdfs写数据,首先要跟namenode通信,以确认可以写文件并获得接受文件block的datanode,然后,客户端按顺寻将文件着个block传递给相应的datanode,并由接收到的block的datanode负责向其他的data复制block的副本。如图所示
HDFS读数据流程:
????? 客户端将要读取的数据的路径发送给namenode,namenode获取文件的元信息主要是block的存放位置信息,返回给客户端,根据返回的信息找到相应的datanode逐个获取文件的block并在客户端本地进行数据分析合并从而获得整个文件。如图所示
读文件流程
体会:
???????????? 写文件流程就是说;把大规模数据导入到搭建的分布式文件系统中去,首先要请求人家,不请求是不礼貌的,请求完后,人家在检测一下,这里检查是元数据,万一,你的数据出错呢,完事后,人家会给你个消息,告诉你导入的文件放在哪里,不能随便放置,要根据block的地址来存放这些文件,因为存放文件类容的datanode有很多,所以datanode之间也要建立联系,到这里已经规定了,block的数量和大小,这些工作准备好后就可以把文件写到分布式系统中去了。
?????????? 读文件流程就是:把已经写好的文件取出来,首先你要知道存放文件的路径,而路径存放在namenode中,然后,namenode把路径信息返回给client,而后client根据返回的路径信息去找到datanode中的文件类容,并在客户端加以分析获得整个文件。
HDFS设计思想:
总的来说,hdfs 就是一个存储大量数据文件的文件系统,hdfs包含这三个主要成员(client,namenode,datanode),client 负责发送请求,接收反馈的信息,namenode负责存放元数据,datanode负责存放文件类容。前者存放在内存中,后者存放在硬盘里。
???
存放模式
?????????? 可以举个栗子来说明,在没有这个技术之前,数据都是存放在一台机子上,当有大量的数据要读写时要花费漫长的时间,比如有100TB的数据,放在一台机子上要读半天的时间,但是有这个技术之后,数据可以存放在很多机子上,比如存放在1000台机子上,平均下来,每台机子才存放0.1TB的数据,在读数据的时候让1000台机子同时工作,这样可以大大节省时间,可能一个半小时就OK了。如果嫌这个栗子不好吃,在说个好吃的,假如,在大海里有一头鲸鱼快乐的玩耍,然而,有一条饿疯了的大白鲨看到这个鲜美的鲸鱼,就上去开吃,大白鲨得用多长的时间才能够把这头鲸鱼吃完,即使吃完,这条大白鲨还能像以前那样毫发无损吗? 但是,大白鲨换成食人鱼呢!,不要问我大海里哪来的食人鱼,我这是举个栗子,全世界的食人鱼一起来吃这个鲸鱼,你一口,我一口,他一口,你一口,我一口,他一口,。。。。。。。。?!拔圆?我来晚了,我没吃到,你们都吃完了”最后一个到达吃货现场的食人鱼说到?!拔颐腔姑怀员ツ?,在找找还有没有其他鲸鱼”其他的食人鱼答道。
这就是hdfs的优势,虽然单个存储数据不如大型机子,但是当多个机子联合起来就是王者