随笔分类 - hadoop
摘要:1.1.1 输入分片和记录 (1)输入分片InputSplit接口 输入分片一般是文件,也可以数据库中的若干行。记录对应一行数据。输入分片在java表示为InputSplit接口,getlength函数返回大小,用于分片排序,大的先处理。Getlocation函数返回分片位置,让map任务尽量本地化
阅读全文
摘要:1.1.1 Stream 作业 (1)hadoop streaming Hadoop streaming是hadoop的一个工具,用于运行费java的maper或reducer作业,例如maper和reducer是C++编写的可执行程序或者脚本文件。同时也可以是java类。 HADOOP_HOME/
阅读全文
摘要:1.1.1 默认的map函数和reduce函数 (1)Maper和Reuducer默认类 如果没有指定maper类和reduce类,则会用默认的Maper和Reuducer类去处理数据。也可以显示的将处理类设置为Maper和Reducer类。默认的Maper类和reduce类是将输入原封不动的输出。
阅读全文
摘要:1.1 Mapreduce输入输出类型 (1)map和reduce输入输出类型一致性 Map输入输出类型可以不用,但是map的输出和reduce的输入类型要一致,reduce的输入输出也可不一样。 Map(K1,V1)àlist(K2,V2) Reduce (K2,list(V2))->list(K
阅读全文
摘要:1.1 任务的执行 1.1.1 任务执行环境 Map和reduce的任务会有一些属性,创建任务时传入,可以通过任务的函数(旧版configure()函数)或者对象方法获取这些属性。 1.1.2 推测执行 一个作业被分解为多个任务,并发的执行多个任务,提高速度,但是如果某个任务执行的慢就会拖后腿,所以
阅读全文
摘要:1.1 Shuffle和排序 Shuffle:系统执行排序,将map输出作为输入传给reduce的过程称为shuffle。 1.1.1 Map端缓存排序输出 (1) 写入缓冲区:map输出结果先输出到内存缓冲区(默认100M,通过属性mapreduce.Task.io.sort.mb设置) (2)
阅读全文
摘要:1.1.1 配置调优 通过调节配置参数,达到较优的性能。Map配置参数 属性 类型 默认值 作用 mapreduce.Task.io.sort.mb Int 100 Map输出结果的缓冲区大小兆为单位 mapreduce.map.sort.spill.percent Float 80 缓冲区占用比例
阅读全文
摘要:1.1 失败 1.1.1 任务失败 Map和reduce任务失败:Map或者reduce任务有缺陷,抛出异常,JVM会会向applicationmaster 发出错误报告,applicationmaster将任务标记为failed,将错误报告写入用户日志,释放资源。 Stream任务失败:Strea
阅读全文
摘要:1.1 Mapreduce任务流程 Mapreduce是大量数据并发处理的编程模型,主要包括下面五个实体,客户端将作业文件复制到分布式文件系统,向资源管理器提交mapreduce作业,资源管理器向节点管理器分配容器资源,节点管理器启动application Master,application ma
阅读全文
摘要:1.1 Mapreduce作业流JobControl和Oozie 更复杂的任务,需要多个mapreduce作业,形成作业流,而不是增加map和reduce的复杂度。复杂问题,可以用高级语言pig、hive、cascading、crunch、spark。 1.1.1 问题分解成mapreduce作业流
阅读全文
摘要:提高速度和性能。可以从下面几个点去优化 可以在本地运行调试来优化性能,但是本地和集群是完全不同的环境,数据流模式也截然不同,性能优化要在集群上测试。有些问题如(内存溢出)只能在集群上重现。 HPROF任务分析工具,使用下面命令启动jdk自带的分析工具,提供CPU和堆栈使用情况。 % hadoop j
阅读全文
摘要:1.1 集群运行 1.1.1 集群运行步骤 (1)打包 打作业jar包发送给集群,hadoop通过搜索驱动程序的类路径(驱动程序中通过setJarByClass设置)自动查找作业的的jar文件,打包命令: mvn package –DskipTests //–DskipTests 跳过测试的意思 (
阅读全文
摘要:1.1 本地运行器进行本地测试 写一个MapReduce驱动程序,执行job,实现tool接口,所以可以通过hadoop的命令行去设置为本地运行模式。实现tool的run函数,在run函数中创建job执行任务,输出结果。 1.1.1 本地任务执行器定义 package Temperature; im
阅读全文
摘要:Hadoop 3.2.1 win10 64位系统 vs2015 编译 1 环境配置 1.1 JDK下载安装 1.1.1 下载 JDK 1.8 (jdk1.8.0_102) 下载地址 : http://www.oracle.com/technetwork/java/javase/downloads/j
阅读全文
摘要:1.1 MRUnit写单元测试 作用:一旦MapReduce项目提交到集群之后,若是出现问题是很难定位和修改的,只能通过打印日志的方式进行筛选。又如果数据和项目较大时,修改起来则更加麻烦。所以,在将MapReduce项目提交到集群上之前,我们需要先对其进行单元测试。单元测试需要用到mrunit库,这
阅读全文
摘要:辅助类GenericOptionsParser,Tool和ToolRunner (1)为什么要用ToolRunner 将MapReduce Job配置参数写到java代码里,一旦变更意味着修改java文件源码、编译、打包、部署一连串事情。当MapReduce 依赖配置文件的时候,你需要手工编写jav
阅读全文
摘要:6.1 Hadoop属性配置API Hadoop需要添加一些自定义的属性值,可以通过Configuration类的实例来加载xml配置文件中的属性值。 (1) xml配置文件的格式 <?xml version="1.0"?> <configuration> <property> <name>colo
阅读全文
摘要:5.4.2 mapFile (1)定义 MapFile即为排序后的SequeneceFile,将sequenceFile文件按照键值进行排序,并且提供索引实现快速检索。 (2)索引 索引取值是每隔128(默认128,可通过io.map.index.interval来修改)个键取一个键组成,将索引加载
阅读全文
摘要:5.4.1 sequenceFile读写文件、记录边界、同步点、压缩排序、格式 HDFS和MapReduce是针对大文件优化的存储文本记录,不适合二进制类型的数据。SequenceFile作为小文件的容器,SequenceFile类型将小文件包装起来,可以获得更高效率的存储和处理。sequenceF
阅读全文
摘要:序列化框架 除了writable实现序列化之外,只要实现让类型和二进制流相互转换,都可以作为hadoop的序列化类型,为此Hadoop提供了一个序列化框架接口,他们在org.apache.hadoop.io.serializer包中,Writable可以作为MapReduce支持的类型也是因为实现了
阅读全文