大数据HDFS凭啥能存下百亿数据?
前言
大家平时经常用的百度网盘存放电影、照片、文档等,那有想过百度网盘是如何存下那么多文件的呢?难到是用一台计算机器存的吗?那得多大磁盘啊?显然不是的,那本文就带大家揭秘。
分布式存储思想
既然一台机器的存储所需的磁盘有上限瓶颈,那么我们能否利用多台机器形成一个整体用来存储呢?这就是我们所说的分布式存储。
单机纵向扩展:磁盘不够加磁盘,有上限瓶颈限制多机横向扩展:机器不够加机器,理论上无限扩展
Hadoop就是采用了这样的一个思想,设计出了分布式存储系统HDFS。HDFS介绍和使用
HDFS(Hadoop Distributed File System ),意为:Hadoop分布式文件系统。它是Apache Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。也可以说大数据首先要解决的问题就是海量数据的存储问题。HDFS主要是解决大数据如何存储问题的。分布式意味着是HDFS是横跨在多台计算机上的存储系统。HDFS是一种能够在普通硬件上运行的分布式文件系统,它是高度容错的,适应于具有大数据集的应用程序,它非常适于存储大型数据 (比如 TB 和 PB)。HDFS使用多台计算机存储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统。HDFS使用
HDFS安装好了,具体是如何使用呢,如何上传和下载文件呢?一共有两种方式,通过shell命令和web页面。shell命令操作HDFS
类似linux命令,可以直接通过在命令行界面操作。Hadoop提供了文件系统的shell命令行客户端: hadoop fs [generic options]
创建文件夹
hadoop fs -mkdir [-p] ...
path 为待创建的目录
-p 选项的行为与Unix mkdir -p非常相似,它会沿着路径创建父目录。查看指定目录下内容
hadoop fs -ls [-h] [-R] [ ...]
path 指定目录路径
-h 人性化显示文件size
-R 递归查看指定目录及其子目录
上传文件到HDFS指定目录下
hadoop fs -put [-f] [-p] ...
-f 覆盖目标文件(已存在下)
-p 保留访问和修改时间,所有权和权限。
localsrc 本地文件系统(客户端所在机器)
dst 目标文件系统(HDFS)hadoop fs -put zookeeper.out /alvin hadoop fs -put file:///etc/profile hdfs://node1:8020/alvin 复制代码查看HDFS文件内容
hadoop fs -cat ...
读取指定文件全部内容,显示在标准输出控制台。
注意:对于大文件内容读取,慎重。下载HDFS文件
hadoop fs -get [-f] [-p] ...
下载文件到本地文件系统指定目录,localdst必须是目录
-f 覆盖目标文件(已存在下)
-p 保留访问和修改时间,所有权和权限。
更多命令可以查看官方文档
hadoop.apache.org/docs/r3.3.0…
2.web界面操作HDFS
另外一种更简单直观的方式是通过web界面操作HDFS,默认是50070端口,如下图所示:
HDFS的架构
HFDS采用分布式的架构,可能有成百上千的服务器组成,每一个组件都有可能出现故障。因此故障检测和自动快速恢复是HDFS的核心架构目标,下面是HDFS的官方架构图:
主从架构
HDFS集群是标准的master/slave主从架构集群,一般一个HDFS集群是有一个Namenode和一定数目的DataNode组成。
主角色:NameNodeNameNode是Hadoop分布式文件系统的核心,架构中的主角色。 NameNode维护和管理文件系统元数据,包括名称空间目录树结构、文件和块的位置信息、访问权限等信息。 基于此,NameNode成为了访问HDFS的唯一入口。
从角色:DataNodeDataNode是Hadoop HDFS中的从角色,负责具体的数据块存储。 DataNode的数量决定了HDFS集群的整体数据存储能力,通过和NameNode配合维护着数据块。
主角色辅助角色: SecondaryNameNode
此外,HDFS中还有一个SecondaryNameNode,虽然途中没有画出,那它有什么用呢?Secondary NameNode充当NameNode的辅助节点,但不能替代NameNode。 主要是帮助主角色进行元数据文件的合并动作。可以通俗的理解为主角色的"秘书"。分块存储
由于有的文件很大,一台机器也存不下,于是HDFS会对我们的文件做一个物理上的切割,也就是分块存储。
HDFS中的文件在物理上是分块存储(block)的,默认大小是128M(134217728),不足128M则本身就是一块。
副本机制
既然分布式存储海量数据,那么肯定需要成千上百的机器,这样很有可能其中一台机器宕机,出故障了怎么办呢?
当然HDFS也想到了解决方案,文件的所有block都会有副本。副本系数可以在文件创建的时候指定,也可以在之后通过命令改变。副本数由参数dfs.replication控制,默认值是3,也就是会额外再复制2份,连同本身总共3份副本,而且这个副本尽量会分散在不同的机架上,规避风险。
NameNode高可用
既然DataNode有副本,出现数据丢失可能性很小,那NameNode挂了不是照样凉凉?
不用担心,那我在启动一个NameNode备在那里不就行了吗。
存在两个 NameNode,一个是活动的 NameNode,称为 Active,另外一个是备用的 NameNode,称为 Standby。Active节点的数据通过JournalNode节点同步给Standby节点。 当 Active 节点出现问题时,需要将 Standby 节点切换为 Active 节点来为客户端提供服务,这样就保证了高可用。元数据管理
前面提到NameNode中包含元数据,那么究竟具体是哪些内容呢?
在HDFS中,Namenode管理的元数据具有两种类型:文件自身属性信息
文件名称、权限,修改时间,文件大小,复制因子,数据块大小。文件块位置映射信息
记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上。
总结
现在你终于知道为什么百度网盘可以存下海量的数据了吧,主要采用的是分布式的存储,将数据分块多副本的方式存储到多个数据节点DataNode, 然后由唯一的NameNode节点去管理这个文件的信息,比如说它是在那些DataNode节点上,大小是多少等等,注意这里是DataNode主动告诉NameNode它这里有哪些文件块。
法国卫冕失败!马克龙打气姆巴佩让法国骄傲,希望德尚继续执教北京时间12月18日23时,卡塔尔世界杯决赛,阿根廷对阵法国。全场比赛结束,阿根廷常规时间33战平法国。点球大战42战胜法国,夺得卡塔尔世界杯冠军。法国在世界杯决赛点球不敌阿根廷,
是时候说出来了,我们欠国家一个道歉!头条创作挑战赛现在我终于可以肯定的说,我们欠国家一声道歉!今天,济南的天很冷,济南的气温很低,街头也很冷。我驱车行驶在济南的街头,突然发现冷冷清清,昔日的车水马龙再也不见!不是放开
国家发改委等11部门印发指导意见多措并举推动家政进社区央广网北京12月20日消息据中央广播电视总台中国之声新闻和报纸摘要报道,国家发展改革委等11部门印发的关于推动家政进社区的指导意见(以下简称意见)19日对外公布。意见提出,到202
梅西的家乡阿根廷离中国最远的国家要说今天晚上最热的话题,非阿根廷与法国的冠军争夺赛莫属。提到阿根廷,我们就会想到梅西,可阿根廷不止有梅西哦,今天让我们一起来认识离中国最遥远的国家阿根廷吧!一简介阿根廷,面积278
内讧爆发教练混日子!世界杯大热耻辱出局,冠军功勋宣布退队本届世界杯是相当多传奇球星的最后一次世界杯之旅,而西班牙队内同样有着布斯克茨这位2010年世界杯冠军功勋参与。同期的兄弟们都已经退出了国家队,也只有布斯克茨还在继续奋斗。但本届世界
一文详解浓眉至少伤停1月专家推断真实伤情湖人又遭重创太不幸北京时间12月19日,湖人球星安东尼戴维斯的核磁检查结果曝光,据名记shams报道,浓眉因右脚受伤至少缺席一个月,无限期缺战暂无具体复出时间表专家推断浓眉右脚的真实伤情中足扭伤或者
90后负债2000万赌球老哥站满天台文顾天杰赌球十赌九输2022年卡塔尔世界杯已经持续近一个月。除了在赛场上顽强拼搏的运动员,场外还有另一群人,在暗中用真金白银决胜负。他们也是球迷,只不过他们更爱另一件事赌球。为什么
一场相遇,一生回忆,遇见再多不如一个你女人离婚再婚,无非就是想找一个比之前更优秀的人,从而让自己的人生更为圆满,谈何容易呀!其实没有任何一句话,能够让你大彻大悟,醍醐灌顶,真正让你如梦初醒,看透人性的,只能是一段,刻骨
你所谓的迷茫,不过是清醒地看着自己沉迷1你努力了,成绩却没变化,这不能代表你没用,只能证明你在为过去的懒散买单,小说再完美,结局也有缺陷,害怕结果就不敢去做,坚持一半就放弃,这是弱者的表现,船停在港口最安全,但这不是造
县委大院金句频出,学习!做不到的就不要忽悠,稳扎稳打。求人不丢人,求不到人才丢人。好的成绩不一定都是因为我,但出了问题,算到头,都是我的。心中有党,心中有民,心中有责,心中有戒。人生没有那么多橡皮擦,有些
回顾梅西卡塔尔世界杯7粒进球,青春不悔天不负视频加载中梅西不需要另外一个冠军来证明自己,但是阿根廷需要!36年来他们无时无刻不在盼望着重回阿兹台克的荣耀巅峰,这也是梅西肩负的使命。阿根廷诗人博尔赫斯曾经说过,任何命运无论多么