`

hadoop的运行原理

阅读更多

接上篇博客写的.今天现简单介绍下hadoop的运行原理.

hadoop的配置在这里我就不详细讲了,网上关于这方面的文章很多,有单机版的,也有集群的。
hadoop主要由三方面组成:
1、HDFS
2、MapReduce
3、Hbase

Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的, 简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写 ,为分布式计算存储提供了底层支持。

MapReduce从它名字上来看就大致可以看出个缘由,两个动词Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任 务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。这不是什么新思想,其实在前面提到的多线程,多任务的设计就可以找到这 种思想的影子。不论是现实社会,还是在程序设计中,一项工作往往可以被拆分成为多个任务,任务之间的关系可以分为两种:一种是不相关的任务,可以并行执 行;另一种是任务之间有相互的依赖,先后顺序不能够颠倒,这类任务是无法并行处理的。回到大学时期,教授上课时让大家去分析关键路径,无非就是找最省时的 任务分解执行方式。在分布式系统中,机器集群就可以看作硬件资源池,将并行的任务拆分,然后交由每一个空闲机器资源去处理,能够极大地提高计算效率,同时 这种资源无关性,对于计算集群的扩展无疑提供了最好的设计保证。(其实我一直认为Hadoop的卡通图标不应该是一个小象,应该是蚂蚁,分布式计算就好比 蚂蚁吃大象,廉价的机器群可以匹敌任何高性能的计算机,纵向扩展的曲线始终敌不过横向扩展的斜线)。任务分解处理以后,那就需要将处理以后的结果再汇总起 来,这就是Reduce要做的工作。


下面这个图很经典:

 

上图中展现了整个HDFS三个重要角色:NameNode、DataNode和 Client。NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode 会将文件系统的Meta-data存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等。 DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的 Block信息发送给NameNode。Client就是需要获取分布式文件系统文件的应用程序。这里通过三个操作来说明他们之间的交互关系。
 

文件写入:

  a):Client向NameNode发起文件写入的请求。
  b):NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
  c):Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

文件读取:

  a):Client向NameNode发起文件读取的请求。
  b):NameNode返回文件存储的DataNode的信息。
  c):Client读取文件信息。

文件Block复制:

  a):NameNode发现部分文件的Block不符合最小复制数或者部分DataNode失效。
  b):通知DataNode相互复制Block。
  c):DataNode开始直接相互复制.

下面综合MapReduce和HDFS来看Hadoop的结构:


Hadoop结构示意图

在Hadoop的系统中,会有一台Master,主要负责NameNode的工作以及JobTracker的工作。JobTracker的主要职责 就是启动、跟踪和调度各个Slave的任务执行。还会有多台Slave,每一台Slave通常具有DataNode的功能并负责TaskTracker的 工作。TaskTracker根据应用要求来结合本地数据执行Map任务以及Reduce任务。

把自己平时工作当中的代码贴出来解释下可能会更好的理解:
    FileInputFormat.setInputPaths(tempJob, hdfsHome); //  把本地的文件读入到HDFS中
    LOG.info(tempJobName + " data  start .....");

    tempJob.setJarByClass(tempMain.class); //设置这个Job运行是那个类
    tempJob.setMapperClass(MultithreadedMapper.class); //设置这个job运行的map,这里面使用了本身map自带的多线程实 现机制,这一点很重要,可以帮助我们提高运行的效率。
    MultithreadedMapper.setMapperClass(tempJob,tempMapper.class); //设置这个job运行的map
    MultithreadedMapper.setNumberOfThreads(tempJob, Integer.parseInt(tempThread));//设置多线程运行几个线程
    tempJob.setMapOutputKeyClass(LongWritable.class);// 设置map所输出的key
    tempJob.setMapOutputValueClass(StringArrayWritable.class); // 设置map所输出的value
       ......                     //下面还有reduce的一些,我这里的业务没有涉及到,这里就不列出来了。

    long start = System.currentTimeMillis();
    boolean result = tempJob.waitForCompletion(true); //启动一个job运行
    long end = System.currentTimeMillis();
如果大家有什么意见,欢迎提出来,共同学习!
0
0
分享到:
评论
2 楼 szgaea 2011-01-07  
这个是啥原理呀,只是讲了下结构而已,深入点呗
1 楼 yangfuchao418 2011-01-06  
额 ,楼主都是拷贝的,还不如说下你们用到哪些地方,具体的用法实在点

相关推荐

    hadoop 运行原理分析

    一个hadoop的简单介绍,可以让刚刚入门的同学们对hadoop有一个大概的了解。

    Hadoop运行原理分析pdf

    Hadoop运行原理分析pdf

    Hadoop运行原理分析

    Hadoop运行原理分析

    Hadoop示例程序WordCount运行及详解

    在hadoop平台上,实现词频统计(WordCount),指令很详细

    Hadoop HDFS原理分析,技术详解

    HDFS概述,HDFS客户端操作,HDFS数据流,namenode工作机制,datanode工作机制,HDFS 高可用集群配置

    hadoop架构及原理

    讲述大数据工具-Hadoop运行架构及原理,全局掌握Hadoop。

    Hadoop原理与实现.pptx

    对hadoop的hdfs,mapreduce,yarn三大模块的内部运行原理进行总结和归纳,了解其内部的原理

    Hadoop介绍,HDFS和MapReduce工作原理

    Hadoop介绍,HDFS和MapReduce工作原理

    Hadoop原理与技术MapReduce实验

    (1)熟悉Hadoop开发包 (2)编写MepReduce程序 (3)调试和运行MepReduce程序 (4)完成上课老师演示的内容 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 二、实验内容 1.单词计数实验...

    Hadoop原理与技术Spark操作实验

    3. 学会在Spark Shell中运行Scala程序。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 (一)Spark基础知识 (1)输入start-all.sh启动hadoop相应进程和相关的端口号 (2...

    【Hadoop】HDFS的运行原理1

    简介HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。是根据google发表的论文翻版的。论文为GFS(Go

    使用hadoop实现WordCount实验报告.docx

    使用hadoop实现WordCount详细实验报告,配有环境变量配置截图以及实验运行及结果详细过程描述与截图

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    第五天 hadoop2.x中HA机制的原理和全分布式集群安装部署及维护 01-zookeeper.avi 02-zookeeper2.avi 03-NN高可用方案的要点1.avi 04-hadoop-HA机制的配置文件.avi 05-hadoop分布式集群HA模式部署.avi 06-hdfs...

    Hadoop原理与技术Linus命令行基本操作

    Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作,为顺利开展后续其他实验奠定基础。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 ...

    Hadoop大数据处理

    2. 本书不仅包含了使用Hadoop进行大数据处理的实践性知识和实例,还以图文并茂的形势系统性的揭示了Hadoop技术族中关键组件的运行原理和优化手段,为读者进一步提升Hadoop使用技巧和运行效率提供了颇具价值的参考 ...

    论文研究-改进的Hadoop作业调度算法.pdf

    针对如上问题,深入分析了Hadoop源代码,理清了Hadoop的运行原理,在Hadoop资源管理机制Yarn中改进了Hadoop任务的排序,建立了新的任务排序规则,提出了对各节点性能评价的指标,分为动态性能指标和静态性能指标。...

    Hadoop大数据处理_刘军

    本书不仅包含了使用Hadoop进行大数据处理的实践性知识和示例还以图文并茂的形式系统性地揭示了Hadoop技术族中关键组件的运行原理和优化手段为读者进一步提升Hadoop使用技巧和运行效率提供了颇具价值的参考。《Hadoop...

    hadoop技术内幕 深入解析mapreduce架构设计与实现原理

    深入解析MapReduce架构设计与实现原理》由Hadoop领域资深的实践者亲自执笔,首先介绍了MapReduce的设计理念和编程模型,然后从源代码的角度深入分析了RPC框架、客户端、JobTracker、TaskTracker和Task等MapReduce...

Global site tag (gtag.js) - Google Analytics