设为首页 收藏本站
查看: 1020|回复: 0

[经验分享] Hadoop中HDFS和MapReduce节点基本简介

[复制链接]
YunVN网友  发表于 2018-10-31 12:22:22 |阅读模式
  Hadoop提供存储文件和分析文件的机制。
  HDFS负责文件的存储,MapReduce负责文件的分析过程。
  HDFS主要组件由NameNodeDataNode组成
  HDFS文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)
  NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等。它是一个中心服务器,单一节,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问,它维护着每个文件系统树和整棵树内所有的文件和目录,这些信息已两个文件形式永久保存在本地磁盘上:命名控件镜像文件(Fsimage)和编辑日志(Edit log)。文件操作,NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则NameNode会成为系统的瓶颈
  DataNode在本地文件系统存储文件块数据,以及块数据的校验和。可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。DataNode启动后向NameNode注册,通过后,周期性(1小时)向NameNode上报所有的块信息。心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不可用。
  当DataNode磁盘挂了,都会尽快的通知NameNode。如果该机器挂了,由于datanode每3秒钟向namenode发送心跳,如果10分钟datanode没有向namenode发送心跳,则namenode认为该datanode已经dead,namenode将取出该datanode上对应的block,对其进行复制。
  Map的数据流
  原理:利用一个输入key/value pair集合来产生一个输出的key/value pair集合
  Map函数:接受一个输入的key/value pair值,然后产生一个中间key/value pair值的集合。
  Reduce函数:接受一个由Map函数产生的中间key值和其相关的一个value值集合,然后分析合并这些value值
  在MapReduce中作业(Job)是客户端需要执行的工作单元,它包含了输入数据、MapReduce程序和配置信息。Hadoop将作业分为若干个小任务(task)来执行,其中每个小任务又分为Map任务和Reduce任务。
  两类节点控制着作业执行过程:一个JobTracker和多个TaskTracker。JobTracker主要就是调度TaskTracker来运行小任务,协调所有运行在系统上的作业。TaskTracker在运行小任务的时候,将进度报告给JobTracker,这样一旦发生错误,就由JobTracker来负责调度另一个TaskTracker。TaskTracker每隔3秒向JobTracker发送心跳来询问是否有任务可做,如有则让你分发任务给它,此时就是slave主动向master咨询。
  Hadoop对于用户输入的作业中的输入数据,由MapReduce将其划分为等长的小数据块。
  Hadoop仅仅在存储有输入数据的节点上运行Map任务,而且Map任务将其输出写入到本地磁盘中。当Map开始产生输出时候,数据首先写到内存的缓冲区中,进行预排序。这个默认的内存循环缓冲区大小为100MB,直到缓冲区达到80%的时候才将其数据spill到磁盘中。在输出中间结果的时候,可以使用Combiner来对其进行一个简单压缩。当缓冲区达到阀值的时候,都会产生一个spill文件,一个Map可能产生多个spill,在Map任务完成之前,都会将其产生的spill文件进行归并排序,然后删除临时的spill文件,通知TaskTracker自己的Map执行完毕.
  只要有一个Map任务完成,则Reduce就开始拷贝其输出,一个Reduce有多个拷贝线程。Reduce会对其Map的输出进行归并排序处理。Reduce的输出结果最终会存储在HDFS中,当有多个reduce任务,每个map任务都会为每一个reduce任务建立一个分区


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-628966-1-1.html 上篇帖子: 使用python来访问Hadoop HDFS存储实现文件的操作 下篇帖子: Ganglia监控Hadoop及Hbase集群性能(安装配置)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表