hadoop整理
来源:互联网 发布:mysql update性能优化 编辑:程序博客网 时间:2024/05/20 12:50
一、Hadoop架构
Hadoop以HDFS为分布式存储基础。HDFS(Hadoop Distributed File System)是hadoop的核心,它由NameNode和DataNode两部分组成。NameNode记录DataNode的块信息,数据复制信息等元数据,负责相当于人体的大脑,提供DataNode的信息。DataNode是数据的存储点,存储数据以Block为单位,并复制到其他DataNode节点中作为备份,并把备份信息等传给NameNode登记备案。Hadoop默认备份数据为三份,DataNode一般会把数据复制到不同机架上,这样做即可以在本机架出现故障时不至于数据丢失,并且可以发挥集群并发读数据的优势,但会在写数据时占用大量资源。为了防止NameNode节点出现故障,整个系统宕掉无法恢复,便产生一个SecondaryNameNode用于备份NameNode的镜像,另外还负责日志与镜像的定期合并,虽然SecondaryNameNode备份了应有数据,但是它不能作为NameNode的热备份。
二、MapReduce过程
以下分为节点级别和任务级别分析过程
1.节点级别
1)在客户端启动一个作业。
2)客户端向JobTracker请求一个Job ID。
3)将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打包的JAR文件、配置文件和客户端计算所得的输入划分信息。这些文件都存放在JobTracker专门为该作业创建的文件夹中。文件夹名为该作业的Job ID。JAR文件默认会有10个副本(mapred.submit.replication属性控制);输入划分信息告诉了JobTracker应该为这个作业启动多少个map任务等信息。
4)JobTracker接收到作业后,将其放在一个作业队列里,等待作业调度器对其进行调度(这里是不是很像微机中的进程调度呢,呵呵),当作业调度器根据自己的调度算法调度到该作业时,会根据输入划分信息为每个划分创建一个map任务,并将map任务分配给TaskTracker执行。对于map和reduce任务,TaskTracker根据主机核的数量和内存的大小有固定数量的map槽和reduce槽。这里需要强调的是:map任务不是随随便便地分配给某个TaskTracker的,这里有个概念叫:数据本地化(Data-Local)。意思是:将map任务分配给含有该map处理的数据块的TaskTracker上,同时将程序JAR包复制到该TaskTracker上来运行,这叫“运算移动,数据不移动”。而分配reduce任务时并不考虑数据本地化。
5)TaskTracker每隔一段时间会给JobTracker发送一个心跳,告诉JobTracker它依然在运行,同时心跳中还携带着很多的信息,比如当前map任务完成的进度等信息。当JobTracker收到作业的最后一个任务完成信息时,便把该作业设置成“成功”。当JobClient查询状态时,它将得知任务已完成,便显示一条消息给用户。
2、任务级别分析
注意点:
1)环形buffer缓存默认大小为100M,如果多余100M便向本地磁盘写出
2)patition分区的个数和shuffle、reduce槽的个数是相同的
3)map过程没有完成,reduce过程是无法开始的,这个不难理解,不看到全部数据,怎么知道谁最大呢!
4)Combine过程可有可无,它没有基类,继承reduce任务,作用是可以减少map输出
3、wordcount实例分析
文本:
Nice day
Nice work
首先接写成2个键值对,<0,Nice day><2,Nice work> -->2次map函数后<Nice,1><day,1><Nice,1><work,1>
-->排序<Nice,1><Nice,1><day,1><work,1>--> 分组 <Nice,{1,1},<day,{1}><work,{1}>
-->reduce()输出
Nice 2
day 1
work 1
对于以上的过程可以在map和reduce的参数中看出,
Mapper<Object, Text, Text, IntWritable>{
map(Object k1,Text v1,Context context) {}
}
Reducer<Text, IntWritable, Text, IntWritable>{
reduce(Text k2,Iterable<IntWritable> v2s,Context context) {}
}
- hadoop整理
- hadoop streaming 技术整理
- hadoop 资源整理
- Hadoop博客整理
- Hadoop配置项整理
- Hadoop配置项整理
- Hadoop 使用问题整理
- Hadoop相关概念整理
- Hadoop资料整理
- hadoop全方位资料整理
- hadoop面试整理
- hadoop hive 操作整理
- Hadoop基础知识简单整理
- Hadoop文档整理
- hadoop常见错误整理
- Hadoop分布式安装整理
- hadoop相关整理
- Hadoop参数优化整理
- 蓝桥杯 历届试题 地宫取宝 【记忆化搜索】
- 十二个小球三次称量源代码
- 最简单的基于Flash的流媒体示例:RTMP推送和接收(ActionScript)
- Xamarin Getting Started翻译系列五--Android资源
- 教你如何网上选购精品特价街 商品
- hadoop整理
- C语言实现“1到100的所有整数中出现多少次数字9”
- 最简单的基于Flash的流媒体示例:网页播放器(HTTP,RTMP,HLS)
- Pascal's Triangle
- 使用SVG画猫咪
- J2EE和jap入门的一些基础知识和tomcat服务器的了解
- Java_分派_静态分派
- 8.变量的引用
- 第三周 项目五-数组做数据成员(四)文件操作-指针