- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、Hadoop擅长做什么?不擅长做什么?
擅长做什么?
并行计算处理引擎
【1】日志分析
【2】排序
【3】广告计算,广告优化、分析,点击流分析,链接分析
【4】有哪些信誉好的足球投注网站关键字进行内容分类
【5】有哪些信誉好的足球投注网站引擎,创建索引
【6】word 计数,统计值计算,统计数据,过滤,分析,查询
【7】垃圾数据分析
【8】数据分析
【9】机器学习
【10】数据挖掘
二、Hadoop主要功能组件
Hadoop主要功能组件如图所示
NameNode DataNode 存储元数据存储文件内容元数据保存在内存中文件内容保存在磁盘保存文件,block,datanode之间的映射关系维护了block id到datanode本地文件的映射关系
HDFS采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。
NameNode的作用
Namenode维护文件系统的namespace,任何对文件系统namespace和文件属性的修改都将被Namenode记录下来。应用可以设置HDFS保存的文件的副本数目,文件副本的数目称为文件的 replication因子,这个信息也是由Namenode保存。
Datanode负责管理节点上它们附带的存储。在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,例如 打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。 Datanode在Namenode的指挥下进行block的创建、删除和复制。一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳,DataNode启动后向NameNode注册,通过后,周期性的向NameNode上报所有的块信息。 心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不可用。
三、Hadoop分布式包含哪些功能?高可用体现在哪些地方?
1、服务器的错误恢复
客户端
怎样避免由于客户端停机带来的资源被长期霸占的问题?
当客户端需要占用某文件的时候,与主控服务器签订的一个短期合同 。这个合同有一个期限,在这个期限内,客户端可以延长合同期限,一旦超过期限,主控服务器会强行终止此租约,将这个文件的享用权,分配给他人.
在打开或创建一个文件,准备追加写之前,会调用LeaseManager 的addLease 方法,在指定的路径下与此客户端签订一份租约。客户端会启动DFSClient.LeaseChecker 线程,定时轮询调用ClientProtocol 的renewLease 方法,续签租约。在主控服务器一端,有一个LeaseManager.Monitor 线程,始终在轮询检查所有租约,查看是否有到期未续的租约。如果一切正常,该客户端完成写操作,会关闭文件,停止租约,一旦有所意外,比如文件被删除了,客户端牺牲了,主控服务器都会剥夺此租约,如此,来避免由于客户端停机带来的资源被长期霸占的问题
DataNode
主控服务器NameNode 实现了DatanodeProtocol 接口,数据服务器DataNode 会在主循环中,不停的调用该协议中的sendHeartbeat 方 法,向NameNode汇报状况。在此调用中,DataNode会将其整体运行状况告知NameNode,比如:有多少可用空间、用了多大的空间,等等之 类。NameNode会记住此DataNode的运行状况,作为新的数据块分配或是负载均衡的依据。当NameNode处理完成此消息后,会将相关的指令 封装成一个DatanodeCommand 对象,交还给DataNode,告诉数据服务器什么数据块要删除什么数据块要新增等等之类,数据服务器以此为自己的行动依据。
但是,sendHeartbeat并没有提供本地的数据块信息给NameNode,那么主控服务器就无法知道此数据服务器应该分配什么数据块应该删除什么数据块,那么它是如何决定的呢?答案就是DatanodeProtocol定义的另一个方法,blockReport 。 DataNode也是在主循环中定时调用此方法,只是,其周期通常比调用sendHeartbeat的更长。它会提交本地的所有数据块状况给
文档评论(0)