Hadoop
hadoop
大数据流浪法师
个人兴趣领域:大数据、人工智能、游戏Fix技术
展开
-
Java代码执行linux命令所需的Maven工程的POM的Dependency依赖
使用java代码执行linux命令,maven所需的pom依赖<dependency> <groupId>net.neoremind</groupId> <artifactId>sshxcute</artifactId> <version>1.0</version></dependency>...原创 2019-12-25 08:24:10 · 534 阅读 · 0 评论 -
Reduce端实现Join算法
Reduce端实现Join算法数据链接:https://pan.baidu.com/s/1DAXmP9cskwXB5uNSA0bugA提取码:2zn8order.txt格式:日期\t商品id\t下单日期2019-11-11 200300500 2019111101012019-11-11 200300505 2019111101022019-11-11 200300550 201...原创 2019-11-28 10:14:38 · 265 阅读 · 0 评论 -
Map端实现Join算法
Map端实现Join算法数据链接:https://pan.baidu.com/s/1DAXmP9cskwXB5uNSA0bugA提取码:2zn8order.txt格式:日期\t商品id\t下单日期2019-11-11 200300500 2019111101012019-11-11 200300505 2019111101022019-11-11 200300550 201911...原创 2019-11-28 08:31:05 · 516 阅读 · 0 评论 -
MapReduce 参数优化
MapReduce重要配置参数1 资源相关参数以下调整参数都在mapred-site.xml这个配置文件当中有//以下参数是在用户自己的mr应用程序中配置就可以生效(1) mapreduce.map.memory.mb: 一个Map Task可使用的资源上限(单位:MB),默认为1024。如果Map Task实际使用的资源量超过该值,则会被强制杀死。(2) mapreduce.red...原创 2019-11-26 08:06:26 · 316 阅读 · 1 评论 -
MapReduce 多job串联
一个稍复杂点的处理逻辑往往需要多个mapreduce程序串联处理,多job的串联可以借助mapreduce框架的JobControl实现示例代码: ControlledJob cJob1 = new ControlledJob(job1.getConfiguration()); ControlledJob cJob2 = new ControlledJob(job2.get...原创 2019-11-26 07:59:56 · 301 阅读 · 0 评论 -
MapReduce综合练习题(3)倒排索引建立
需求分析需求:有大量的文本(文档、网页),需要建立搜索索引思路分析:首选将文档的内容全部读取出来,加上文档的名字作为key,文档的value为1,组织成这样的一种形式的数据map端数据输出hello-a.txt 1hello-a.txt 1hello-a.txt 1reduce端数据输出hello-a.txt 3Java代码实现package com.czxy.day201...原创 2019-11-25 09:42:15 · 475 阅读 · 0 评论 -
MapReduce 自定义OutputFormat 实现多路径输出
自定义outputFormat需求现在有一些订单的评论数据,需求,将订单的好评与差评进行区分开来,将最终的数据分开到不同的文件夹下面去,数据内容参见资料文件夹,其中数据第九个字段表示好评,中评,差评。0:好评,1:中评,2:差评分析程序的关键点是要在一个mapreduce程序中根据数据的不同输出两类结果到不同目录,这类灵活的输出需求可以通过自定义outputformat来实现实现实现要...原创 2019-11-19 21:38:22 · 494 阅读 · 0 评论 -
MapReduce 自定义InputFormat 实现小文件合并
1 需求无论hdfs还是mapreduce,对于小文件都有损效率,实践中,又难免面临处理大量小文件的场景,此时,就需要有相应解决方案, 将多个小文件合并成一个文件 SequenceFile.SequenceFile 里面存储着多个文件。存储的形式为文件名称为 key,文件内容为 value。2 分析小文件的优化无非以下几种方式:1、在数据采集的时候,就将小文件或小批数据合成大文件再上传HD...原创 2019-11-19 17:06:14 · 419 阅读 · 0 评论 -
MapReduce 集群调优
MTU指跨界点传输时,一次性发送的数据的大小,把它调大,能起到优化效果,但是调大后丢包率会增加,有风险。MTU太大,丢包率高,太小,慢。要找个折中点。集群调优核心思路在网络带宽、磁盘IO是瓶颈的前提下能不使用io 和网络,就不使用。在必须使用的情况下,能少用IO 网络就少用,所有的能够减少网络开销的、减少IO使用的可选项,都可以作为集群调优的可选项。(软件层面(操作系统----集群层...原创 2019-11-18 21:08:03 · 146 阅读 · 0 评论 -
MapReduce 内存角度与流程角度简单理解
Map的输出到内存Map的输出先写入环形缓冲区(默认大小100M-可以认为调整)(可以再输出的同时写入数据),当缓冲区内的数据达到阈值(默认0.8-可以人为调整)时,对数据进行flash。flash 出去的数据的数量达到一定量(默认4个)时,进行数据的合并。Map的输出到内存Map的输出先写入环形缓冲区(默认大小100M-可以认为调整)(可以再输出的同时写入数据),当缓冲区内的数据达到...原创 2019-11-18 20:23:23 · 211 阅读 · 0 评论 -
MapReduce中 Split的逻辑拆分
一个Split对应一个RecordReader一个RecordReader对应一个map获取到读取到的数据,对数据进行逻辑切分,切分的大小是128M.这里的128 与HDFS数据块的128没有任何关系HDFS 128 是存储层面的数据切分split128 是计算层面的128,只不过数据恰好相等。两个128相同的原因是,一个集成程序能够正好计算一个数据块。...原创 2019-11-18 19:37:31 · 421 阅读 · 1 评论 -
MapReduce综合练习题(2)社交粉丝数据分析
数据准备以下是qq的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的)A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C,DL:D,E,FM:E,F,GO:A,H,I,J把数据...原创 2019-11-22 21:33:32 · 703 阅读 · 0 评论 -
MapReduce Java代码应用Snappy压缩算法
操作流程Snappy算法在本地模式里边没有,所以必须得去集群里跑这个代码首先请看操作记录[root@hadoop01 home]# hadoop fs -mkdir /aaaaa在集群新建一个/aaaaa目录[root@hadoop01 home]# hadoop fs -put a.txt /aaaaa/随便建一个a.txt输入任意内容,然后上传到集群的/aaaaa目录下[ro...原创 2019-11-18 09:47:21 · 464 阅读 · 0 评论 -
MapReduce Java代码获取文件名称
准备数据链接:https://pan.baidu.com/s/1uspTkN6_o-FIPSbq-Q9YCQ提取码:u0mf下载SumData.txt获取文件名称在Map中加入以下代码,即可获取读取的文件名称 //通过context可以获取这行文本所属的文件名称 FileSplit inputSplit = (FileSplit)context.getInputSpli...原创 2019-11-18 08:56:15 · 279 阅读 · 0 评论 -
MapReduce的数据压缩机制
Shuffle阶段的数据压缩机制在shuffle阶段,可以看到数据通过大量的拷贝,从map阶段输出的数据,都要通过网络拷贝,发送到reduce阶段,这一过程中,涉及到大量的网络IO,如果数据能够进行压缩,那么数据的发送量就会少得多,那么如何配置hadoop的文件压缩呢,以及hadoop当中的文件压缩支持哪些压缩算法呢??接下来一一细看MapReduce的执行流程MapReduce inp...原创 2019-11-16 17:37:30 · 333 阅读 · 0 评论 -
MapReduce总体工作机制
MapReduce总体工作机制map逻辑完之后,将map的每条结果通过context.write进行collect数据收集。在collect中,会先对其进行分区处理,默认使用HashPartitioner。MapReduce提供Partitioner接口,它的作用就是根据key或value及reduce的数量来决定当前的这对输出数据最终应该交由哪个reduce task处理。默认对key ...原创 2019-11-16 15:19:36 · 208 阅读 · 0 评论 -
ReduceTask 工作机制以及reduceTask的并行度
ReduceTask 工作机制以及reduceTask的并行度Reduce大致分为copy、sort、reduce三个阶段,重点在前两个阶段。copy阶段包含一个eventFetcher来获取已完成的map列表,由Fetcher线程去copy数据在此过程中会启动两个merge线程,分别为inMemoryMerger和onDiskMerger分别将内存中的数据merge到磁盘和将磁盘中的数据...原创 2019-11-16 15:16:02 · 370 阅读 · 0 评论 -
MapTask运行机制详解以及Map任务的并行度
MapTask运行机制详解(图上左边蓝色应为MapperTask而不是MapperTack)整个Map阶段流程大体如上图所示。简单概述:inputFile通过split被逻辑切分为多个split文件通过RecordReader按行读取内容给map(用户自己实现的)进行处理数据被map处理结束之后交给OutputCollector收集器,对其结果key进行分区(默认使用hash分区)...原创 2019-11-16 15:11:21 · 1247 阅读 · 0 评论 -
MapReduce综合练习题(1)上网流量统计
前言这个练习题是使用hadoop本地模式运行的。你需要做的是:1,把代码复制粘贴,改吧改吧2,自己把结果跑出来,对照结果是否正确3,再仔细看一遍代码,百度其中不懂的地方准备数据链接:https://pan.baidu.com/s/1wFwJMLTDnLCYkgiwemHQ0g提取码:ih8l大小:52kb左右下载data_flow3.1.dat,里面的数据长这个样子:需...原创 2019-11-16 11:47:07 · 930 阅读 · 1 评论 -
MapReduce的Combiner究竟做了什么?
什么是Combiner?每一个 map 都可能会产生大量的本地输出,Combiner 的作用就是对 map 端的输出先做一次合并,以减少在 map 和 reduce 节点之间的数据传输量,以提高网络IO 性能,是 MapReduce 的一种优化手段之一。combiner 是 MR 程序中 Mapper 和 Reducer 之外的一种组件combiner 组件的父类就是 Reducerco...原创 2019-11-16 10:27:51 · 678 阅读 · 2 评论 -
MapReduce中的计数器概念和自定义计数器方法
计数器的概念打个比方:人数钱的时候,人就是计数器计数器是收集作业统计信息的有效手段之一,用于质量控制或应用级统计(就是用来数数的)。计数器还可辅助诊断系统故障。如果需要将日志信息传输到map 或reduce 任务, 更好的方法通常是看能否用一个计数器值来记录某一特定事件的发生(记录某事件发生的次数)。对于大型分布式作业而言,使用计数器更为方便。除了因为获取计数器值比输出日志更方便,还有...原创 2019-11-16 10:08:53 · 585 阅读 · 0 评论 -
MapReduce Java自定义Partition分区
map步骤的输出直接给了shuffle中的partition。这里自定义partition处理数据。主要是理解整个过程与代码。仔细看代码,体会自定义分区有啥用。准备数据:链接:https://pan.baidu.com/s/19FTD2POhykGjxV6holxnfA提取码:bvon下载partition.txt里面数据大概长这样:我们要做的是,把中间这一行的大于15的放到一个分...原创 2019-11-15 16:48:21 · 340 阅读 · 0 评论 -
Shuffle阶段的Partition分区算法
Shuffle阶段的Partition分区算法MapReduce的分区与ReduceTask的数量的关系:Shuffle阶段接收到键值对列表,<key, value>的list1,对每个Key取一个hash值。2,用key对设置的ReduceTask的数量取余3,余几,这个键值对数据就放在哪个分区。算法:对key 进行哈希,获取到一个哈希值,用这个哈希值与reducetas...原创 2019-11-15 15:25:43 · 613 阅读 · 0 评论 -
Mapper和Reducer的java抽象类
下面这幅图是mapReduce大体的运行过程。开发MapReduce程序,一共可以分为以上八个步骤。其中每个步骤都是一个class类,通过job对象将程序组装成一个任务提交即可。为了简化MapReduce程序的开发,每一个步骤的class类,都有一个既定的父类,直接继承即可。因此可以大大简化MapReduce程序的开发难度,也可以快速的实现功能开发。MapReduce编程当中,其中最重...原创 2019-11-15 15:02:23 · 591 阅读 · 0 评论 -
MapReduce核心思想
分而治之MapReduce的思想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景)。Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。Reduce负责“合”,即对map阶段的结果进行全局汇总。这两个阶段合起来正是MapReduce思想的体现。...原创 2019-11-15 14:30:27 · 610 阅读 · 0 评论 -
MapReduce的Jar包上传到集群运行
需求:在给定的文本文件中统计输出每一个单词出现的总次数数据格式准备如下:创建这个文件cd /export/serversvim wordcount.txt文件内容:hello,world,hadoophello,hive,sqoop,flumekitty,tom,jerry,worldhadoop上传成功后效果上传文件到集群hdfs dfs -mkdir /word...原创 2019-11-15 10:58:10 · 1091 阅读 · 0 评论 -
MapReduce的10个具体步骤快速记忆
MapReduce计算任务的步骤第1步:InputFormatInputFormat 到hdfs上读取数据将数据传给Split第2步:SplitSplit将数据进行逻辑切分,将数据传给RR第3步:RR(RecordReader)RR:将传入的数据转换成一行一行的数据,输出行首字母偏移量和偏移量对应的数据将数据传给MAP第4步:MAPMAP:根据业务需求实现自定义代码将数据传...原创 2019-11-15 08:44:40 · 911 阅读 · 0 评论 -
MapReduce的Shuffle过程
Shuffle(混洗)Shuffle 输入是key value的 list(keys,values,每个key对应一个value)Shuffle 输出是key value的list(key,values,每个key对应一个values)Shuffle分为以下几个步骤:1,获取数据Shuffle发生在map计算完成之后,这时候map输出的键值对列表(key,value 的list)就...原创 2019-11-15 08:26:11 · 876 阅读 · 0 评论 -
MapReduce将运算结果分类输出到多个文件
MultipleOutputsMultipleOutputs是一个可以向不同文件输出内容的类。这里简单地记录它的用法。package demo03;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.io.Text;im...原创 2019-11-13 21:00:46 · 1295 阅读 · 0 评论 -
Java代码直观地理解MapReduce
MapReduce核心思想分而治之,先分后和:将一个大的、复杂的工作或任务,拆分成多个小的任务,并行处理,最终进行合并。MapReduce由Map和Reduce组成Map: 将数据进行拆分Reduce:对数据进行汇总理论看不懂,跑个Java代码会有直观的印象。这里我用的idea,使用的是maven项目,下面这个是pom文件,你得导这些包才能用hadoop而且你得安装并配置hadoop...原创 2019-11-13 09:41:00 · 391 阅读 · 0 评论 -
hadoop:job运行有时失败,有时成功的原因
任务运行需要的资源文件,不在job任务运行的节点上,资源文件就是要处理的数据等等原创 2020-03-09 08:25:33 · 586 阅读 · 0 评论 -
Hadoop HDFS的特点
重要特性分块存储(block)默认大小128M(2.x版本),64M(老版本),可修改统一的抽象目录树可通过路径访问文件(hdfs://namenode:port/…)统一管理目录结构和元数据的管理都由namenode(集群主节点)承担负责维护目录树和文件所对应的block块id和所在datanode服务器datanode存储管理集群从节点,每个block可在多个datanode...原创 2019-12-16 08:14:21 · 254 阅读 · 0 评论 -
Hadoop HDFS 归档文件archive
archive每个文件均按块存储,每个块的元数据存储在namenode的内存中,因此Hadoop存储小文件会非常低效。因为大量的小文件会耗尽namenode中的大部分内存。但注意,存储小文件所需要的磁盘容量和存储这些文件原始内容所需要的磁盘空间相比也不会增多。例如,一个1MB的文件以大小为128MB的块存储,使用的是1MB的磁盘空间,而不是128MB。Hadoop存档文件或HAR文件,是...原创 2019-12-12 14:44:53 · 592 阅读 · 0 评论 -
Hadoop HDFS 不同节点与不同集群之间的数据拷贝
在实际工作当中,极有可能会遇到将测试集群的数据拷贝到生产环境集群,或者将生产环境集群的数据拷贝到测试集群,那么就需要在多个集群之间进行数据的远程拷贝scp实现节点之间数据拷贝cd /export/softwares/scp -r jdk-8u141-linux-x64.tar.gz root@hadoop02:/export/distcp实现集群之间的数据拷贝cd /export/se...原创 2019-12-12 11:31:36 · 823 阅读 · 0 评论 -
Hadoop HDFS 回收站
HDFS回收站任何一个文件系统,基本上都会有垃圾桶机制(回收站),也就是删除的文件,不会直接彻底清掉,会先丢弃到回收站中。过一段时间之后,自动清空垃圾桶当中的文件,这样对于文件的安全删除比较有保证,避免我们一些误操作,导致误删除文件或者数据回收站配置两个参数默认值fs.trash.interval=0,0表示禁用回收站,此值大于0时表示启用回收站,以分钟为单位的垃圾回收时间。用于设置被删...原创 2019-12-12 10:01:18 · 2227 阅读 · 0 评论 -
Hadoop Namenode的HA原理
历史背景Hadoop1.X版本,NN是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法使用。为了解决这个问题,出现了一堆针对HDFS HA的解决方案(如:Linux HA, VMware FT, shared NAS+NFS, BookKeeper, QJM/Quorum Journal Manager, BackupNode等)。HA(High ...原创 2019-12-12 09:50:39 · 367 阅读 · 0 评论 -
Hadoop 启动HA服务(高可用性)
HA服务的启动第一步:初始化zookeeper在hadoop01机器上进行zookeeper的初始化,其本质工作是创建对应的zookeeper节点cd /export/servers/hadoop-2.6.0-cdh5.14.0bin/hdfs zkfc –formatZK第二步:启动journalNode三台机器执行以下命令启动journalNode,用于我们的元数据管理cd ...原创 2019-12-12 09:33:09 · 2503 阅读 · 3 评论 -
Hadoop Federation
单NameNode的架构使得HDFS在集群扩展性和性能上都有潜在的问题,当集群大到一定程度后,NameNode进程使用的内存可能会达到上百G,NameNode成为了性能的瓶颈。因而提出了namenode水平扩展方案-- Federation。Federation中文意思为联邦,联盟,是NameNode的Federation,也就是会有多个NameNode。多个NameNode的情况意味着有多...原创 2019-12-05 09:14:19 · 328 阅读 · 0 评论 -
Block块手动拼接成完整数据
HDFS的数据都是以一个个的block块存储的,只要我们能够将文件的所有block块全部找出来,拼接到一起,又会成为一个完整的文件。接下来我们就来通过命令将文件进行拼接第一步:上传一个大于128M的文件到hdfs上面去我们选择一个大于128M的文件上传到hdfs上面去,只有一个大于128M的文件才会有多个block块这里我们选择将我们的jdk安装包上传到hdfs上面去node01执行以...原创 2019-11-12 08:13:44 · 403 阅读 · 0 评论 -
Hadoop HDFS 副本存放机制
HDFS 副本存放机制第一份数据来源于客户端第二份存放的位置是与第一个副本在相同机架上,且不在同一个节点,按照一定的规则(cpu 内存 IO是用率,和硬盘剩余容量)找到一个节点存放第三个副本的存放位置是与第一第二份数据副本不在同一个机架上,且逻辑与存放副本1和2的机架距离最近的机上按照一定的规则(cpu 内存 IO是用率,和硬盘剩余容量)找到一个节点进行存放...原创 2019-11-07 20:53:24 · 1293 阅读 · 0 评论
分享