加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

兄弟,这种思路讲解HDFS你肯定没见过,快速入门Hadoop必备

发布时间:2019-11-07 07:16:10 所属栏目:教程 来源:IT技术管理那些事儿
导读:那咱们还是回到老话题上来,hadoop的组件讲解,总不能天天即兴发挥,今天讲分布式文件系统HDFS。 从RAID说起 大数据技术主要要解决的问题的是大规模数据的计算处理问题,那么首先要解决的就是大规模数据的存储问题。大规模数据存储要解决的核心问题有三个

事实上,DataNode会通过心跳和NameNode保持通信,如果DataNode超时未发送心跳,NameNode就会认为这个DataNode已经失效,立即查找这个DataNode上存储的block有哪些,以及这些block还存储在哪些服务器上,随后通知这些服务器再复制一份block到其他服务器上,保证HDFS存储的block备份数符合用户设置的数目,即使再有服务器宕机,也不会丢失数据。

HDFS应用

Hadoop分布式文件系统可以象一般的文件系统那样进行访问:使用命令行或者编程语言API进行文件读写操作。我们以HDFS写文件为例看HDFS处理过程,如下图。

兄弟,这种思路讲解HDFS你肯定没见过,快速入门Hadoop必备

HDFS写文件操作

  • 应用程序Client调用HDFS API,请求创建文件,HDFS API包含在Client进程中。
  • HDFS API将请求参数发送给NameNode服务器,NameNode在meta信息中创建文件路径,并查找DataNode中空闲的block。然后将空闲block的id、对应的DataNode服务器信息返回给Client。因为数据块需要多个备份,所以即使Client只需要一个block的数据量,NameNode也会返回多个NameNode信息。
  • Client调用HDFS API,请求将数据流写出。
  • HDFS API连接第一个DataNode服务器,将Client数据流发送给DataNode,该DataNode一边将数据写入本地磁盘,一边发送给第二个DataNode。同理第二个DataNode记录数据并发送给第三个DataNode。
  • Client通知NameNode文件写入完成,NameNode将文件标记为正常,可以进行读操作了。

HDFS虽然提供了API,但是在实践中,我们很少自己编程直接去读取HDFS中的数据,原因正如开篇提到,在大数据场景下,移动计算比移动数据更划算。于其写程序去读取分布在这么多DataNode上的数据,不如将程序分发到DataNode上去访问其上的block数据。但是如何对程序进行分发?分发出去的程序又如何访问HDFS上的数据?计算的结果如何处理,如果结果需要合并,该如何合并?

Hadoop提供了对存储在HDFS上的大规模数据进行并行计算的框架,就是我们之前讲的MapReduce。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读