mapreduce,决定mapreduce性能的工作流程?
1.有一个待处理的大数据,被划分成大小相同的数据库(如64MB),以及与此相应的用户作业程序。
2.系统中有一个负责调度的主节点(Master),以及数据Map和Reduce工作节点(Worker).
3.用户作业提交个主节点。
4.主节点为作业程序寻找和配备可用的Map节点,并将程序传送给map节点。
5.主节点也为作业程序寻找和配备可用的Reduce节点,并将程序传送给Reduce节点。
6.主节点启动每一个Map节点执行程序,每个Map节点尽可能读取本地或本机架的数据进行计算。(实现代码向数据靠拢,减少集群中数据的通信量)。
7.每个Map节点处理读取的数据块,并做一些数据整理工作(combining,sorting等)并将数据存储在本地机器上;同时通知主节点计算任务完成并告知主节点中间结果数据的存储位置。
8.主节点等所有Map节点计算完成后,开始启动Reduce节点运行;Reduce节点从主节点所掌握的中间结果数据位置信息,远程读取这些数据。
9.Reduce节点计算结果汇总输出到一个结果文件,即获得整个处理结果。
mapreduce的运行模式?
本地运行模式1.mapreduce程序是被提交给LocalJobRunner在本地以单进程的形式运行
2.而处理的数据及输出结果可以在本地文件系统,也可以在hdfs上
3.怎样实现本地运行?程序不要带集群配置文件
本质是程序的conf中是否有mapreduce.framework.name=local及yarn.resourcemanager.hostname参数
4.本地模式非常便于进行业务逻辑的debug,只要在eclipse/idea中打断点即可。
集群运行模式1.将mapreduce程序交给yarn集群,分发到很多的节点上并发执行
2.处理的数据和输出结果应该位于hdfs文件系统
3.提交集群的实现步骤
将程序打成JAR包,然后在集群的任意一个节点上用hadoop命令启动
hadoop jar HDFSClientDemo-1.0-SNAPSHOT.jar com.caimh.mr.WordCountDriver
4.执行程序&日志
mapreduce中键的排列顺序为?
MapReduce的排列顺序是默认按照Key排序的,也就是说输出的时候,key会按照大小或字典顺序来输出,比如一个简单的wordcount,出现的结果也会是左侧的字母按照字典顺序排列。
排序是MapReduce核心技术,尽管实际应用中可能不需要对数据进行排序,但是MapReduce过程本身就含有排序的概念。mapreduce是hadoop的什么框架?
mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output),这个输出就是我们所需要的结果。
在运行一个mapreduce计算任务时候,任务过程被分为两个阶段:map阶段和reduce阶段,每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而程序员要做的就是定义好这两个阶段的函数:map函数和reduce函数。
mapreduce的技术特征?
1、MapReduce 易于编程
它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。
2、良好的扩展性
当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。
3、高容错性
MapReduce设计的初衷就是使程序能够部署在廉价的机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。
4、适合PB级以上海量数据的离线处理
可以实现上千台服务器集群并发工作,提供数据处理能力。
还没有评论,来说两句吧...