大数据Hadoop之HDFS模块《》

      相信看到这篇文章的对于Hadoop已经有了一点的理解,那么咱们废话少说,直接进入正题。
    
      **《一》HDFS的概念**
      
      先来看一个问题: 什么是HDFS?它有什么用?
      **HDFS**,一个高可靠、高容错、高吞吐量,适合大规模数据集应用的分布式文件存储系统。所谓分布式,就是指将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
   来看看它的优点:
   	一、高可靠性
   	   Hadoop一般应用在成千上万的集群之上,可以搭建hadoop的高可靠集群,内部容错功能优秀。
   	二、靠扩展性
   	    Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
   	三、高效性
   	    Hadoop能够在节点之间动态的移动数据,并保证各个节点的动态平衡,因此处理速度特别快。
   	四、高容错性
   	    Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
    正所谓万事万物都有其两面性,HDFS自然有它的缺点:
        1、 不适合低延迟数据访问(数据比较大)。
        2、 无法高效存储大量小文件    
        3、 不支持多用户写入及任意修改文件。(一次性写,多次读,可追加,无法修改)
        
        《二》HDFS三大服务介绍
      
        一、Namenode     
        它是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。      
        文件操作,Namenode 负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟哪个DataNode联系,否则NameNode会成为系统的瓶颈。     
        副本存放在哪些DataNode上由NameNode来控制,根据全局情况做出块位置决定,读取文件时NameNode尽量让用户优先读取最近的副本,以此来降低块消耗和读取延时。     
        NameNode 全权管理数据块的复制,它周期性地从集群中的每个DataNode接受心跳和块状态报告(Blockreport),接收到心跳意味着该Datanode 节点工作正常,块状态报告包含了一个该Datanode上所有数据块的列表。
        二、SecondaryNameNode              
        首先说下最重要的一点SecondaryNameNode并非 NameNode 的热备。当 NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。(不能、不能、不能 重要的事情说三遍!!!),它的功能在下面:
        (1) 辅助 NameNode,分担其工作量。
        (2) 定期合并 Fsimage 和 Edits,并推送给 NameNode。
        (3) 在紧急情况下,可辅助恢复 NameNode。
        三、DataNode        
        一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳     
        DataNode启动后向NameNode注册,通过后,周期性(一小时)的向NameNode上报所有块信息     
        心跳是每三秒一次,心跳返回结果带有NameNode给该DataNode的命令,如复制块数据到另一台机器,或者删除某个数据块。如果超过十分钟没有收到某个DataNode的心跳,则认为该节点不可用     
        集群运行中可以安全加入和退出一些机器。(服役与退役)
       
        《三》其它概念补充
	  1.文件权限      
	  hdfs文件权限与linux文件权限类似,r:read,w:write,x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容 
          如果Linux 系统用户zhangsan使用hadoop命令创建了一个文件,那么这个文件在HDFS中的owner 就是zhangsan     
          HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信你告我你是谁,我就认为你是谁。
	  2.HDFS 文件块大小      
	  HDFS 中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在 hadoop2.x 版本中是 128M,老版本中是 64M。 HDFS 的块比磁盘的块大,其目的是为了最小化寻址开销。如果块设置得足够大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。因而,传输一个由多个块组成的文件的时间取决于磁盘传输速率。如果寻址时间约为 10ms,而传输速率为 100MB/s,为了使寻址时间仅占传输时间的 1%,我们要将块大小设置约为 100MB。默认的块大小 128MB。块的大小:10ms*100*100M/s = 100M
	  
	  看了这么多概念,肯定迫不及待的想要实战了吧,下章介绍关于常用命令和HDFS的读写流程!

猜你喜欢

转载自blog.csdn.net/Forever_ck/article/details/84397914
今日推荐