Hadoop生态集群之HDFS

、HDFS是什么

二、HDFS的搭建

三、HDFS的组成

四、HDFS的存储流程和原理

五、HDFS的shell命令

一、HDFS是什么

  HDFS是hadoop集群中的一个分布式的我文件存储系统。他将多台集群组建成一个集群,进行海量数据的存储。为超大数据集的应用处理带来了很多便利。

  和其他的分布式文件存储系统相比他有以下优点:

  高容错:即在HDFS运行过程中,若其中一台机器宕机了,也无需担心数据的丢失,因为在存储的过程中进行了备份,备份数量可以选择,这个将在后面的博客说明。

  成本低:即使配置条件不足的情况下,都可以搭建一个HDFS,对硬件的要求不高。

  易扩展:若出现集群容量不足的情况,直接添加机器,进行配置即可,无需太麻烦的操作。

  高吞吐量:HDFS能够提供比较吞吐量的数据访问,这里是访问不是修改

  在满足以上有点的同时,也存在一些不足:

  对于对数据的访问时间要求较高的情况下,HDFS并没有什么优势,这一点会在原理上进行解释。

  不利于同时有大量的用用户进行文件的修改操作。

二、HDFS的平台搭建

  搭建HDFS集群的方式有很多种,目前在企业工作中应用较多的是通过cloudera manager来对整个hadoop集群进行搭建,同时提供一整套的监控平台进行监控,大大提高了维护成本。但是对于初学者来说还是进行源码的方式安装

这样有助于大家更加深入的了解HDFS的工作原理和配置参数的作用,小编在这就通过这种方式进行安装,当然如果有兴趣的读者,我会在接下来的时间通过cloudera manager的方式进行搭建。

  搭建准备:注意这是在linux机器上进行搭建,如对如何配置linux环境的同学不动的话,可以在网上进行搜索,小编也会更新博文给大家提供便利。

主机名:hdp-01  对应的ip地址:192.168.33.61
主机名:hdp-02  对应的ip地址:192.168.33.62
主机名:hdp-03  对应的ip地址:192.168.33.63
主机名:hdp-04  对应的ip地址:192.168.33.64

  第一步:关闭防火墙

[root@hdp1 ~]# service iptables stop  # 临时关闭
[root@hdp1 ~]# chkconfig iptables off  # 关闭防火墙开机自动启动

  第二步:安装jdk,因为hdfs是通过java语言开发的,所以需要我们安装java的运行环境

  jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  

    下载对应版本:我这里下载的是 

tar -zxvf jdk-8u191-linux-x64.tar.gz

  对应整个集群环境,为了方便管理可以将安装包上传到 /usr/local/src下面

  解压:

二、HDFS数据存储原理

  要了解HDFS数据的存储原理,就必须知道HDFS的工作原理,通过工作原理,我们就可以得出HDFS的数据存储原理。

hdfs有着文件系统共同的特征:

1、有目录结构,顶层目录是:  /

2、系统中存放的就是文件

3、系统可以提供对文件的:创建、删除、修改、查看、移动等功能

hdfs跟普通的单机文件系统有区别:

1、单机文件系统中存放的文件,是在一台机器的操作系统中

2、hdfs的文件系统会横跨N多的机器

3、单机文件系统中存放的文件,是在一台机器的磁盘上

4、hdfs文件系统中存放的文件,是落在n多机器的本地单机文件系统中(hdfs是一个基于linux本地文件系统之上的文件系统)

hdfs的工作机制:简单的讲,hdfs是分布式的文件存储系统,它可以将一个大的文件切块,将这些块存储在不同的服务器上。

1、客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:datanode)<准确来说:切块的行为是由客户端决定的>,切块的大小,切块的副本数这些都可以由

客户端进行指定,若没有进行指定,则HDFS会自动加载配置文件中配置的信息,进行切块大小,副本数量信息。

2、一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node),这样可以方便客户端在访问hdfs文件系统时准确的

找到每一块文件存储在哪些节点上,将切块的数据进行归整,同时他又可以合理的控制磁盘IO问题。

3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本,保证当其中一台机器宕机后,namenode可以通过记录的副本信息找到切块的文件。(到底存几个副本,是由当时存入该文件的客户端指定的)

综述:一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!

如下图所示,就是一个简单的HDFS分布式文件系统的模型:

     存储文件的详情:请看下图

    

      HDFS文件存储信息:

        1、hdfs客户端与服务端进行交互,将文件存储在hdfs集群中。

           2、hdfs服务端将客户端传来的文件,根据参数进行切块、复制,并将这些块存储在hdfs的datanode节点中。

                          3、hdfs的namenode节点记录某个文件的元数据(元数据包含文件大小,文件路径,文件块存储在哪个地方,副本信息等)

       

         HDFS读取数据流程如下图:

      

 

      HDFS写数据流程数据流程如下图:

      

     

      

猜你喜欢

转载自www.cnblogs.com/wallacewang/p/10012623.html