Hadoop平台学习过程的一些总结

1.MapR有三种版本,M3(免费版)、M5(含有支持的版本,并启用了所有HA特性)和M7(最近和重写的HBase一起发布),MapR采取了一种与其他供应商不同的方法,它肯定会有属于自己的追随者。

2.hadoop 执行 mapreduce的有几种方式
一、原生态的方式:java 源码编译打包成jar包后,由 hadoop 脚本调度执行
二、基于 MR 的数据流 Like SQL 脚本开发语言:pig
三、构建数据仓库的类 SQL 开发语言:hive
四、跨平台的脚本语言:python

3.hadoop的调优
在job中中间的结果使用压缩,输出数据量大的话也要采用压缩,因为备份有副本所以压缩可以加快磁盘的IO,对机器多的效果应该更明显,可以大幅度提高job的效率。
尽量减少task的数量,减少每个task耗费的时间。当一个job数据大于1TB 要增加 块的大小 (256 512 大概)。//hadoop distcp -Ddfs.block.size=$[256*1024*1024] /path/to/inputdata
利用Combiner减少磁盘和网络传输到reduce的数据量
使用自己的Writable类尽量重用,不是多次的创建

任务调度的时候会尽量将任务分配给输入数据块InputSplit所在的机器,减少IO网络的消耗。
提交MapReduce任务之前,可以先对数据进行一次预处理将小数据合并成适当的大数据。如果Map的任务时间很短可以考虑调节Block块的大小来调整Map的运行时间。
控制MapReduce任务的数量,调节Map/Reduce的任务槽。Map可以根据时间来调节,reduce调整reduce和任务槽的比例。
利用Combine函数调整Map函数产生的很多重复的中间数据,利用本地的合并,在传递给Reduce,可以减少数据的网络传输
可以对Map的输出和最终结果进行压缩
自定义comparator,可以实现一些算法如K-means。

你可能感兴趣的:(大数据,python,java)