Hadoop2-MapReduce(2)
来源:互联网 发布:python pd.to numeric 编辑:程序博客网 时间:2024/04/29 18:48
新的API:
//Mapper
MyMapper extends Mapper<....>
map(LongWritable key,Text value,Context context) throws ...{
....
context.write(new Text(year),new IntWriteable(..));
}
//Reducer
MyReducer extends Reducer<....>
context.write(key,new IntWritable(..));
//main
Job job=new Job();
job.setJarByClass(XX.class)
横向扩展 scaling out
数据分布存储在HDFS中,允许Hadoop将MapReduce计算移到存储有部
分数据的各台机器上。
Hadoop将Job分成若干个小任务task来执行。包括两类任务:map,reduce
两类节点控制作业执行过程:
1.jobtracker
通过调度tasktracker运行的任务,协调所有运行在系统上的作业。
2.tasktracker
运行任务同时将运行进度报告发给jobtracker,jobtracker记录没想作业
任务的整体进度情况。如果一个任务失败,jobtracker可以在另外一个tasktracker
节点重新调度任务。
输入分片 input slit: Hadoop将MapReduce输入数据划分成等长的小数据块。
Hadoop为每个分片构建一个map任务,map任务处理分片中记录。
分片为了实现负载均衡,更快的处理,获得最佳性能。(数据本地化优化 data locality optimization)
合理的分片趋向于HDFS一个块大小,默认64MB。
map将输出(中间)结果写入本地硬盘,而非HDFS。
单个Reduce任务的输入通常来自于所有mapper的输出。
map输出通过网络传输发送到运行reduce任务的节点。
数据在reduce端合并,然后reduce函数处理,输出通常
存储在HDFS中以实现可靠存储。
对于reduce输出的HDFS块,第一个复本存储在本地节点,
其他复本存在其他节点。
多个reduce任务时,每个map任务都会为其输出进行分区 partition,
为每个reduce任务简历一个分区,键对应的值都在同一个分区中。
分区函数控制分区。
map和reduce之间的数据流成为shuffle
也有可能没有任务reduce任务,唯一非本地节点的数据传输时map任务将结果写入HDFS。
combiner:
针对map任务的输出制定一个合并函数 combiner。合并函数的输出作为
reduce任务的输入。(map任务端预处理部分数据)
jobConf.setCombinerClass(XX.class);
Hadoop的Streaming
使用Unix标准流作为Hadoop和应用程序之间的接口。
Hadoop的Pipes
是MapReduce的C++接口代称。使用套接字作为tasktracker与C++版本的
map函数或reduce函数的进程之间的通道。未使用JNI。
- Hadoop2-MapReduce(2)
- 从hadoop2.2,HBase0.96 mapreduce操作
- hadoop2.2 MapReduce and yarn(一)
- Win7 Eclipse调试Centos Hadoop2.2-Mapreduce
- Win7 Eclipse调试Centos Hadoop2.2-Mapreduce
- 【mapreduce】 Hadoop2.6.0 mapreduce 例子
- Hadoop2-MapReduce(1)
- Hadoop2.2.0 mapreduce 例子
- hadoop2.x MapReduce过程
- hadoop2.x MapReduce过程
- Hadoop2.6.0 mapreduce 例子
- Hadoop学习三十:Win7 Eclipse调试Centos Hadoop2.2-Mapreduce
- hadoop2提交到Yarn: Mapreduce执行过程分析2
- hadoop2.5.2学习07--MapReduce应用案例2
- hadoop2.5.2学习06--MapReduce原理及操作2
- hadoop2提交到Yarn: Mapreduce执行过程分析2
- hadoop2提交到Yarn: Mapreduce执行过程分析2
- hadoop2.2 MapReduce and yarn(二) MapReduce in MR v2 API
- centos中的分区
- curl shell 用法
- 包导入
- 广州传智播客0615JAVA就业班体育活动
- 多线程
- Hadoop2-MapReduce(2)
- 【全方面预防U盘病毒侵入】
- 论《如何打通软件人员的上升通道》
- 算法导论 第7章部分习题解答
- How does TestFlight do it?(分发测试版本可以用到的一些工具和代码)
- 交通灯系统
- The Most Important Algorithms
- 创建struct fib_info函数分析
- js获取url参数值