绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
www.archcn.netHadoop与HDFS
2019-09-10 16:43:25

Hadoop诞生于2002年,它的雏形是Apache Nutch项目(一个用Java实现的开源搜索引擎)。Hadoop的出现很好的解决了海量数据的存储计算问题。

2004年,Nutch创始人Doug Cutting实现了分布式文件存储系统,将其命名为HDFS,即Hadoop Distributed File System(Hadoop分布式文件系统),是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的文件系统。HDFS系统是一个分布式集群系统,由一个Master(NameNode)节点和多个Slave(DataNode)节点组成,如下图所示。

HDFS中的数据按照某种固定大小(如128MB)的块存储,每个块可以按照用户指定的副本数量存储在不同的机器上,NameNode维护文件系统的命名空间,包括文件到块的映射关系等所有的元数据,NameNode定期通过心跳消息与每一个DataNode通讯,给DataNode传递指令并收集其状态。DataNode维护本机器上的存储资源,一台机器上只有一个DataNode,DataNode定时与NameNode通信,给NameNode发送状态并接收NameNode指令。

HDFS的容错机制是通过简单的备份(默认数据是3)方式完成的,通过冗余机制可以保证,集群中任意两台机器宕机都不会造成数据丢失。虽然HDFS是主从结构,但是客户端与NameNode交互只限于元数据的读取,客户端读取数据时都直接与DataNode交互,并且可以与任意一个备份所在地的DataNode交互并读取数据。

2004年还出现了一种非常适用于大规模数据集(TB级或PB级)的编程模型MapReduce,其显著特点就是并行计算。2006年,HDFS和MapReduce升级命名为Hadoop,Hadoop的核心就是HDFS和MapReduce。MapReduce是一个针对大规模群组中海量数据处理的分布式编程模型,利用该模型,使用者只需关注想要执行的运算逻辑即可,而不必关心分布式执行中的容错、数据和计算分布、负载均衡等复杂的细节,MapReduce会自动处理这些问题。

上图为MapReduce的执行流程,UserProgram链接了MapReduce库,实现了基本的Map函数和Reduce函数。MapReduce程序的入口点是用户程序,用户只需要实现基本的Map和Reduce函数即可,并不需要了解Hadoop底层的工作机制,Hadoop的工作模型中有一个Master和多个Slave,Master主要负责整个任务的调度、资源分配以有给Slave分配工作。Slave在接收到Master分配的任务之后开始工作,并每隔一段时间向Master发送心跳,报告工作情况。在整个任务的执行过程中,中间结果写入磁盘文件,Reduce需要从磁盘读取Map结束时的数据,当整个任务都成完的时候,数据也被写入磁盘,输出结果按文件的形式写入磁盘,文件的个数由用户决定。

Hadoop适合应用于大数据存储和大数据分析,适合于几千台到几万台服务器集群运行,支持PB级的存储容量。Hadoop的典型应用有搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

数据库开发
创建时间:2020-06-17 14:33:07
数据库开发是数据库管理系统(DBMS)和数据库应用软件设计研发的总称,主要是数据运维、参与数据库生产环境的问题优化和解决等方面的事宜
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~