地表最强系列之:带你学HDFS

HDFS是什么?

  1. 认识HDFS

HDFS是Hadoop项目的核心子项目,用于大数据领域的数据储存 。HDFS是被设计成适合运行在通用硬件上的分布式系统它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

  1. HDFS优点

     - 支持处理超大文件。这里的超大文件通常是指GB到TB量级的数据文件.
     - 可以运行在廉价的机器上,减少成本.
     - 高容错率。HDFFS上传的数据会自动保存多个副本,即通过增加副本的数量来增加HDFS的容错率。一个副本丢失,HDFS股本冗余机制会自动复制到其他机器上的副本。
     - 流式文件写入。HDFS提供一次写入、多次读取的服务。文件一旦写入,就不能修改,只能增加,可以提高I/O流的性能.
     - 
    
  • HDFS的缺点

      - 不适合低延迟数据访问场景.HDFS是为高吞吐数据传输设计的,因此可能牺牲延时HBase更适合低延时的数据访问。
      - 不适合小文件的储存场景.文件的元数据(如目录结构,文件block的节点列表,block-node mapping)保存在NameNode的内存中, 整个文件系统的文件数量会受限于NameNode的内存大小。 经验而言,一个文件/目录/文件块一般占有150字节的元数据内存空间。如果有100万个文件,每个文件占用1个文件块,则需要大约300M的内存。因此十亿级别的文件数量在现有商用机器上难以支持。
      - 不适合并发写入,文件随机修改的场景.
    

HDFS的架构

在这里插入图片描述

  • Client(客户端)

    • 文件切分。文件上传HDFS时,Client按照Block大小切分文件,然后进行存储
    • 与NameNode交互,获取文件位置信息
    • 与DataNode交互,读取或写入数据
    • Client提供一些命令管理和访问HDFS
  • 数据块(Block)

    • HDFS最基本的储存单位是数据块,CDH发行版默认的块大小是128MB
    • HDFS中的文件被分成以Block Size为单位的数据块结构储存,小于一个块大小的文件不会占据整个块的空间.
  • 元数据节点(NameNode)

    • 管理文件系统命名空间的主服务器和管理客户端对文件的访问组成,如打开,关闭和重命名文件和目录。负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系,维护目录树,接管用户的请求。
  • 数据节点 (DataNode)

    • 保存块,每个块对应一个元数据信息文件.这个文件主要描述块属于哪个文件,是文件中第几块等信息.
    • 启动Datanode进程的时候向Namenode汇报块信息.
    • 通过向Namenode发送心跳与其保持联系(3秒一次),如果Namenode在10分钟还没有收到Datanode的心跳,则认为该Datanode已经丢失,Namenode会将该DataNode上的块复制到其他Datanode上
  • 从元数据节点(Secondary Namenode)
    Secondary Namenode 并不是Namenode宕机时的备用 节点,它的主要作用是周期性地将EditLog文件中对HDFS的操作合并到一个FsImage(镜像文件)文件中,然后清空Editlog文件,防止日志文件过大.合并后的FsImage文件也在元数据节点保存了一份,Namenode重启时就会加载最新的FsImage文件,这样周期性地合并可以减少HDFS重启时间.Secondary Namenode 是用来帮助Namenode将内存中的元数据信息持久化到硬盘上的.

HDFS命令

hdfs dfs   -ls  /-mkdir/-put/-rm/-help
这个和Linux相似

使用HDFS shell操作完成移动通信数据管理

  • 创建存放数据文件的目录
hdfs dfs -mkdir /hdfs/shell
hdfs dfs -ls /hdfs/shell
  • 将通讯数据上传到HDFS并查看
hdfs dfs -put /home/hadoop/data/mobile.txt /hdfs/shell
hdfs dfs -text /hdfs/shell/mobile.txt
  • 下载文件到本地
hdfs dfs -get /hdfs/shell/mobile.txt /home/hadoop
  • 统计目录下文件大小
hdfs dfs -du /hdfs/shell
  • 删除移动数据文件和目录
hdfs dfs -rm /hdfs/shell/mobile.txt
hdfs dfs -rmr /hdfs

HDFS的副本机制

副本的存放位置会严重影响HDFS的可靠性和性能,HDFS上的文件对应的块保存有多个副本且提供容错机制,因此副本的丢失或宕机能够自动恢复,默认保存3个副本.HDFS副本摆放机制如图
在这里插入图片描述

  • 副本的存放策略
    一般情况下,当副本设置为3时,HDFS的副本摆放策略是将第一个副本放置在上传文件的DataNode上,第二个副本放置在同一机架的不同节点上,第三个副本放置在不同机架上.该策略可以减少机架间的写流量,提高写性能,并且该策略不会影响数据的可靠性和可用性
展开阅读全文

Python数据分析与挖掘

01-08
92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元   为什么习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。       从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。    本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。   二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。   三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助员扎实数据采集能力,避免没有数据可分析的尴尬。   四、分析工具篇: 讲解数据分析避不开的科计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。   五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度习,让你不仅能用起来,了解原理,还能知道为什么这么做。
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值