注:之前写过MapReduce程序,所以对Hadoop和MapReduce编程有一些了解,现在正在阅读《Hadoop实战》一书,这里主要是记下对自己有用的一些点,完全不能覆盖书中的全部要点。想要学习MapReduce入门的同学请移尊步,勿浪费时间。
这里是我觉得不错的几个入门文章:
http://www.cnblogs.com/forfuture1978/category/300670.html
http://blog.csdn.net/aidayei/article/details/6580277
http://www.cnblogs.com/mdyang/category/307547.html
http://www.cnblogs.com/wycg1984/category/238035.html
-----------------------------------------------------------敌我分割线------------------------------------------------------------
向任务传递作业定制的参数:
Configuration类(JobConf的父类)有通用的setter方法来设置属性值,属性以键值对形式存储,键是String类型,值可以是常用类型的一种。例如:
myJobConf.setInt(“myjob.myproperty”, Integer.parseInt(args[2]));
使用时取出该值:在Mapper/Reducer的configure函数中
public void configure(JobConf conf){
int v = conf.getInt(“myjob.myproperty”, 0);
}
除了获取定制的参数,还可以获取JobConf中的其他一些配置信息。
划分为多个输出:
继承MultipleOutputFormat,并实现函数
protected String generateFileNameForKeyValue(K k, V v, String name);
这样就能使每一个kv对的结果写入该返回值对应的名字的文件中了。
使用数据库:
DBOutputFormat是用于访问数据库的关键类。在driver中将输出格式设置为这个类。配置可以通过DBConfiguration来设置:
public static void congifureDB(JobConf job,String driveClass,String dbUrl,String userName,String passwd);
指定写入的表及字段,通过DBOutputFormat的setOutput方法:
public static void setOutput(JobConf job, String tableName, String… fieldNames);
使用DBOutputFormat使得输出键实现DBWritable接口。只有这个键被写到数据库。容易知道,write和read函数必须使用 PreparedStatement和ResultSet来实现序列化。
感兴趣的Hadoop上的一些子项目:
Pig:Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。http://www.cnblogs.com/skyme/archive/2012/06/04/2534876.html
Hive: hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Hama和Mahout:
Hama是矩阵计算软件包,用于计算乘机、逆、特征值、特征向量和其他矩阵运算。Mahout更专门针对基于Hadoop实现机器学习算法,如Naïve Bayes,k-means聚类,协同过滤等。
--------END--------