扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Hadoop中HDFS的基础概念是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
在荣昌等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作按需网站制作,公司网站建设,企业网站建设,品牌网站制作,成都营销网站建设,成都外贸网站建设公司,荣昌网站建设费用合理。
一:简单了解Hadoop:
Hadoop的框架最核心的设计就是:HDFS(Hadoop Distributed File System) 和 MapReduce。
HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
二:HDFS体系结构:
HDFS 是一个主/从(Master/Slave)体系结构,可以通过目录路径对文件执行CRUD操。但由于分布式存储的性质,HDFS集群拥有一个NameNode 和 一些DataNodes。NameNode管理文件系统的元数据,DataNode存储实际的数据。客户端通过同NameNode和DataNodes的交互访问文件系统。客户端联系NameNode以获取文件的源数据,而真正的文件I/O操作是直接和DataNode进行交互的。
NameNode也就是主控制服务器负责管理文件系统的命名空间,记录文件数据块咋每个DataNode上的位置和副本信息,协调客户端对文件的访问,以及记录命名空间内的改动或命名空间本身属性的改动。
DataNode负责他们所在物理节点上的存储管理。HDFS开放的文件系统的命名空间以便让用户以文件的形式存储数据。HDFS的数据都是“一次写入,多次读取”,而其文件通常是按照128MB被企鹅人称不同的数据块(Block),每个数据块尽可能地分散存储于不同的DataNode中。
NameNode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,还决定数据块到DataNode的映射。DataNode负责处理客户的读写请求,依照NameNode的命令,执行数据的创建,复制等工作。
eg:客户端要访问一个文件,首先,客户端从NameNode中获得组成该文件的数据块位置列表,即知道数据块被存储在哪些DataNode上,然后,客户端直接从DataNode上读取文件数据。此过程中,NameNode不参与文件的传输。
一个集群只有一个NameNode,集群中的其他机器各运行一个DataNode,也可以在运行NameNode的机器上同时运行DataNode,或者一台机器上运行多个DataNode。
NameNode使用事务日志(EditLog)记录HDFS元数据的变化,是用映像文件FsImage存储文件系统的命名空间,包含文件的映射及属性等。事务日志和映像文件都存储在NameNode的本地文件系统中。NameNode启动时候,从磁盘中读取映像文件和事务日志,把事务日志的事务都应用到内存中的映像文件上,然后将新的元数据刷新到本地磁盘的新的映像文件上中,这样可以截去旧的事务日志。该过程又称为检查点(Checkpoint)。
SecondaryNameNode辅助NameNode处理映像文件和事务日志。NameNode启动的时候合并映像文件和事务日志,而SecondaryNameNode会周期地从NameNode上复制映像文件和事务日志到临时目录,合并生成新的映像文件后在重新上传到NameNode,NameNode更新映像文件并清理事务日志,使得事务日志大小可控。
***********************************************************************************************************
1. NameNode
NameNode 是 HDFS的守护程序,负责记录文件是如何分割成数据块的,以及这些数据块分别被存储到哪些数据节点上。它的主要功能是对内存及I/O进行集中处理。
由于NameNode是Hadoop集群中的一个单点,一旦NameNode服务器宕机,整个系统无法运行。
NameNode存储的是元数据。
2. DataNode
集群中的每个从服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataaNode服务器上的后台程序进行通信,并且通过对相关的数据块进行读/写操作。
DataNode 存储的是实际数据。
3. SecondaryNameNode
SecondaryNameNode是一个用来监控HDFS状态的辅助后台程序。就像NameNode一样,每个集群都有一个SecondaryNameNode,并且部署在一台单独的服务器上,而SecondaryNameNode不同于NameNode,它不接收或记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期的保存HDFS元数据的快照。由于NameNode是单点的,通过SecondaryNameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时NameNode发生损坏,SecondaryNameNode可以及时地作为备用NameNode使用。
SecondaryNameNode 最重要的任务并不是为NameNode 元数据进行热备份,而是定期合并f s i m a g e 和e d i t s 日志,并传输给NameNode 。这里需要注意的是,为了减小NameNode压力,NameNode 自己并不会合并fsimage 和edits ,并将文件存储到磁盘上,而是交由SecondaryNameNode 完成。
4. ResourceManager
ResourceManager主要由以下几个部分组成:
用户交互
YARN分别针对普通用户,管理员和Web提供了三种对外服务,分别对应ClientRMService、AdminService和WebApp:
ClientRMService
ClientRMService是为普通用户提供的服务,它会处理来自客户端各种RPC请求,比如提交应用程序、终止应用程序,获取应用程序运行状态等。
AdminService
YARN为管理员提供了一套独立的服务接口,以防止大量的普通用户请求使管理员发送的管理命令饿死,管理员可通过这些接口管理集群,比如动态更新节点列表,更新ACL列表,更新队列信息等。
WebApp
为了更加友好地展示集群资源使用情况和应用程序运行状态等信息,YARN对外提供了一个Web 界面
5. NodeManager(NM管理)
NMLivelinessMonitor
监控NM是否活着,如果一个NodeManager在一定时间(默认为10min)内未汇报心跳信息,则认为它死掉了,会将其从集群中移除。
NodesListManager
维护正常节点和异常节点列表,管理exlude(类似于黑名单)和inlude(类似于白名单)节点列表,这两个列表均是在配置文件中设置的,可以动态加载。
ResourceTrackerService
处理来自NodeManager的请求,主要包括两种请求:注册和心跳,其中,注册是NodeManager启动时发生的行为,请求包中包含节点ID,可用的资源上限等信息,而心跳是周期性 行为,包含各个Container运行状态,运行的Application列表、节点健康状况(可通过一个脚本设置),而ResourceTrackerService则为NM返回待释放的Container列表、Application列表等。
6. Application管理
ApplicationACLsManager
管理应用程序访问权限,包含两部分权限:查看和修改,查看主要指查看应用程序基本信息,而修改则主要是修改应用程序优先级、杀死应用程序等。
RMAppManager
管理应用程序的启动和关闭。
ContainerAllocationExpirer
YARN不允许AM获得Container后长时间不对其使用,因为这会降低整个集群的利用率。当AM收到RM新分配的一个Container后,必须在一定的时间(默认为10min)内在对应的NM上启动该Container, 否则,RM会回收该Container。
安全管理
ResourceManage自带了非常全面的权限管理机制,主要由ClientToAMSecretManager、ContainerTokenSecretManager、ApplicationTokenSecretManager等模块完成。
资源分配
ResourceScheduler
ResourceScheduler是资源调度器,它按照一定的约束条件(比如队列容量限制等)将集群中的资源分配给各个应用程序。ResourceScheduler是一个插拔式模块,默认是FIFO实现,YARN还提供了Fair Scheduler和Capacity Scheduler两个多租户调度器。
关于Hadoop中HDFS的基础概念是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流