hadoop
qq_43193797
github:https://github.com/yanjie666
展开
-
查看YARN任务日志的几种方式
通过history server通过history server,直接在web ui上查看(如果任务异常退出,可能会看不到)All Applicationsapplicationapplication log通过yarn命令(用户要和提交任务的用户一致)yarn application -list -appStates ALL(这个不显示时间信息)[...转载 2020-03-27 10:08:49 · 3266 阅读 · 0 评论 -
MapReduce程序中的三次排序
在Map任务和Reduce任务的过程中,一共发生了3次排序1)当map函数产生输出时,会首先写入内存的环形缓冲区,当达到设定的阀值,在刷写磁盘之前,后台线程会将缓冲区的数据划分成相应的分区。在每个分区中,后台线程按键进行内排序2)在Map任务完成之前,磁盘上存在多个已经分好区,并排好序的,大小和缓冲区一样的溢写文件,这时溢写文件将被合并成一个已分区且已排序的输出文件。由于溢写文件已经经过第...原创 2019-01-07 19:25:03 · 1823 阅读 · 0 评论 -
MapReduce求TopN的三种方法
本文采用三种方式对movie数据进行TopN排序第一种是直接排序,在ReduceTask中进行排序第二种是利用Tree排序,该方式利用小顶堆和集合重复原理的方式 , 每过来一个数据 , 跟堆顶数据进行比较 , 如果比最小的大 , 则 =踢掉换新的 , 否则直接跳过数据 . 以此对数据进行排序 . 第三种是利用MepReduce高级API编程,定义分区器和分组比较器.数据样本:{"mo...转载 2019-01-12 19:50:18 · 2267 阅读 · 0 评论 -
shuffle的关键阶段sort(Map端和Reduce端)源码分析
源码中有这样一段代码1. Map端排序获取的比较器public RawComparator getOutputKeyComparator() { // 获取mapreduce.job.output.key.comparator.class,必须是RawComparator类型,如果没设置,是null Class<? extends RawComparator>...原创 2019-01-07 19:03:50 · 134 阅读 · 0 评论 -
MapTask shuffle的流程总结
MapTask shuffle的流程 ①在map()调用context.write() ②调用MapoutPutBuffer的collect() 调用分区组件Partitionner计算当前这组key-value的分区号 ③将当前key-value收集...原创 2019-01-07 19:01:03 · 509 阅读 · 0 评论 -
MapReduce 案例之倒排索引
MapReduce 案例之倒排索引1. 倒排索引倒排索引是文档检索系统中最常用的数据结构,被广泛地应用于全文搜索引擎。 它主要是用来存储某个单词(或词组) 在一个文档或一组文档中的存储位置的映射,即提供了一种根据内容来查找文档的方式。由于不是根据文档来确定文档所包含的内容,而是进行相反的操作,因而称为倒排索引( Inverted Index)。2. 实例描述通常情况下,倒排索引由一个单词...原创 2019-01-12 16:56:16 · 1120 阅读 · 1 评论 -
Yarn资源调度器
Yarn资源调度器 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。Yarn基本架构 YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成,如图4-23所示。 ...原创 2019-01-03 09:50:48 · 243 阅读 · 0 评论 -
Hadoop群起脚本注意事项
start-all.sh : 不推荐,使用start-dfs.sh ,启动HDFS 使用start-yarn.sh,启动yarn start-dfs.sh: 如何启动Namenode : 读取Namenode所在的主机名 ...原创 2019-01-03 09:02:05 · 237 阅读 · 0 评论 -
NameNode Version与DataNode Version以及NameNode 识别 DataNode
HDFS: NameNode保存元数据的!DataNode保存真实数据的! 一个文件不管上传还是下载,必须访问NN,先获取NN中相关的元数据! NameNode有两个关键属性: #Wed Jan 02 09:51:49 CST 2019...原创 2019-01-03 08:44:48 · 1738 阅读 · 0 评论 -
MapReduce优化方法总结
1 MapReduce 跑的慢的原因2 MapReduce优化方法MapReduce优化方法主要从六个方面考虑:数据输入、Map阶段、Reduce阶段、IO传输、数据倾斜问题和常用的调优参数。1 数据输入2 Map阶段3 Reduce阶段4 I/O传输5 数据倾斜问题 6 常用的调优参数1.资源相关参数(1)以下参数是在用户...原创 2019-01-07 15:19:05 · 4821 阅读 · 0 评论 -
任务的推测执行
1.作业完成时间取决于最慢的任务完成时间一个作业由若干个Map任务和Reduce任务构成。因硬件老化、软件Bug等,某些任务可能运行非常慢。思考:系统中有99%的Map任务都完成了,只有少数几个Map老是进度很慢,完不成,怎么办?2.推测执行机制发现拖后腿的任务,比如某个任务运行速度远慢于任务平均速度。为拖后腿任务启动一个备份任务,同时运行。谁先运行完,则采用谁的结果。3.执行...原创 2019-01-07 15:09:38 · 832 阅读 · 0 评论 -
Mapreduce之TopN案例TreeMap实现
1.需求对需求2.3输出结果进行加工,输出流量使用量在前10的用户信息(1)输入数据 13470253144 180 180 36013509468723 7335 110349 11768413560439638 918 4938 585613568436656 3597 256...原创 2019-01-12 20:20:02 · 1224 阅读 · 3 评论 -
Mapreduce之topN简单实现
1.需求对需求2.3输出结果进行加工,输出流量使用量在前10的用户信息(1)输入数据 13470253144 180 180 36013509468723 7335 110349 11768413560439638 918 4938 585613568436656 3597 256...原创 2019-01-12 20:50:33 · 2112 阅读 · 0 评论 -
Hadoop计数器的应用以及数据清洗
计数器作用 作用: 在运行MR时,作为一个统计数据!参考数据,推测程序的运行效果!作为一个调试手段! 使用: JobContext.getCounter("计算器所在的组名","当前计数器的名称").increcment(1); 查看计算器打印的结果: job.watiForComple...原创 2019-01-09 11:59:19 · 1096 阅读 · 1 评论 -
Hadoop中Join多种应用
总结:Join: 将两个中的字段,通过公共字段进行关联! MR : ①在Reduce端Join 1.保证两个文件中的所有字段,都必须达到Reduce!需要将两个文件的所有字段封装为一个Bean 2.在Map端,为每个文件,打上标记 ...原创 2019-01-09 11:51:01 · 2163 阅读 · 4 评论 -
MapTask阶段shuffle源码分析
1. 收集阶段在Mapper中,调用context.write(key,value)实际是调用代理NewOutPutCollector的wirte方法public void write(KEYOUT key, VALUEOUT value ) throws IOException, InterruptedException { outpu...原创 2019-01-08 20:54:48 · 322 阅读 · 0 评论 -
OutputFormat数据输出
1 OutputFormat接口实现类2 自定义OutputFormat3 自定义OutputFormat案例实操1.需求 过滤输入的log日志,包含baidu的网站输出到e:/baidu.log,不包含baidu的网站输出到e:/other.log。(1)输入数据http://www.baidu.comhttp://www.google.comht...原创 2019-01-08 20:19:59 · 6173 阅读 · 0 评论 -
Combiner运行时机
combiner其实就是Reducer类型:Class<? extends Reducer<K,V,K,V>> cls = (Class<? extends Reducer<K,V,K,V>>) job.getCombinerClass(); Combiner的运行时机:Map...原创 2019-01-08 19:47:13 · 454 阅读 · 2 评论 -
GroupingComparator分组(辅助排序)的作用以及GroupingComparator分组案例实操
问题分析:partioner是在MapTask阶段将数据写入环形缓冲区中进行的分区操作,其目的是为了划分出几个结果文件(ReduceTask,但是partioner必须小于ReduceTask个数),而是什么决定将一组数据发送给一次Reduce类中的reduce方法中呢?换句话说,Reduce类中的reduce方法中key一样,values有多个,是什么情况下的key是一样的,能不能自定义。其...原创 2019-01-08 19:35:09 · 2258 阅读 · 3 评论 -
MapTask工作机制
MapTask工作机制如图所示。 (1)Read阶段:MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。 (2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。 (3)Collect收集阶段:在用户编写map()函数中...原创 2019-01-08 09:40:43 · 197 阅读 · 0 评论 -
HDFS的I/O流操作
1 HDFS文件上传1.需求:把本地e盘上的banhua.txt文件上传到HDFS根目录2.编写代码@Testpublic void putFileToHDFS() throws IOException, InterruptedException, URISyntaxException { // 1 获取文件系统 Configuration configuration = n...原创 2019-01-07 23:30:31 · 150 阅读 · 0 评论 -
Job提交流程源码和切片源码详解
1. 进入Job提交方法 public boolean waitForCompletion(boolean verbose ) throws IOException, InterruptedException, ClassNotFou...原创 2019-01-07 20:08:14 · 523 阅读 · 0 评论 -
HDFS小文件优化方法
1 HDFS小文件弊端HDFS上每个文件都要在NameNode上建立一个索引,这个索引的大小约为150byte,这样当小文件比较多的时候,就会产生很多的索引文件,一方面会大量占用NameNode的内存空间,另一方面就是索引文件过大使得索引速度变慢。2 HDFS小文件解决方案小文件的优化无非以下几种方式:(1)在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS。(2)...原创 2019-01-07 11:50:15 · 873 阅读 · 0 评论 -
解读:CombineFileInputFormat类
MR-Job默认的输入格式FileInputFormat为每一个小文件生成一个切片。CombineFileInputFormat通过将多个“小文件”合并为一个"切片"(在形成切片的过程中也考虑同一节点、同一机架的数据本地性),让每一个Mapper任务可以处理更多的数据,从而提高MR任务的执行速度。1).三个重要的属性:maxSplitSize:切片大小最大值。可通过属性 "mapreduc...转载 2019-01-05 16:40:00 · 534 阅读 · 0 评论 -
Hadoop的使用
①大数据的存储: HDFS 分类: LocalFileSystem (本地文件系统) DistributedFileSystem(分布式文件系统) 参考配置: fs.defaultFS,默认到core-default.xml文件中找...原创 2018-12-29 17:00:42 · 463 阅读 · 0 评论 -
Hadoop之 NameNode HA(热备)
1.NameNode HA的技术有以下几个难点:主NameNode(active)和从NameNode(standby)要状态同步2)防止脑裂(split-brain)。顾名思义,就是双机热备的系统中,两个主节点突然失去联系,这时,两个节点会同时以为对方出现故障,会本能地争抢资源,就行脑裂人一样3)在准备切换时,对上层应用要做到无感知2.NameNode HA实现NameNode H...原创 2018-12-18 18:18:52 · 1460 阅读 · 0 评论 -
NameNode安全模式
DataNode上报块信息给NameNode,NameNode启动时加载FSImage和edits文件,进入安全模式,当DataNode上报的块信息满足最小副本数(默认为1),并且99.9%的块都满足这个副本数(和NameNode启动后FSImage和edits文件中块信息一致),则在30秒之后离开安全模式...原创 2019-01-03 16:15:00 · 695 阅读 · 0 评论 -
Hadoop新特性之HDFS Snapshots
HDFS Snapshots( 快照)是一个只读的基于 时间点的文件系统副本。快照可以是整个文件系统的也可以是其中一部分。它常用来作为数据备份,防止用户误操作和容灾。HDFS Snapshots实现了:1)Snapshot创建的时间复杂度为O(1)2)只有当修改Snapshot时,才会有额外的内存占用,内存使用量O(n),n为修改的文件或者目...原创 2018-12-18 16:39:43 · 149 阅读 · 0 评论 -
MapReduce进程以及WordCount分析
一.MapReduce进程二. 官方WordCount源码采用反编译工具反编译源码,发现WordCount案例有Map类、Reduce类和驱动类。且数据的类型是Hadoop自身封装的序列化类型。 常用数据序列化类型表4-1 常用的数据类型对应的Hadoop数据序列化类型 Java类型 Hadoop Writable类型 boo...原创 2018-12-28 21:35:18 · 163 阅读 · 0 评论 -
MapReduce核心思想
MapReduce核心编程思想,如图1-1所示。 图1-1 MapReduce核心编程思想1)分布式的运算程序往往需要分成至少2个阶段。2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。3)第二个阶段的ReduceTask并发实例互不相干,但...原创 2018-12-28 21:24:08 · 448 阅读 · 0 评论 -
Hadoop 2.X新特性 回收站
开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。1.回收站参数设置及工作机制2.启用回收站修改core-site.xml,配置垃圾回收时间为1分钟。fs.trash.interval13.查看回收站回收站在集群中的路径:/user/atguigu/.Trash/….4.修改访问垃圾回收站用户名称进入垃圾回收站用户名称,默认是dr.w...原创 2018-12-18 09:01:31 · 159 阅读 · 0 评论 -
Hadoop 存档---解决小文件存储问题
1)理论概述1 HDFS存储小文件弊端每个文件均按块存储,每个块的元数据存储在 namenode 的内存中,因此 hadoop 存储小文件会非常低效。因为大量的小文件会耗尽 namenode 中的大部分内存。但注意,存储小文件所需要的磁盘容量和存储这些文件原始内容所需要的磁盘空间相比也不会增多。例如,一个 1MB 的文件以大小为 128MB 的块存储,使用的是 1MB 的磁盘空间,而不是...原创 2018-12-18 08:51:34 · 305 阅读 · 0 评论 -
Map Task 与 Reduce Task
MapTask: 读取数据:①一个MapTask处理一片数据,需要InputFormat来读取切片中的数据 Map阶段: ②将数据读取为每一对Key-value,每一对Key-value都会经过map方法处理 收集阶段: ③ context.write(keyOut,valu...原创 2018-12-20 12:19:57 · 700 阅读 · 0 评论 -
Hadoop之NameNode Federation
NameNode是为了解决NameNode可用性的问题,而NameNode Federation则主要是为了解决NameNode扩展性,隔离性,以及单个NameNode性能方面的问题。NameNode Federation架构如下:NameNode Federation使用了多个命名空间,这些命名空间互相独立,自制(其实是对元数据的水平切分),而集群中所有DataNode向所有NameNode...原创 2018-12-18 20:38:36 · 373 阅读 · 0 评论 -
HDFS中块的高可用
DataNode高可用通过在hdfs.xml配制副本数原创 2018-12-18 20:51:19 · 133 阅读 · 0 评论 -
作业提交全过程
1.作业提交过程之YARN,如图所示。作业提交全过程详解(1)作业提交第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。第2步:Client向RM申请一个作业id。第3步:RM给Client返回该job资源的提交路径和作业id。第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。第5步...原创 2019-01-03 19:32:15 · 3816 阅读 · 0 评论 -
Hadoop之job提交流程源码简析
1. 进入Job提交方法public boolean waitForCompletion(boolean verbose ) throws IOException, InterruptedException, ClassNotFoun...原创 2019-01-05 11:50:42 · 275 阅读 · 0 评论 -
DataNode退役旧数据节点
俩种方式(1)NameNode通过配制文件指定DataNode添加白名单 (2)NameNode通过配制文件指定DataNode添加黑名单,退役会将当前节点中保存的块进行转移!添加白名单 添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被退出。配置白名单的具体步骤如下:(1)在NameNode的/o...原创 2019-01-04 21:08:31 · 301 阅读 · 0 评论 -
DataNode服役新数据节点
0. 需求随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。1. 环境准备 (1)在hadoop104主机上再克隆一台hadoop105主机 (2)修改IP地址和主机名称 (3)删除原来HDFS文件系统留存的文件(/opt/module/hadoop-2.7....原创 2019-01-04 21:01:40 · 220 阅读 · 0 评论 -
Hadoop数据压缩
压缩技术能够要写减少底层存储系统(HDFS)读写字节数。磁盘I/O和网络带宽是Hadoop的宝贵资源,数据压缩对于节省资源,最小化磁盘I/O和网络传输非常有帮助。可以在任意MapReduce阶段启用压缩。压缩是提高Hadoop运行效率的一种优化策略通过对Mapper输入,Mapper输出,Reducer输出数据进行压缩,以减少磁盘IO,提高MR程序运行速度。注意:采用压缩技术减少了磁盘...原创 2019-01-04 19:30:15 · 134 阅读 · 0 评论