MapReduce实例伪代码


针对于大数据管理与分析课程期末复习整理。大多为本人根据文字描述写的伪代码,如有不对,请指出 :->

1.词频统计
Class Mapper
	method Map(string key,string value)
		for each word w in value
			emit(w,"1");
Class Reducer
	method reduce(string key,Iterator:string values)
		int result=0;
		for each v in values
			result+=int(v);
		emit(key,result);

Spark-Scala代码:

var counts=file.flatMap(line=>line.split(" "))
				.map(word=>(word,1))  //对应mapper
				.reduceByKey(_+_)     //相同的key之间进行加法
2.单词同现矩阵算法
Class Mapper
	method Map(docid a,doc d)
		for each word w in d
			for each word u in Neighbor(w)
				emit(pair(w,u),"1");
Class Reducer
	method Reduce(pair p,Iterator:string values)
		int result=0;
		for each v in values
			result+=int(v)
		emit(p,result);
3.child-parent:父子->祖辈
Class Mapper
	method Map(string offset, string line)
		lines=line.spilt(" ");
		child=lines[0];
		parent=lines[1];
		emit(parent,"0"+child);
		emit(child,"1"+parent);
Class Reducer
	method Reduce(string key,Iterator:string values)
		List<string> grandpa=null;
		List<string> children=null;
		for each v in values
			if v[0]="0"
				children.push(v);
			if v[0]="1"
				grandpa.push(v);
		for each i in grandpa
			for each j in children
				emit(i,j);
3.文档倒排索引算法(含词频统计和Stopwords)
Class Maper
	method setup()//每个集群节点都会启动一次
		Set<string> Stop_words;
		Stop_words=read(stopwords);
	method map(docid a,doc d)
		Array F=null;
		for each word w in d
			F[w]++;
		for each word w in F
			emit(pair<w,d>,F[w]);
Class Partitioner
	method partitioner(K key,V value,int numReduceTasks)
		string w=key.toString().split(",")[0];
		super.partitioner(w,value,numReduceTasks);
Class Reducer
	method setup()
		t_prev=null;
		List<pair> P=null;
	method reduce(pair key,Iterator:int values)
		w=key.first;
		d=key.second;
		if(t_prev!=w&&t_prev!=null)
			Emit(t_prev,P);
			P.clear();
		int result=0;
		for each v in values
			result+=v;
		P.push(pair<d,result>);
		t_prev=w;
	method close()
		Emit(t_prev,P);
4.专利文献数据分析

(1)专利被引列表:

Map:--> key:cited value:citing
Reduce:--> key:cited value:citing1,citing2,...

(2)专利被引次数统计:

Map:--> key:cited value:1
Reduce:--> key:cited value=1+1+1..

(3)专利被引直方图统计:(被引次数的次数统计)

专利被引次数统计
+
Map:--> key:num=value value:1
Reduce:--> key:num value=1+1+1..

(4)结构化数据:年份或国家专利数统计

(5)每年申请美国专利的国家数统计

Map:-->key:<year,country> value:1
Partitioner:super.getPartitioner(year,value,numTask)
Reduce:-->key:year value:the num of country

(6)如何统计一个国家占全球的专利申请比例:

Map:-->key:country value:1
Reduce:-->key:country value:sum
扫描生成的文档,统计总共申请专利数据N
用该国家的数据/N

(7)如何统计一个国家的专利引用率

统计这个国家总共被引过的专利数目:
Map:-->key:<country,cited> value:1
Partitioner:super.getPartitioner(country,value,numTask)
Reduce:-->key:country value:the num of cited
再用该数据除以之前的申请专利数据
5.PageRank

P R ( p i ) = 1 − d N + d ∑ P j ∈ M ( p i ) P R ( p j ) L ( p j ) d = 0.85 PR(p_i)=\frac{1-d}{N}+d\sum_{P_j\in M(p_i)}\frac{PR(p_j)}{L(p_j)}\\ d=0.85 PR(pi)=N1d+dPjM(pi)L(pj)PR(pj)d=0.85

其中M为入边,L为出边

MapReduce

GraphBuilder:
	map:<URL,(PR_init,link_list)>  link_list:为出度边的集合
	reduce:<URL,(PR_init,link_list)>
PageRankIter:
	map:for each u in link_list:<u,PR_init/link_list.count()>
		<URL,link_list>
	reduce:<URL,<new_rank,link_list>>
Rankviewer:
	map:<rank,URL>
	重载sort,rank由大到小
	reduce:<rank,URL>

Spark

val lines=sc.textFile("..data"); //url url1,url2,...
val lines=lines.map{
	s=>val parts=s.plit("\t")(parts(0),parts(1).split(","))
}.cache()
var ranks=links.mapValues(v=>1.0)
var N=links.size
for(i<-0 until iterCnt){
	val contributions=links.join(ranks).flatMap{
		case(pageID,(links,rank))=>links.map(dest=>(dest,rank/links.size))
	}
	ranks=contribution.reduceBykey((x,y)=>x+y).mapValues(v=>((1-damping)*N+damping*v))
}
ranks.sortBy(_._2,false)
	 .mapValues(v=>v.formatted("%.10f").toString())
	 .coalesce(1,true)
	 .saveAsTextFile("..")
6.k-means

MapReduce:

Class Mapper
	method setup()
		kPoints=read(全局的聚类中心信息)
	method map(offset,Point p)
		int clusterID=closestPoint(p,kPoints);
		Emit(clusterID,pair<p,1>)
Class Combiner
    method reduce(int key,Iterator:pair values)
        Point p'=null;
        int n=0;
        for each v in values
            p'+=v.first;
            n+=v.second;
        p'/=n;
        Emit(key,pair<p',n>)
Class Reducer
	method reduce(int key,Iterator:pair values)
		Point p'=null;
		int n=0;
		for each v in values
			p'+=v.first*v.second;
			n+=v.second;
		p'/=n;
		Emit(key,<p',n>); //p'是新的聚类中心

hadoop运行k-means,job的最大数量

如何保证维护的数据信息被所有作业获取:全局文件

不足:

(1)每次迭代操作都需要作为独立作业重新进行处理,磁盘IO开销大

(2)需要一个额外的MapReduceJob用来检测迭代终止条件

Spark:

1.从HDFS上读取数据转换为RDD,将RDD中的每个数据转换为向量形成新的RDD存入缓存,随机抽样K个向量作为初始聚类中心

2.计算RDD中每个向量p到聚类中心的距离,并且划分到最近的聚类中心,生成<ClusterID,(p,1)>为元素的新的RDD

3.聚合新生成的RDD中key值相同的<ClusterID,(p,1)>键值对,将相同的ClusterID下的所有向量相加并求取向量个数n,形成新的RDD。

4.对生成的RDD,计算新的聚类中心,生成<ClusterID,kp>的新的RDD

5.判断是否可以终止

优点:

(1)内存 (2)一个Job (3)任务结束直接退出,不需要另外的job来检测

读取数据和初始化聚类中心
val lines=sc.textfile("..data")
val data=lines.map(s=>s.split(" ").map(_.toDouble))
			  .cache()
val kPoints=data.takeSample(false,K,seed)
				.map(s=>spark.util.Vector(s))
while(未到达最大迭代次数或者未收敛){
    划分数据给聚类中心
    val closest=data.map(p=>(closestPoint(spark.util.Vector(p),kPoints)))
    聚合形成新的聚类中心
    val pointStats=closest.reduceByKey{
        case((x1,y1),(x2,y2))=>(x1+x2,y1+y2) //同一key下 value<p,1>的操作
    }
    计算生成新的聚类中心
    val newPoints=pointStats.map{ 
        pair=>(pair._1,pair._2._1/pair._2._2)
    }.collectAsMap()  //pair._1:key, pair._2._1:points, pair._2._2:n
}
7.分类算法:KNN
map:ts(trid,A',y')
	求最相似的K个TR,计算y'
	emit(trid,y')
reduce:直接输出(trid,y')
8.分类算法:朴素贝叶斯算法

对于未知样本X,计算P(X|Yi)P(Yi),选择概率最大的Yi

统计Yi和xj在Yi中出现的频度

第一部分统计信息:

map:tr(trid,A,y)
	 emit(y,1)
	 for each x in A
	 	emit(<y,xni,xvi>,1) //xni:属性名 xvi:属性值
reduce:(key,value_list)
		emit(key,sum)

第二部分分类:

Class Mapper
	method setup()
		读取训练数据集得到的频度数据
		FY={(Yi,FYi)}
		FxY={(<Yi,xnj,xvj>,FxYij)}
	method map(key,ts(tsid,A))
		for each Yi in FY
			FXYi=1.0
			for each xj in ts.A
				FXYi*=(FxYij/FYi)
			if FXYi*FYi>maxF
				MaxF=FXYi*FYi
				idx=i
		emit(tsid,FY[idx].Yi)
9.分类算法:SVM短文本多分类

训练:对每一个类做2-class分类器

map:emit(classID,<1/0,特征向量>)
reduce:训练分类器

预测:用all分类器对样本打分,取最高分

map:emit(SampleID,<lableID,score>)
reduce:emit(sampleID,maxscore)
10.频繁项集挖掘算法(apriori,son,Pson)

apriori:从k=1开始,scanDB,去除sup=1的,组合成为k+1…

son:局部频繁–>全局频繁

Pson:并行化son

第一阶段:

map:emit(<F,1>):F是local frequent
reduce:emit(<F,sum>)

第二阶段:

map:emit(<C,v>):C是global condidate v是count
reduce:emit(<C,sum>)
11.实际应用中大数据处理

(1)复杂的批量数据处理(数十分钟~数小时):Mapreduce

(2)基于历史数据的交互式查询(数十秒~数分钟):Cloudera Impala

(3)基于实时数据流的数据处理(数百毫秒~数秒):Storm

12.大数据处理流程及每个步骤的任务和存在的挑战

流程:数据抽取与集成、数据分析以及数据解释

要想处理大数据,首先必须对所需数据源的数据进行抽取和集成,从中提取出关系和实体,经过关联和聚合之后采用统一定义的结构来存储这些数据

在数据集成和提取时需要对数据进行清洗,保证数据质量及可信性

数据量大并不一定意味着数据价值的增加,相反这往往意味着数据噪音的增多

传统的分析技术如数据挖掘、机器学习、统计分析等在大数据时代需要做出调整

数据分析是大数据处理的核心,但是用户往往更关心结果的展示。如果分析的结果正确但是没有采用适当的解释方法,则所得到的结果很可能让用户难以理解,极端情况下甚至会误导用户。

大数据时代的数据分析结果往往也是海量的,同时结果之间的关联关系极其复杂,采用传统的解释方法基本不可行

可以考虑从两个方面提升数据解释能力:引入可视化技术、让用户能够在一定程度上了解和参与具体的分析过程

13.HDFS系统的体系结构及其在数据管理方面的特征优势

Hadoop文件系统采用主从架构对文件系统进行管理,一个HDFS集群由唯一一个目录节点(NameNode)和若干数据节点(DataNodes)组成

HDFS对外表现为一个普通的文件系统,用户可以用文件名去存储和访问文件,而实际上文件是被分成不同的数据块,这些数据块就是存储在数据节点上面。一个典型的Hadoop文件系统集群部署,是由一台性能较好的机器运行目录节点,而集群里面的其它机器每台上面运行一个数据节点。

唯一的目录节点的设计大大简化了整个体系结构,目录节点负责Hadoop文件系统里面所有元数据的管理,这样的设计使数据不会脱离目录节点的控制

目录节点保存文件系统的三种元数据:命名空间、数据块与文件名的映射表、每个数据块副本的位置信息(包括副本因子)

目录节点(NameNode)是集群里面的主节点,负责管理整个HDFS系统的命名空间和元数据,也是客户端访问HDFS系统的入口

数据节点(DataNode)一般就是集群里面的一台机器,负责数据的存储和读取

特征优势:

透明性

并发控制

文件复制功能

硬件和操作系统的异构性

容错能力

安全性问题

14.HBase数据记录的查询定位方法,如何利用子表、元数据子表、根子表来定位数据记录

一个分布式多维表,表中的数据通过:

一个行关键字(row key)

一个列关键字(column family + column name)

一个时间戳(time stamp)

进行索引和查询定位的。

描述所有子表和子表中数据块的元数据都存放在专门的元数据表中,并存储在特殊的子表中。子表元数据会不断增长,因此会使用多个子表来保存

所有元数据子表的元数据都保存在根子表中。主服务器会扫描根子表,从而得到所有的元数据子表位置,再进一步扫描这些元数据子表即可获得所寻找子表的位置

15.说明什么是大数据的四个V,特别解释一些该应用背景下的大数据的value是什么。

Volume—数量大,数据一直都在以每年50%的速度增长,也就是说每两年就增长一倍(大数据摩尔定律)

Velocity—速度快,从数据的生成到消耗,时间窗口非常小,可用于生成决策的时间非常少

Variety—多样化,大数据是由结构化和非结构化数据组成的

Value—价值,价值密度低,商业价值高。以视频为例,连续不间断监控过程中,可能有用的数据仅仅有一两秒,但是具有很高的商业价值

另:大数据分析具有三个特征:全样而非抽样、效率而非精确、相关而非因果

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介   本书从Hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍Hadoop这一高性能处理海量数据集的理想工具。全书共16章,3个附录,涉及的主题包括:Haddoop简介;MapReduce简介;Hadoop分布式文件系统;Hadoop的I/O、MapReduce应用程序开发;MapReduce的工作机制;MapReduce的类型和格式;MapReduce的特性;如何构建Hadoop集群,如何管理Hadoop;Pig简介;Hbase简介;Hive简介;ZooKeeper简介;开源工具Sqoop,最后还提供了丰富的案例分析。   本书是Hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行Hadoop集群。 目录 第1章 初识Hadoop  数据!数据!  数据存储与分析  与其他系统相比  关系型数据库管理系统  网格计算  志愿计算  1.3.4 Hadoop 发展简史  Apache Hadoop和Hadoop生态圈 第2章 关于MapReduce  一个气象数据集  数据的格式  使用Unix工具进行数据分析  使用Hadoop分析数据  map阶段和reduce阶段  横向扩展  合并函数  运行一个分布式的MapReduce作业  Hadoop的Streaming  Ruby版本  Python版本  Hadoop Pipes  编译运行 第3章 Hadoop分布式文件系统  HDFS的设计  HDFS的概念  数据块  namenode和datanode  命令行接口  基本文件系统操作  Hadoop文件系统  接口  Java接口  从Hadoop URL中读取数据  通过FileSystem API读取数据  写入数据  目录  查询文件系统  删除数据  数据流  文件读取剖析  文件写入剖析  一致模型  通过 distcp并行拷贝  保持 HDFS 集群的均衡  Hadoop的归档文件  使用Hadoop归档文件  不足 第4章 Hadoop I/O  数据完整性  HDFS的数据完整性  LocalFileSystem  ChecksumFileSystem  压缩  codec  压缩和输入切分  在MapReduce中使用压缩  序列化  Writable接口  Writable类  实现定制的Writable类型  序列化框架  Avro  依据文件的数据结构  写入SequenceFile  MapFile 第5章 MapReduce应用开发  配置API  合并多个源文件  可变的扩展  配置开发环境  配置管理  辅助类GenericOptionsParser,Tool和ToolRunner  编写单元测试  mapper  reducer  本地运行测试数据  在本地作业运行器上运行作业  测试驱动程序  在集群上运行  打包  启动作业  MapReduce的Web界面  获取结果  作业调试  使用远程调试器  作业调优  分析任务  MapReduce的工作流  将问题分解成MapReduce作业  运行独立的作业 第6章 MapReduce的工作机制  剖析MapReduce作业运行机制  作业的提交  作业的初始化  任务的分配  任务的执行  进度和状态的更新  作业的完成  失败  任务失败  tasktracker失败  jobtracker失败  作业的调度  Fair Scheduler  Capacity Scheduler  shuffle和排序  map端  reduce端  配置的调优  任务的执行  推测式执行  重用JVM  跳过坏记录  任务执行环境 第7章 MapReduce的类型与格式  MapReduce的类型  默认的MapReduce作业  输入格式  输入分片与记录  文本输入  二进制输入  多种输入  数据库输入(和输出)  输出格式  文本输出  二进制输出  多个输出  延迟输出  数据库输出 第8章 MapReduce的特性  计数器  内置计数器  用户定义的Java计数器  用户定义的Streaming计数器  排序  准备  部分排序  总排序  二次排序  联接  map端联接  reduce端联接  边数据分布  利用JobConf来配置作业  分布式缓存  MapReduce库类 第9章 构建Hadoop集群  集群规范  网络拓扑  集群的构建和安装  安装Java  创建Hadoop用户  安装Hadoop  测试安装  SSH配置  Hadoop配置  配置管理  环境设置  Hadoop守护进程的关键属性  Hadoop守护进程的地址和端口  Hadoop的其他属性  创建用户帐号  安全性  Kerberos和Hadoop  委托令牌  其他安全性改进  利用基准测试程序测试Hadoop集群  Hadoop基准测试程序  用户的作业  云上的Hadoop  Amazon EC2上的Hadoop 第10章 管理Hadoop  HDFS  永久性数据结构  安全模式  日志审计  工具  监控  日志  度量  Java管理扩展(JMX)  维护  日常管理过程  委任节点和解除节点  升级 第11章 Pig简介  安装与运行Pig  执行类型  运行Pig程序  Grunt  Pig Latin编辑器  示例  生成示例  与数据库比较  PigLatin  结构  语句  表达式  1.4.4 类型  模式  函数  用户自定义函数  过滤UDF  计算UDF  加载UDF  数据处理操作  加载和存储数据  过滤数据  分组与连接数据  对数据进行排序  组合和分割数据  Pig实战  并行处理  参数代换 第12章 Hive  1.1 安装Hive  1.1.1 Hive外壳环境  1.2 示例  1.3 运行Hive  1.3.1 配置Hive  1.3.2 Hive服务  1.3.3 Metastore  1.4 和传统数据库进行比较  1.4.1 读时模式(Schema on Read)vs.写时模式(Schema onWrite)  1.4.2 更新、事务和索引  1.5 HiveQL  1.5.1 数据类型  1.5.2 操作和函数  1.6 表  1.6.1 托管表(Managed Tables)和外部表(External Tables)  1.6.2 分区(Partitions)和桶(Buckets)  1.6.3 存储格式  1.6.4 导入数据  1.6.5 表的修改  1.6.6 表的丢弃  1.7 查询数据  1.7.1 排序(Sorting)和聚集(Aggregating)  1.7.2 MapReduce脚本  1.7.3 连接  1.7.4 子查询  1.7.5 视图(view)  1.8 用户定义函数(User-Defined Functions)  1.8.1 编写UDF  1.8.2 编写UDAF 第13章 HBase  2.1 HBasics  2.1.1 背景  2.2 概念  2.2.1 数据模型的“旋风之旅”  2.2.2 实现  2.3 安装  2.3.1 测试驱动  2.4 客户机  2.4.1 Java  2.4.2 Avro,REST,以及Thrift  2.5 示例  2.5.1 模式  2.5.2 加载数据  2.5.3 Web查询  2.6 HBase和RDBMS的比较  2.6.1 成功的服务  2.6.2 HBase  2.6.3 实例:HBase在Streamy.com的使用  2.7 Praxis  2.7.1 版本  2.7.2 HDFS  2.7.3 用户接口(UI)  2.7.4 度量(metrics)  2.7.5 模式设计  2.7.6 计数器  2.7.7 批量加载(bulkloading) 第14章 ZooKeeper  安装和运行ZooKeeper  示例  ZooKeeper中的组成员关系  创建组  加入组  列出组成员  ZooKeeper服务  数据模型  操作  实现  一致性  会话  状态  使用ZooKeeper来构建应用  配置服务  具有可恢复性的ZooKeeper应用  锁服务  生产环境中的ZooKeeper  可恢复性和性能  配置 第15章 开源工具Sqoop  获取Sqoop  一个导入的例子  生成代码  其他序列化系统  深入了解数据库导入  导入控制  导入和一致性  直接模式导入  使用导入的数据  导入的数据与Hive  导入大对象  执行导出  深入了解导出  导出与事务  导出和SequenceFile 第16章 实例分析  Hadoop 在Last.fm的应用  Last.fm:社会音乐史上的革命  Hadoop a Last.fm  用Hadoop产生图表  Track Statistics程序  总结  Hadoop和Hive在Facebook的应用  概要介绍  Hadoop a Facebook  假想的使用情况案例  Hive  问题与未来工作计划  Nutch 搜索引擎  背景介绍  数据结构  Nutch系统利用Hadoop进行数据处理的精选实例  总结  Rackspace的日志处理  简史  选择Hadoop  收集和存储  日志的MapReduce模型  关于Cascading  字段、元组和管道  操作  Tap类,Scheme对象和Flow对象  Cascading实战  灵活性  Hadoop和Cascading在ShareThis的应用  总结  在Apache Hadoop上的TB字节数量级排序  使用Pig和Wukong来探索10亿数量级边的 网络图  测量社区  每个人都在和我说话:Twitter回复关系图  degree(度)  对称链接  社区提取 附录A 安装Apache Hadoop  先决条件  安装  配置  本机模式  伪分布模式  全分布模式 附录B Cloudera’s Distribution for Hadoop 附录C 准备NCDC天气数据
近百节课视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程目录 000 上课方式和课程大纲介绍 001 Linux系统基本知识说明和启动Linux虚拟机 002 配置虚拟机IP地址和如何使用远程工具SecureCRT 003 Linux 环境下基本命令使用及Linux系统中文件的类型和权限 004 Linux 环境下基本命令讲解二 005 Linux 系统远程FTP工具与桌面工具XManager使用和培养三大能力 006 Linux 系统基本命令和基本配置的复习讲解 007 What is Apache Hadoop讲解 008 Hadoop 的发展史和版本发展与区别 009 Hadoop 生态系统介绍讲解 010 Hadoop 生态系统介绍讲解 011 Hadoop 服务讲解 012 HDFS 架构的讲解 013 MapReduce 架构讲解和MapReduce思想原理讲解 014 Apache Hadoop 三种安装部署模式讲解 015 Apache Hadoop 单机(本地)模式安装部署与测试 016 Hadoop 伪分布式安装部署 017 查看Hadoop 日志以及日志的格式和命名组成 018 Hadoop 守护进程服务三种启动停止方式 019 测试环境(HDFS Shell基本命令和运行WordCount程序) 020 结合WordCount实例讲解Hadoop的数据存储和数据计算 021 Hadoop 五大服务与配置文件中的对应关系 022 分析Hadoop 三种启动停止方式的Shell 脚本 023 去除警告【Warning$HADOOP HOME is deprecated。】 024 Hadoop相关命令中的【–config configdir】作用 025 Hadoop 目录结构 026 Eclipse导入Hadoop源码项目 027 HDFS 设计目标 028 HDFS 文件系统架构概述 029 HDFS架构之NameNode和DataNode 030 HDFS 架构讲解总结 031 回顾NameNode和DataNode 032 HDFS架构之Client和SNN功能 033 HDFS Shell 命令命令讲解和演示 034 讲解HDFS 文件读写流程 035 详解HDFS API之FileSystem方式基本操作一 036 HDFS Java API 两种方式介绍及使用URL API详解一 037 使用URL API详解二 038 使用HDFS FileSystem API 详解 039 HDFS文件系统读写流程及HDFS API两种方式读取文件 040 详解HDFS API之FileSystem方式基本操作二 041 讲解分析Configuration和FileSystem类源代码 042 引出HDFS实际应用场景之合并文件和使用getmerge命令并查看实现源码 043 分析getmerge功能实现思路和代码实现 044 演示讲解【百度网盘】功能与HDFS API对应说明 045 HDFS 专题结束和布置HDFS 作业 046 MapReduce架构原理介绍讲解 047 WordCount运行和MapReduce运行基本流程 048 MapReduce执行流程详解 049 MapReduce编程模型讲解及运行PI程序和JobWebUI监控Job运行 050 如何按照【八股文】方式编写MapReduce 051 复习MapReduce编写模型和【八股文】方式编写MapReduce 052 完成MyWordCount程序编写 053 打包运行MyWordCount程序并监控Job运行 054 优化MyWordCount程序和讲解GenericOptionsParser 055 安装Hadoop Eclipse插件并使用Eclipse查看文件系统 056 使用Eclipse运行MyWordCount程序并解决PriviledgedActionException问题 057 MyWordCount 处理过程详解 058 MapReduce提交作业源码跟踪讲解 059 MR作业运行流程整体分析 060 MapReduce执行流程之Shuffle和排序流程以及Map端分析 061 MapReduce执行流程之Reduce端分析 062 MapReduce Shuffle过程讲解和Map Shuffle Phase讲解 063 Reduce Shuffle Phase讲解 064 源代码跟踪查看Map Task和Reduce Task数目的个数 065 回顾MapReduce执行过程以及MapReduce核心 066 Hadoop MapReduce框架数据类型讲解 067

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值