大数据hadoop平台 - nodebb€¦ · hadoop distributed file system...

84
大数据Hadoop平台 Jordan Li 08/08/2016

Upload: others

Post on 21-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

大数据Hadoop平台Jordan Li 08/08/2016

Page 2: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►Hadoop 平台核心架构►HDFS主要概念、架构与运行机制►演示:HDFS常用命令&配置►Yarn 主要概念、架构与运行机制►演示:Yarn 常用命令&配置►Mapreduce编程入门&演示►Mapreduce调优&最佳实践►Hadoop Benchmark性能测试

Agenda

Page 3: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►一个可扩展的、容错性强的分布式文件系统和并行计算环境►让用户可以便捷的处理海量数据►Apache软件基金会►Google inspired Yahoo! ►谁在用?中移动, Intel, IBM, Facebook, Amazon, BAT......►用来做什么? 日志分析、倒排索引、 排序、图像转换、广告分析...

Hadoop简介

Page 4: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Hadoop架构

Page 5: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►Hadoop Distributed File System►为大文件设计(海量小文件问题)►Write-once-read-many访问模型►不建议大量随机读,不支持对文件修改►High throughput .vs. low latency►Commodity hardware – 错误检测/快速恢复

HDFS 简介

Page 6: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►Namenode►SecondaryNamenode►StandbyNamenode►Datanode►Client►Block, Replication

HDFS主要概念

Page 7: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

ApacheHadoop2.7.1– HDFSArchitecturehttp://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

Page 8: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►读取文件:lClient向NameNode发起文件读取的请求lNameNode返回文件存储的DataNode的信息lClient读取文件信息

►写入文件lClient向Namenode发起文件写入的请求lNamenode根据文件大小和block配置大小返回Datanode的信息lClient将文件划分为多个block,按地址依次写入Datanode

HDFS的文件操作

Page 9: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

HDFS文件读取基本过程

Page 10: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

HDFS 文件写入基本过程

Page 11: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改
Page 12: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►sbin/start-dfs.sh stop-dfs.sh►bin/hdfs dfs -ls/-mkdir/-rm/-put/-get►bin/hdfs dfsadmin -report/-safemode/-refreshNodes►bin/hdfs fsck -files -blocks►bin/hdfs getconf -confKey <property>►sbin/start-balancer.sh►core-site.xml, hdfs-site.xml, hadoop-env.sh

演示:HDFS 基本操作&配置文件

Page 13: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

HDFS High Availability

Page 14: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►MapReduce V1的几个缺陷l扩展性受限l单点故障l难以支持MR之外的计算

►多计算框架各自为战lMR: 离线计算lStorm: 实时计算lSpark: 内存计算

YARN 产生背景

Page 15: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

YARN模块组成

Page 16: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

YARN 架构

Page 17: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

YARN容错机制

Page 18: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

YARN资源调度器

Page 19: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

YARN运行流程分析

Page 20: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►sbin/start-yarn.sh stop-yarn.sh►bin/yarn node ►bin/yarn application►yarn-env.sh, yarn-site.xml

演示:Yarn 基本操作&配置文件

Page 21: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lNutch项目--开源的网络搜索引擎lGoogle公司发表的Mapreduce论文lDougCutting基于java设计开发了mapreduce并行计算框架和系统,集成在Hadoop项目中l成为Apache旗下顶级项目l极为成功,广为接受,易于使用的大数据并行处理技术.

MapReduce简介

Page 22: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l分治法:将一个复杂问题,分成若干个简单的子问题进行解决,然后对子问题的结果进行合并,得到原有问题的解.l

lMap:将大任务拆分成小的子任务,并且完成子任务的计算

lReduce:将中间结果合并成最终结果

基本思想

Page 23: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l易于编程l良好的扩展性lDataLocalityl高容错性l提供状态监控工具

Mapreduce 特性

Page 24: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lMapreducejob将输入数据切分成小块,每一小块会分配给一个map处理,多个map之间并行运行lMapreduce框架会对map的输出进行排序lReduce端会拉取map的处理结果,进行后续的处理l输入输出都保存在hdfs中,框架本身会调度相应的map/reducetask,并进行监控和容错.lMap和reduce的输入输出都是<key,value>对

Mapreduce计算框架

Page 25: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►bin/hadoop jar *.jar <main class> <input path>►<output path>►Job history server►mapred-site.xml

Mapreduce 基本操作&配置文件

Page 26: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Wordcount Example

Page 27: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改
Page 28: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改
Page 29: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Jobjob=newJob(conf,"wordcount");

4.构建一个job,加载mapred-default.xml,mapred-site.xml,yarn-

default.xml,yarn-site.xml,mapreduce框架里面一个mapreduce叫做一

个job,具体的map和reduce叫做task.随后写入conf中的配置

(GenericOptionsParser解析出来的),Job的名字是wordcount这个名

字会显示在前端UI上

Wordcount Example

Page 30: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

job.setJarByClass(WordCount.class);

hadoop需要通过这个class定位到所在的jar包,传到hdfs.

原理:通过classloader获取类路径下的资源文件,循环遍历,定位到

class.

Wordcount Example

Page 31: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

job.setMapperClass(TokenizerMapper.class);job.setCombinerClass(IntSumReducer.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);for(inti=0;i<otherArgs.length- 1;++i){

FileInputFormat.addInputPath(job,newPath(otherArgs[i]));}

FileOutputFormat.setOutputPath(job,newPath(otherArgs[otherArgs.length- 1]));

System.exit(job.waitForCompletion(true)?0:1);

Page 32: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

ljob.setInputFormatClass(TextInputFormat.class);ljob.setOutputFormatClass(TextOutputFormat.class);ljob.setPartitionerClass(HashPartitioner.class)ljob.setNumReduceTasks(1);

lInputFormat负责数据切分(split)以确定maptask的个数及对应的split,还负责为mapper提供输入数据,将split解析成key,value对.lInputFormat将分片的数据序列化到磁盘供后续读取l文件格式:textfile,sequencefile,Avro,rcfile,orcfile,等lOutputFormat参数和InputFormat相对,将key,value写入特定格式的文件中.lPartition对map处理的结果进行分片,每一片的所有数据交由同一reduce处理lPartition个数=reduce个数

未写出的默认配置

Page 33: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改
Page 34: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>

定义一个自己的Map过程,类名是TokenizerMapper,它继承了Hadoop的Mapper类。“<Object, Text, Text, IntWritable>” 这里:Object,表示输入键key的参数类型,值是每行的offsetText,表示输入值的类型, 值是行字符串Text,表示输出键类型, 值是被空格区分后的一个wordIntWritable,表示输出值类型

Mapper类讲解

Page 35: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l序列化:将结构化对象转化为字节流以便于通过网络进行传输或写入持久存储的过程.l反序列化:字节流转为结构化对象的过程.l<key,value>必须是可序列化的:实现Writablelkey需要排序(比较):实现Comparable

Hadoop序列化

Page 36: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Java基本类型对应的Writable

Page 37: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

private final static IntWritable one = new IntWritable(1);privateTextword=newText();publicvoidmap(Objectkey,Textvalue,Contextcontext

)throwsIOException,InterruptedException{StringTokenizeritr=new

StringTokenizer(value.toString());while(itr.hasMoreTokens()){word.set(itr.nextToken());context.write(word,one);}}

map方法讲解

Page 38: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Reducer类讲解public static class IntSumReducer

extends Reducer<Text,IntWritable,Text,IntWritable> {private IntWritable result = new IntWritable();

public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

int sum = 0;for (IntWritable val : values) {sum += val.get();

}result.set(sum);context.write(key, result);

}}

Page 39: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Map task执行流程

Page 40: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Reduce task 执行流程

Page 41: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lmap的输出作为reduce输入的过程lmap阶段

lmap输出到内存中一块环形缓冲区中l缓冲区达到指定阈值,触发spill操作,溢写到磁盘上的一个文件,一次spill会生成一个文件lspill操作又包含了sort(快排)和combiner,sort优先级为partition,key.对每个partiton中数据进行一次combinerl保存分区数据的元信息,包括偏移量,数据大小l合并多个文件成一个大而有序(堆排序)的文件l删除临时的spill文件,合并完成

Shuffle

Page 42: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lreduce阶段lCopy,reduce从map上远程拷贝一片数据,只要一个map完成就进行拷贝(并行).l对多份拷贝数据文件进行merge,同时排序,防止磁盘上文件过多.l归并排序所有数据,确保给reduce的数据是有序的,聚集的.

Shuffle

Page 43: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lbin/hadoopjarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jarwordcountinputoutput

lwordcount参数其实是通过反射调用了WordCount类,这里直接指定要用的classname:org.apache.hadoop.examples.WordCount效果是一样的.

Run WordCount Example

Page 44: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Hadoop Generic Options

Page 45: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►Namenode:50070

►Resourcemanager:8088

►Jobhistoryserver:19888

HDFS+Yarn+Mapreduce 监控

Page 46: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l用户向Yarn提交一个MapReduce应用,Yarn会分两阶段运行lResourceManager启动MRAppMasterl(Mapreduce的ApplicationMaster)负责管理作业生命周期.lMRAppMaster创建应用程序,申请资源,并监控其运行过程,直到运行成功lMRAppMaster3种运行模式:本地,uber,非uber

MapReduce On YARN工作原理

Page 47: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

MapReduce on YARN 工作原理

Page 48: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

1)用户向YARN中提交应用程序/作业,包括MRAppMaster程序、启动MRAppMaster的命令、用户程序等2)ResourceManager为作业分配第一个Container,并与对应的NodeManager通信,要求它在这个Containter中启动该作业的MRAppMaster;3)MRAppMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查询作业的运行状态;然后它将为各个任务申请资源并监控任务的运行状态,直到运行结束。即重复步骤4-7;4)MRAppMaster采用轮询方式通过RPC请求向RM申请和领取资源;5)MRAppMaster申请到资源后,便与对应的NM通信,要求它启动任务;6)NodeManager使用脚本启动任务(环境变量,jar包等);7)各个任务通过RPC协议向MRAppMaster汇报自己的状态和进度,以让MRAppMaster随时掌握各任务的运行状态,从而可以在任务失败时重新启动任务;在作业运行过程中,用户可随时通过RPC向ApplicationMaster查询作业当前运行状态;8)作业完成后,MRAppMaster向ResourceManager注销并关闭自己;

MapReduce On YARN工作原理

Page 49: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l压缩算法使用:lmap输入,map输出,reduce输出

lmap输入需要保证压缩算法可分割,解压速度快lmap输出保证压缩率高,压缩解压缩速度快lreduce输出保证压缩解压缩速度快,压缩率高

压缩率:gzip>lzo>snappy速度:gzip<lzo<snappy

最佳实践——Hadoop 压缩

Page 50: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l分布式缓存类,用来分发资源到Nodemanager上.l为每一个资源生成一个唯一的id,防止重复下载l使用方式:api方式 命令行方式l使用场景:工具jar,join小表(配置文件)等

最佳实践——Distribute Cache

Page 51: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l一个计数器l便于我们发现运行的mapreduce问题l自定义counter用于排错,配合system.outl出于监控,报警,统计等需求,在程序里获取counter值lCountercounter=job.getCounters().getGroup("FileSystemCounters").findCounter("HDFS:Numberofbytesread");lcounter.getValue();

最佳实践——Mapreduce Counter

Page 52: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l同一个job的多个task之间运行速度不一致,为防止这些慢ltask拖慢整个job的进度.lHadoop为该任务启动一个备份任务,谁先运行完,则将谁的结果作为最终结果.l每个task最多有一个备份任务实例

最佳实践——推测执行机制

Page 53: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l已经完成的task数目比例不小于5%l启动推测task的总量不超过10l推测执行算法可自己实现,默认实现算法:周期性扫描所有正在运行的task,假设为一个task启动一个备份task,估算完成时间,估算该task正常运行的完成时间,时间差越大,证明越有价值为这个task启动备份任务.

最佳实践——推测执行机制

Page 54: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lmapreduce.map.speculativetruelmapreduce.reduce.speculativetrue

l关闭情况:lmapreduce处理数据本身不均衡或计算不均衡l特定的任务,如写入hbase

最佳实践——推测执行机制

Page 55: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

最佳实践——Mapreduce执行优化

Page 56: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lmapreduce.map.memory.mblmapreduce.reduce.memory.mbl对map和reduce任务的内存限制lmapreduce.map.java.optslmapreduce.reduce.java.optsl对jvm-Xmx堆大小的限制,但task不一定是java程序(streaming中python,perl等),为nativelib留出余地(比如压缩等)lmemory.mb要大于java.opts否则会报内存溢出

Mapreduce运行内存

Page 57: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lJVM的内存溢出

lmapreduce.map.java.optslmapreduce.reduce.java.optsl改大的同时另外两个memory的参数也要相应增加.l-Dmapreduce.map.java.opts=-Xmx2048ml-Dmapreduce.map.memory.opts=2560

Mapreduce运行内存

Page 58: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lyarn.scheduler.minimum-allocation-mblyarn.scheduler.maximum-allocation-mbl计算节点Container的物理内存范围,一般不需要改,改动需要重启集群生效.lyarn.nodemanager.vmem-pmem-ratiolcontainer允许的虚拟内存值,改动需要重启集群生效

Mapreduce运行内存

Page 59: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

lERROR:Container%sisrunningbeyondphysical/virtualmemorylimits

lyarn.nodemanager.vmem-check-enabledlyarn.nodemanager.pmem-check-enabledfalse(非常不建议,重启集群)l提交Job时可动态配置 -Dmapreduce.map.memory.mblVirtualmemory溢出时,yarn.nodemanager.vmem-pmem-ratio默认2.1,改大,需要重启集群.

Mapreduce运行内存

Page 60: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

最佳实践——参数调优

►HDFSqName Node/Data Node

►YarnqApplication MasterqResource ManagerqNode ManagerqCapacity/Fair Scheduler

►MapReduceqMap/Reduce

Page 61: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改
Page 62: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

# 使用6个 Map 任务并行向 HDFS 里6个文件里分别写入 1GB 的数据bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-tests.jar TestDFSIO -write -nrFiles 6 -size 1GB

# 使用6个 Map 任务并行从 HDFS 里6个文件里分别读取 1GB 的数据bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-tests.jar TestDFSIO -read -nrFiles 6 -size 1GB

# 清除以上生成的数据bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-tests.jar TestDFSIO -clean

Hadoop Benchmark性能测试

Page 63: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

# 生成1000万行数据到 /teraInput 路径中bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar teragen 10000000 /teraInput

# 将/teraInput 中生成的1000万行数据排序后存入到 /teraOutput 路径中bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar terasort teraInput /teraOutput

# 针对已排序的 /teraOutput 中的数据,验证每一行的数值要小于下一行bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar teravalidate -D mapred.reduce.tasks=8 /teraOutput /teraValidate

# 查看验证的结果bin/hdfs dfs -cat teraValidate/part-r-00000

Hadoop Benchmark性能测试

Page 64: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Secondary Sort Example

Page 65: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

ljob.setPartitionerClass(FirstPartitioner.class);ljob.setGroupingComparatorClass(FirstGroupingComparator.class);

ljob.setSortComparatorClass(IntPair.Comparator.class);//默认的

Secondary Sort Example

Page 66: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

l应用:l1.二次排序,第一字段优先,第二字段其次的规则排序l2.希望在同一reducegroup中有序的处理不同map标记的数据.

l输入:Table1(today) Table2(history)l useridtag1,tag2useridtag2,tag3

l输出:useridtag1

Secondary Sort Example

Page 67: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►Hadoop 快速入门指南►HBase 快速入门指南►Zookeeper快速入门指南►Kafka 快速入门指南

Agent Day 2

Page 68: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►分布式协调服务是很困难的 (race conditions, deadlock)►ZK是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、分布式同步、组和命名服务等►本身是分布式的,是Google Chubby的一个开源实现►是大数据平台如Hadoop、Hbase的重要组件►容器平台使用etcd或consul做协调服务

什么是 ZooKeeper

Page 69: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►奇数个节点,必须有半数节点以上是活的►每个节点数据都一样►基于内存的,持久化有transaction logs和snapshot►树状数据结构 - znode►Nodesandephemeralnodes►不是做存储用的!

系统架构

Page 70: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

系统架构

Page 71: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

系统架构

Page 72: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►生产环境一般5个节点►每个节点需配置zoo.cfg►bin/zkServer.sh start►zooKeeperCommands:TheFourLetterWords

►echo mntr | nc localhost 2181

集群管理

Page 73: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►Hadoop 快速入门指南►ZooKeeper 快速入门指南►Kafka 快速入门指南

Agent Day 2

Page 74: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►核心概念与架构►集群管理►编程入门

Kafka 快速入门

Page 75: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►消息队列:缓解消息生产者与消息消费者之间不同步问题的一个缓冲区►Kafka 是一个分布式、可分区、多副本的高吞吐量、低延迟的消息系统

►3 Kafka servers, 1 producer –- 821,557 records/sec(78.3 MB/sec)* ►适用于处理活跃的流式数据,比如网页的访问量、日志等

* https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines

什么是 Kafka

Page 76: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►Producer, consumer, broker

架构

Page 77: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►topic, partition

架构

Page 78: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►consumer group

架构

Page 79: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

►快速检查集群►Java 生产消费示例

编程入门

Page 80: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改
Page 81: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改
Page 82: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改
Page 83: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

关注我们

QingCloud-IaaS

青云QingCloud

www.qingcloud.com

Page 84: 大数据Hadoop平台 - NodeBB€¦ · Hadoop Distributed File System 为大文件设计(海量小文件问题) Write-once-read-many访问模型 不建议大量随机读,不支持对文件修改

Thank you.