HDFS初步学习

1.Hadoop介绍

  • 狭义上Hadoop是Apache软件基金会的一款开源软件,用java语言实现,允许用户使用简单地编程模型实现跨机器集群对海量数据进行分布式计算处理

  • Hadoop核心组件:

  • Hadoop HDFS(分布式文件存储系统):解决海量数据存储

  • Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度

  • Hadoop MapReduce(分布式计算框架):解决海量数据计算

  • 广义上Hadoop是指微软Hadoop打造的大数据生态圈

  • 注意:谷歌三篇论文

  • 1.基于GFS

  • 2.分布式计算框架MR

  • 3.谷歌结构化数据存储系统

2.Hadoop特性优点

  • 特点:

  • 扩容性

  • 成本低

  • 效率高

  • 可靠性

  • 还有通用性,简单等特性……

  • Hadoop版本更迭

  • 1.0-2.0

  • 2.0-3.0

  • Hadoop集群整体概述

  • Hadoop包括两个集群:HDFS集群和YARN集群.

  • 两个集群逻辑上分离,通常物理上在一起.

  • 两个集群都是标准的主从架构集群.

  • 思考:

  • 1.什么是逻辑上分离物理上连接在一起?

  • 逻辑上分离:

  • HDFS集群和yarn集群各自带领的节点不同(大哥,小弟,秘书都不互相占用)(逻辑上分离)

  • 物理上在一起:

  • 对于一台机器来说(以node1为例),其中内存中既有HDFS的节点的组成部分,又有yarn节点组成部分,所以HDFS和yarn物理上在一起.

  • 2.为什么没有MapReduce集群?有这样的说法吗?

  • 没有这样的说法,MapReduce是计算框架,代码层面的组件,没有集群一说

3.Hadoop集群初体验

  • 利用Hadoop分布式文件储存系统进行MapReduce操作完成词频统计

  • 问题:

  • 1.执行MR的时候,为什么先请求yarn?

  • 2.MR看上去是两个阶段,先Map在Reduce?

  • 3.处理小数据的时候MapReduce速度快吗?

4.HDFS分布式文件系统基础

  • 文件系统与分布式文件系统

  • 文件系统是一种存储和组织数据的方法,实现了数据的存储、分级组织、访问和获取等操作,使得用户对文件访问和查找变得更容易

  • 文件系统使用树形目录的抽象逻辑概念代替了硬盘等物理设备使用数据块的概念,用户不必关心数据底层存在硬盘哪里,只需要记住这个文件的所属目录和文件名即可

  • 文件系统通常使用硬盘和光盘这样的存储设备,并维护文件在设备中的物理位置。

  • 分布式存储系统应该有哪些核心属性

  • 1.分布式存储(无限拓展)

  • 解决的问题:

  • 数据量大,单机存储遇到瓶颈

  • 解决方案:

  • 单机纵向扩展:磁盘不够加磁盘,有上限瓶颈限制

  • 多机横向拓展:机器不够加机器,理论上无限拓展

  • 2.元数据记录(快速定位文件)

  • 解决的问题:文件分布在不同机器上不利于寻找

  • 解决方案:

  • 元数据记录下文件机器存储位置信息,快速定位文件位置

  • 3.分块存储(并行操作提高效率)

  • 解决的问题:

  • 文件过大导致单机存不下,上传下载效率低下

  • 解决方案:

  • 文件分块存储在不同机器,针对块并行(同时操作)操作提高效率

  • 4.副本机制(数据安全)

  • 解决的问题:

  • 硬件故障难以避免,数据容易丢失

  • 解决方案:

  • 不同机器设置备份,冗余存储,保障数据安全

  • HDFS简介

  • Hadoop分布式文件系统(横跨多机器)

  • Hadoop是基石

  • HDFS主要是解决大数据如何存储问题的。分布式意味着是HDFS是横跨在多台计算机上的存储系统。

  • HDFS是一种能够在普通硬件上运行的分布式文件系统,它是高度容错的,适应于具有大数据集的应用程序,它非常适于存储大型数据(比如TB和PB)。

  • HDFS使用多台计算机存储文件,并且提供统一的访问接口,像是访问一个普通文件系统一样使用分布式文件系统。

  • HDFS起源发展、设计目标

  • 起源发展:百度百科

  • 设计目标:

  • 特别的,对于访问是HDFS的策划更倾向于一次写入多次读取的方式。

  • HDFS应用场景

  • HDFS重要特性

  • 主从架构

  • master/slave结构

  • 一般一个HDFS集群是有一个Namenode和一定数目的Datanode组成

  • 两种节点各司其职沟通协调完成分布式的文件存储服务

  • 分块存储

  • 物理上分块存储,默认128M/块

  • 可以在hdfs-default.xml中设置blocksize

  • 副本机制

  • 保证数据安全,默认是3个副本(1+2)

  • 元数据记录

  • matedata:记录数据的数据称之为元数据

  • 元数据分类

  • 文件自身属性信息

  • 文件名称、权限、修改时间、文件大小、复制因子、数据块大小

  • 文件块位置映射信息

  • 记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上

  • 抽象统一的目录树结构

  • namespace:命名空间具有层次形的文件组织结构

  • 目录结构只有文件、目录

5.shell命令行

  • 命令行界面(command-line interface,缩写CLI)是指用户通过键盘输入指令,计算机结束到指令后,予以执行的一种人机交互方式。

  • Hadoop提供了文件系统shell命令行客户端hadoop fs [generic options]

  • 简写hdfs dfs 例如:hdfs dfs -ls /

  • shell常用命令行

  • hdfs dfs -mkdir [ - p ]<path>…(递归的形式创建目录)

  • hdfs dfs -ls [-h] [-R] 目录(查看目录下内容 -h可以看文件大小,-R递归看下面全部内容)

  • hdfs dfs -put [-f][-p] 本地路径 HDFS目标路径(-f覆盖目标文件--》存在的情况下,-p保留访问和修改时间,所有权和权限)

  • hdfs dfs -get[-f][-p] HDFS目录 本地目录

  • hdfs dfs -cp [-f]拷贝

  • hdfs dfs -appendToFile 本地路径下文件们 HDFS路径下文件(在HDFS文件下追加写多个或者单个文件的内容)

  • hdfs dfs -mv 路径1 路径2 (剪切)

6.HDFS集群角色与职责

  • NameNode:

  • 功能:

  • 是Hadoop分布式文件系统的核心,架构中的主角色

  • 维护和管理文件系统元数据,包括名称空间目录树结构、文件和块的位置信息、访问权限等信息

  • 是访问HDFS的唯一入口

  • 实现方式:

  • NameNode内部通过内存和磁盘文件两种方式管理元数据

  • 其中磁盘上的元数据文件包括Fsimage内存元数据镜像文件和deits log编辑日志

  • 职责:

  • DataNode:

  • 功能:

  • HDFS的从角色,负责具体的数据块存储

  • DataNode的数量决定了HDFS集群的整体数据存储能力

  • 职责:

  • secondarynamenode:

  • 功能:

  • 充当NAMENode的辅助节点,但是不能替代NameNode。(并不是备份节点!!!不能代替NameNode)

  • 主要是帮助主角色进行元数据的合并动作,类似于做着秘书一样的功能

  • 每隔一段时间进行辅助数据合并

7.HDFS写数据流程与读数据流程

  • 上传文件、写入数据知识点

  • 核心概念-->Pipeline管道

  • Pipeline,是HDFS在上传文件写数据过程中采用的一种数据传输方式

  • 客户端将数据块写入第一个数据节点,第一个数据节点保存数据之后再将块复制到第二个数据节点,后者保存后将其复制到第三个数据节点

  • 为什么采用线性传输的而不采用同时兵分三路的拓扑式传输?

  • 核心概念--ACK应答响应(超时重传)

  • 核心概念--默认3副本存储策略(不把鸡蛋放在一个篮子里)

  • 写入文件步骤详解

  • 因为namenode已经知道文件是由哪些块组成的(DataStream请求分配数据块),

因此仅需等待最小复制块即可成功返回最小复制是由参数dfs.namenode.replication.min指定,默认是1

  • 读取文件方式:

  • 步骤:

  • 1.客户端发送请求,连接namenode

  • 2.namenode判断是否有权限、是否有此文件等,全部通过则返回block块的地址

  • 3.客户端接收完毕block块,列表去对应datanode节点并行连接读取block块数据

  • 4.查看是否不缺少block块,不缺啥进入第五步,缺少再进行请求,进行1-3步操作

  • 5.按照block块排序拼接,并返回一个最终文件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值