我认为的HDFS(一)

     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(一)_第1张图片

HDFS读数据流程:

      客户端将要读取的数据的路径发送给namenode,namenode获取文件的元信息主要是block的存放位置信息,返回给客户端,根据返回的信息找到相应的datanode逐个获取文件的block并在客户端本地进行数据分析合并从而获得整个文件。如图所示

读文件流程

我认为的HDFS(一)_第2张图片

体会:

             写文件流程就是说;把大规模数据导入到搭建的分布式文件系统中去,首先要请求人家,不请求是不礼貌的,请求完后,人家在检测一下,这里检查是元数据,万一,你的数据出错呢,完事后,人家会给你个消息,告诉你导入的文件放在哪里,不能随便放置,要根据block的地址来存放这些文件,因为存放文件类容的datanode有很多,所以datanode之间也要建立联系,到这里已经规定了,block的数量和大小,这些工作准备好后就可以把文件写到分布式系统中去了。

           读文件流程就是:把已经写好的文件取出来,首先你要知道存放文件的路径,而路径存放在namenode中,然后,namenode把路径信息返回给client,而后client根据返回的路径信息去找到datanode中的文件类容,并在客户端加以分析获得整个文件。


HDFS设计思想:

我认为的HDFS(一)_第3张图片
设计思想




总的来说,hdfs 就是一个存储大量数据文件的文件系统,hdfs包含这三个主要成员(client,namenode,datanode),client 负责发送请求,接收反馈的信息,namenode负责存放元数据,datanode负责存放文件类容。前者存放在内存中,后者存放在硬盘里。


   

存放模式

           可以举个栗子来说明,在没有这个技术之前,数据都是存放在一台机子上,当有大量的数据要读写时要花费漫长的时间,比如有100TB的数据,放在一台机子上要读半天的时间,但是有这个技术之后,数据可以存放在很多机子上,比如存放在1000台机子上,平均下来,每台机子才存放0.1TB的数据,在读数据的时候让1000台机子同时工作,这样可以大大节省时间,可能一个半小时就OK了。如果嫌这个栗子不好吃,在说个好吃的,假如,在大海里有一头鲸鱼快乐的玩耍,然而,有一条饿疯了的大白鲨看到这个鲜美的鲸鱼,就上去开吃,大白鲨得用多长的时间才能够把这头鲸鱼吃完,即使吃完,这条大白鲨还能像以前那样毫发无损吗? 但是,大白鲨换成食人鱼呢!,不要问我大海里哪来的食人鱼,我这是举个栗子,全世界的食人鱼一起来吃这个鲸鱼,你一口,我一口,他一口,你一口,我一口,他一口,。。。。。。。。。“卧槽 我来晚了,我没吃到,你们都吃完了”最后一个到达吃货现场的食人鱼说到。“我们还没吃饱呢,在找找还有没有其他鲸鱼”其他的食人鱼答道。

这就是hdfs的优势,虽然单个存储数据不如大型机子,但是当多个机子联合起来就是王者











你可能感兴趣的:(我认为的HDFS(一))