《hadoop实战》笔记2

来源:互联网 发布:淘宝 性冷淡风知乎 编辑:程序博客网 时间:2024/05/19 02:31

编写MapReduce基础程序


MapReduce程序框架


1. 典型的hadoop程序模板
框架的核心在run()方法中,也成为driver。它实例化、配置并传递一个JobConf对象命名的作业给JobClient.runJob()以启动MapReduce作业

2. driver配置


3. API变化


4. hadoop中的Streaming
Streaming完全采用文本方式处理数据,不知道其他的数据类型
hadoop支持用其他非java语言编写程序,要用到Streaming的通用API,开发快捷,充分利用其他非java库
hadoop streaming使用Unix中的流与程序进行交互
通过Unix命令使用Streaming:
bin/hadoop jar conrtib/streaming/hadoop-0.19.1-streaming.jar
-input input/cite75_99.txt---设定输入文件
-output output---设定输出文件
-mapper 'cut -f 2 -d ,'---cut命令提取第二列,并声明列是被逗号分隔的
-reducer 'uniq'---对排序后的数据进行去重

-mapper 'wc -l'    ---统计每个分片中的记录数
-D mapred.reduce.tasks=0---mapper直接输出结果不经过reducer
通过脚本使用Streaming:
可使用任何可执行的脚本来处理按行组织的数据流,数据取自Unix的标准输入STDIN,并输出到STDOUT。
脚本从STDIN采样数据
cat input.txt | RandomSample.py 10 >sampled_output.txt参数10表示sampled_output.txt大约包含input.txt中十分之一的记录
数据采样(采样处理较小数据集带来速度和便利)产生的精度损失重要程度取决于要计算的什么以及数据集如何分布
bin/hadoop jar conrtib/streaming/hadoop-0.19.1-streaming.jar
-input input/cite75_99.txt---设定输入文件
-output output---设定输出文件
-mapper 'RandomSample.py 10‘
-file RandomSample.py
-D mapred.reduce.tasks=1---没有设定特殊的reducer,默认采用IdentityReducer,把输入直接转向输出
Aggregate软件包
功能:数据集的汇总统计
命令:
-reducer aggregate

5. 使用Combiner提升性能

计数统计的MapReduce基础程序


支持用脚本语言编写MapReduce程序的Hadoop流式API


用于提升性能的Combiner


高阶MapReduce


编程实战


细则手册


管理Hadoop

0 0
原创粉丝点击