大家好,我是大D。
今天开始给大家分享关于大数据入门技术栈——Hadoop的学习内容。
为了解决大数据中海量数据的存储与计算问题,Hadoop 提供了一套分布式系统基础架构,核心内容包含HDFS ( Hadoop Distributed File System, 分布式文件系统)、MapReduce计算引擎和YARN (Yet Another Resource Negotiator,另一种资源协调者)统一资源管理调度。
随着大数据技术的更新迭代,如今 Hadoop 不再是一个单独的技术,而是一套大数据处理的生态圈,如下图所示。
除了上述提到的 Hadoop 三个核心组件之外,还有数据采集工具Sqoop与Flume,它们可以将海量数据抽取到Hadoop平台上,进行后续的大数据分析;ZooKeeper能够保证Hadoop集群在部分节点宕机的情况下依然可靠运行();基于Hadoop运算平台的数据仓库Hive、流式计算Storm、数据挖掘工具Mahout和分布式数据库HBase等大数据技术框架。
HDFS (Hadoop Distributed File System, 分布式文件系统) 是Google公司的GFS论文思想的实现,也作为 Hadoop 的存储系统,它包含客户端(Client)、元数据节点(NameNode)、备份节点(Secondary NameNode)以及数据存储节点(DataNode)。
HDFS 利用分布式集群节点来存储数据,并提供统一的文件系统访问接口。这样,用户在使用分布式文件系统时就如同在使用普通的单节点文件系统一样,仅通过对 NameNode 进行交互访问就可以实现操作HDFS中的文件。HDFS提供了非常多的客户端,包括命令行接口、Java API、Thrift接口、Web界面等。
其职责主要有以下三点:
SecondaryNameNode 是 NameNode 元数据的备份,在NameNode宕机后,SecondaryNameNode 会接替 NameNode 的工作,负责整个集群的管理。并且出于可靠性考虑,SecondaryNameNode 节点与 NameNode 节点运行在不同的机器上,且 SecondaryNameNode 节点与 NameNode 节点的内存要一样大。
同时,为了减小 NameNode 的压力,NameNode 并不会自动合并 HDFS中的元数据镜像文件(fsimage)和编辑日志(editlog),而是将该任务交由 SecondaryNameNode 来完成,在合并完成后将结果发送到NameNode, 并再将合并后的结果存储到本地磁盘。
存放在HDFS上的文件是由数据块组成的,所有这些块都存储在DataNode节点上。DataNode 负责具体的数据存储,并将数据的元信息定期汇报给 NameNode,并在 NameNode 的指导下完成数据的 I/O 操作。
初始化时,集群中的每个 DataNode 会将本节点当前存储的块信息以块报告的形式汇报给 NameNode。在集群正常工作时,DataNode 仍然会定期地把最新的块信息汇报给 NameNode,同时接收 NameNode 的指令,比如创建、移动或删除本地磁盘上的数据块等操作。
HDFS 文件系统在设计之初就充分考虑到了容错问题,会将同一个数据块对应的数据副本(副本个数可设置,默认为3)存放在多个不同的 DataNode 上。在某个 DataNode 节点宕机后,HDFS 会从备份的节点上读取数据,这种容错性机制能够很好地实现即使节点故障而数据不会丢失。
NameNode简称NN
SecondaryNameNode简称2NN
大家好,我是大D。
今天开始给大家分享关于大数据入门技术栈——Hadoop的学习内容。
初识 Hadoop
为了解决大数据中海量数据的存储与计算问题,Hadoop 提供了一套分布式系统基础架构,核心内容包含HDFS ( Hadoop Distributed File System, 分布式文件系统)、MapReduce计算引擎和YARN (Yet Another Resource Negotiator,另一种资源协调者)统一资源管理调度。
随着大数据技术的更新迭代,如今 Hadoop 不再是一个单独的技术,而是一套大数据处理的生态圈,如下图所示。
除了上述提到的 Hadoop 三个核心组件之外,还有数据采集工具Sqoop与Flume,它们可以将海量数据抽取到Hadoop平台上,进行后续的大数据分析;ZooKeeper能够保证Hadoop集群在部分节点宕机的情况下依然可靠运行(干货总结!一文搞定 ZooKeeper ,面试再也不用背八股(文末送PDF));基于Hadoop运算平台的数据仓库Hive、流式计算Storm、数据挖掘工具Mahout和分布式数据库HBase等大数据技术框架。
HDFS
HDFS (Hadoop Distributed File System, 分布式文件系统) 是Google公司的GFS论文思想的实现,也作为 Hadoop 的存储系统,它包含客户端(Client)、元数据节点(NameNode)、备份节点(Secondary NameNode)以及数据存储节点(DataNode)。
Client
HDFS 利用分布式集群节点来存储数据,并提供统一的文件系统访问接口。这样,用户在使用分布式文件系统时就如同在使用普通的单节点文件系统一样,仅通过对 NameNode 进行交互访问就可以实现操作HDFS中的文件。HDFS提供了非常多的客户端,包括命令行接口、Java API、Thrift接口、Web界面等。
NameNode
其职责主要有以下三点:
SecondaryNameNode
SecondaryNameNode 是 NameNode 元数据的备份,在NameNode宕机后,SecondaryNameNode 会接替 NameNode 的工作,负责整个集群的管理。并且出于可靠性考虑,SecondaryNameNode 节点与 NameNode 节点运行在不同的机器上,且 SecondaryNameNode 节点与 NameNode 节点的内存要一样大。
同时,为了减小 NameNode 的压力,NameNode 并不会自动合并 HDFS中的元数据镜像文件(fsimage)和编辑日志(editlog),而是将该任务交由 SecondaryNameNode 来完成,在合并完成后将结果发送到NameNode, 并再将合并后的结果存储到本地磁盘。
DataNode
存放在HDFS上的文件是由数据块组成的,所有这些块都存储在DataNode节点上。DataNode 负责具体的数据存储,并将数据的元信息定期汇报给 NameNode,并在 NameNode 的指导下完成数据的 I/O 操作。
初始化时,集群中的每个 DataNode 会将本节点当前存储的块信息以块报告的形式汇报给 NameNode。在集群正常工作时,DataNode 仍然会定期地把最新的块信息汇报给 NameNode,同时接收 NameNode 的指令,比如创建、移动或删除本地磁盘上的数据块等操作。
HDFS数据副本
HDFS 文件系统在设计之初就充分考虑到了容错问题,会将同一个数据块对应的数据副本(副本个数可设置,默认为3)存放在多个不同的 DataNode 上。在某个 DataNode 节点宕机后,HDFS 会从备份的节点上读取数据,这种容错性机制能够很好地实现即使节点故障而数据不会丢失。
HDFS的工作机制
NameNode 工作机制
NameNode简称NN
SecondaryNameNode工作机制
SecondaryNameNode简称2NN
HDFS文件的读取流程
HDFS文件的写入流程
更多图解大数据技术的干货文章,关注公众号: Data跳动,回复:图解系列。