![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hadoop
文章平均质量分 58
栈溢出了
这个作者很懒,什么都没留下…
展开
-
Tool接口案例
注意此时提交的3个参数,第一个用于生成特定的Tool,第二个和第三个为输入输出目录。3)在HDFS上准备输入文件,假设为/input目录,向集群提交该Jar包。需求:自己写的程序也可以动态修改参数。编写Yarn的Tool接口。期望可以动态传参,结果报错,误认为是第一个输入参数。(1)新建Maven项目YarnDemo,pom如下。创建类WordCount并实现Tool接口。原创 2022-08-21 22:01:36 · 91 阅读 · 0 评论 -
公平调度器案例
公平调度器的配置涉及到两个文件,一个是yarn-site.xml,另一个是公平调度器队列分配文件fair-scheduler.xml(文件名可自定义)提交任务时不指定队列,按照配置规则,任务会到root.atguigu.atguigu队列。创建两个队列,分别是test和atguigu(以用户所属组命名)。提交任务时指定队列,按照配置规则,任务会到指定的root.test队列。若用户提交任务时指定队列,则任务提交到指定队列运行。队列运行(注:group为用户所属组)。,test用户提交的任务到。原创 2022-08-21 21:42:21 · 59 阅读 · 0 评论 -
Yarn生产环境核心参数配置案例和容量调度器多队列提交案例
容量调度器,支持任务优先级的配置,在资源紧张时,优先级高的任务将优先获取资源。默认情况,Yarn将所有任务的优先级限制为0,若想使用任务的优先级功能,须开放该限制。需求1:default队列占总内存的40%,最大资源容量占总资源60%,hive队列占总内存的60%,最大资源容量占总资源80%。(2)按照框架:hive /spark/ flink 每个框架的任务放入指定的队列(企业用的不是特别多)业务部门1(重要)=》业务部门2(比较重要)=》下单(一般)=》购物车(一般)=》登录注册(次要)原创 2022-08-21 21:22:17 · 354 阅读 · 0 评论 -
Yarn常用命令
根据Application状态过滤:yarn application -list -appStates (所有状态:ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)查询Container日志 yarn logs -applicationId -containerId 列出所有节点:yarn node -list -all。yarn node查看节点状态。原创 2022-08-21 19:53:52 · 59 阅读 · 0 评论 -
Yarn调度器和调度算法
目前,Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.1.3默认的资源调度器是Capacity Scheduler。这些配置文件在 /opt/module/hadoop3.1/etc/目录下。):单队列,根据提交作业的先后顺序,先来先服务。具体设置:yarn-default.xml。原创 2022-08-21 17:41:36 · 252 阅读 · 0 评论 -
Yarn资源调度器
12)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。(11)RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。(13)MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。(10)MRAppmaster向RM 申请运行MapTask资源。(5)程序资源提交完毕后,申请运行mrAppMaster。...原创 2022-08-14 20:35:56 · 59 阅读 · 0 评论 -
ETL数据清洗
程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据。一词较常用在数据仓库,但其对象并不限于数据仓库。的缩写,用来描述将数据从来源端经过抽取(WebLogDriver类。WebLogMapper类。清理的过程往往只需要运行。...原创 2022-08-14 18:09:53 · 1042 阅读 · 0 评论 -
MapJoin
在Map端缓存多张表,提前处理业务逻辑,这样增加Map端业务,减少Reduce端数据的压力,尽可能的减少数据倾斜。2 在MapJoinMapper类中的setup方法中读取缓存文件。思考:在Reduce端处理过多的表,非常容易产生数据倾斜。1 先在MapJoinDriver驱动类中添加缓存文件。Map Join适用于一张表十分小、一张表很大的场景。...原创 2022-08-14 17:46:53 · 73 阅读 · 0 评论 -
ReduceJoin
Reduce端的主要工作:在Reduce端以连接字段作为key的分组已经完成,我们只需要在每一个分组当中将那些来源于不同文件的记录(在Map阶段已经打标志)分开,最后进行合并就ok了。Map端的主要工作:为来自不同表或文件的key/value对,打标签以区别不同来源的记录。缺点:这种方式中,合并的操作是在Reduce阶段完成,Reduce端的处理压力太大,Map节点的运算负载则很低,资源利用率不高,且在Reduce阶段极易产生数据倾斜。编写TableMapper类。编写TableDriver类。...原创 2022-08-14 17:33:55 · 49 阅读 · 0 评论 -
MapTask和ReduceTask工作机制
MapTask 1)Read阶段:MapTask通过InputFormat获得的RecordReader,从输入InputSplit中解析出一个个key/value。(2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value(3)Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner原创 2022-08-07 19:47:54 · 100 阅读 · 0 评论 -
OutputFormat接口实现类
过滤输入的log日志,包含atguigu的网站输出到e:/atguigu.log,不包含atguigu的网站输出到e:/other.log。OutputFormat是MaperReducer输出的基类,所有实现MapReduce的输出实现了OutputFormat接口。1 自定义一个类继承FileOutputFormat。输出数据:atgui.log other.log。编写LogRecordWriter类。自定义OutputFormat类。自定义OutputFormat。编写LogMapper类。...原创 2022-08-07 19:24:04 · 75 阅读 · 0 评论 -
Combiner合并
统计过程中对每一个MapTask的输出进行局部汇总,以减小网络传输量即采用Combiner功能。Combiner是MR程序中Mapper和Reducer之外的一种组件。Combiner是在每一个MapTask所在的节点运行。Combiner 的意义就是对每一个的输出结果进行汇总。Combiner和Reducer的区别在于运行位置。Combiner组件的父类就是Reducer。因为Combiner 是reducer的子类。输入数据多,输出时经过合并,输出数据降低。在Driver类中指定Combiner。...原创 2022-08-07 18:48:11 · 125 阅读 · 0 评论 -
排序概述笔记
如果磁盘上文件数目到达一定数目,则会进行一次归并排序以生成一个跟大文件,如果内存中文件大小或数目超过一定阈值,则会进行一次合并后将数据溢写到磁盘上。当所有数据拷贝完毕后,ReduceTask会统一对内存和磁盘上的数据进行一次归并排序。对于MapTask,它会将处理的结果暂时存放在环形缓冲区,当环形缓冲区使用率到达一定阈值,再对缓冲区中数据进行一次快速排序,并将这些数据溢写到磁盘上,而当数据处理完毕后,它会磁盘对所有文件进行归并排序。默认排序是按照字典序进行排序,而实现排序的方法是快速排序。...原创 2022-07-31 22:02:14 · 80 阅读 · 0 评论 -
Shuffle机制
1)自定义类继承Partitioner,重写getPartition()方法(2)在Job驱动中,设置自定义Partitioner(3)自定义Partition后,要根据自定义Partitioner的逻辑设置相应数量的ReduceTask()4分区总结(1)如果ReduceTask的数量>getPartiton的结果数,则会多产生几个空的输出文件part-r-000xx;@Override//text手机号}else{}}}Map类。...原创 2022-07-31 00:01:20 · 76 阅读 · 0 评论 -
MapReduce工作流程
7)合并成大文件后,Shuffle的过程也就结束了,后面进入ReduceTask的逻辑运算过程(从文件中取出一个一个的键值对Group,调用用户自定义的reduce()方法)(6)ReduceTask会抓取到同一个分区的来自不同MapTask的结果文件,ReduceTask会将这些文件再进行合并(归并排序)(1)Shuffle中的缓冲区大小会影响到MapReduce程序的执行效率,原则上说,缓冲区越大,磁盘io的次数越少,执行速度就越快。(2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件。...原创 2022-07-30 22:11:52 · 164 阅读 · 0 评论 -
InputFormat 数据输入
切片与MapTask并行度决定机制切片与MapTask并行度决定机制MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的处理速度数据块Block是HDFS物理上把数据分成一块一块。数据块是HDFS存储数据单位。数据切片数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。数据切片是MapReduce程序计算输入数据的单位,一个切片会对应启动一个MapTask。(1)一个Job的Map阶段并行度由客户端在提交Job的切片数决定。...原创 2022-07-24 16:25:28 · 147 阅读 · 0 评论 -
Hadoop序列化
但是只有这些还是远远不够的,我们在开发中经常需要自定义对象也能序列化自定义对象实现序列化需要实现序列化接口Writable步骤分为7步(1)必须实现Writable接口(2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造super();}(3)重写序列化方法@Override}(4)重写反序列方法@Override}(5)注意序列化和反序列化的顺序要一致(6)要想把结果显示在文件中,需要重写toString()方法。可以用“\t”分开,方便后续使用。...原创 2022-07-23 15:24:45 · 71 阅读 · 0 评论 -
MapReduce 编程规范 (以WordCount为例)
先介绍一下常用的数据序列化类型在MapReduce编程中,需要进行数据传输,比如将Mapper的结果传入Reducer中进行汇总,媒介就是context,所以需要可以序列化的数据类型。原创 2022-07-23 11:14:11 · 868 阅读 · 0 评论 -
MapReduce概述
MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架.MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。...原创 2022-07-22 23:35:56 · 126 阅读 · 0 评论 -
DataNode工作机制
1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。(2)DataNode启动后向NameNode注册,通过后,周期性(6小时)的向NameNode上报所有的块信息。...原创 2022-07-17 10:47:41 · 125 阅读 · 0 评论 -
NameNode和SecodaryNameNode
如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage。这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一旦NameNode节点断电,就会产生数据丢失。因此,引入Edits文件(只进行追加操作,效率很高)。...原创 2022-07-17 10:37:10 · 162 阅读 · 0 评论 -
HDFS 读写数据的流程
在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据。节点距离两个节点到达最近的共同祖先的距离总和。这个距离是指走了多少条路经,跟二叉树差不多,不是指物理距离。...原创 2022-07-17 00:00:35 · 400 阅读 · 0 评论 -
HDFS API操作
之前学习了HDFS的shell操作,但那是在集群内部操作,在生产环境下我们不是每次都在内部进行操作,我们是使用客户端连接集群进行操作,通过window客户端连接集群进行操作,称为API操作。原创 2022-07-15 09:02:39 · 390 阅读 · 0 评论 -
HDFS的shell操作
hadoop fs 具体命令 / hdfs dfs 具体命令 显示所有命令: 2 常用命令 1 -help:输出这个命令参数 2 创建/sanguo文件夹 3 上传 1 -moveFromLocal:从本地剪切粘贴到HDFS 2 -copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去3 -put:等同于copyFromLocal,生产环境更习惯用put4 -appendToFile:原创 2022-07-14 11:54:18 · 477 阅读 · 0 评论 -
集群时间同步
如果服务器在 公网环境下,可以来连接外网,服务器会定期和公网时间校准,不需要时间同步如果是在内网环境下,必须配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务的时间不同步需求:找一台机器作为时间机器,所有的机器与这台机器时间进行定时同步,生产环境根据任务时间对时间的准确程度要求周期同步。测试环境为了尽快看到效果,采用1分钟同步一次(1) 查看所有节点ntpd服务状态和开机自启动状态(2) 修改hadoop102的ntp.conf配置文件[jiaran@hadoop102 ~]$ sudo v原创 2022-07-14 10:14:53 · 1143 阅读 · 0 评论 -
集群启动/停止方式总结
1 整体启动/停止HDFS(2)整体启动/停止YARN(1)分别启动。停止HDFS组件(2) 启动/停止YARN为了使脚本在哪里都可以使用,所以脚本的路径要写入全局环境变量中使用 echo $PATH 查看里面恰好有一个路径 :/home/jiaran/bin所以脚本就写在bin目录下(方便)1 Hadoop集群启停脚本 (包含HDFS,Yarn,HistoryServer) :myhaoop.sh保存好后 ,赋予脚本执行权限2 查看三台服务器Java进程的脚本:jpsall保存好后 ,赋予执行原创 2022-07-14 09:47:40 · 521 阅读 · 0 评论 -
Hadoop启动集群
1 配置workers添加以下内容:hadoop102hadoop103hadoop104 配置这个文件是为了说明有多少台主机配置好后一样要分发到其他机器中2 启动集群如果是第一次启动,要在hadoop102上格式化NameNode(我把它配置在了Hadoop102)语法:启动HDFS在配置了ResourceManager的节点(hadoop103)上启动YarnHadoop提供了在网页端查看NameNode和Yarn的网页 (a)浏览器中输入:http://hadoop102:9870原创 2022-07-13 23:16:29 · 870 阅读 · 0 评论 -
Hadoop集群配置
NameNode和SecondaryNameNode以及ResourceManager都很消耗资源,所以不安装在同一台服务器上 Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值 默认配置文件: 自定义配置文件: core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在 $HADOOP_HOME/etc/hadoop这个路径上,用原创 2022-07-13 22:49:29 · 186 阅读 · 0 评论 -
几种重要的复制文件的方式
基本语法(不是严格按照这样的): 案例:将hadoop102上,将hadoop102中/opt/module/jdk1.8.0.212目录拷贝到hadoop103上拷贝的文件不要求是自己所在这台主机上的,你可以将hadoop102上将hadoop103上的文件拷贝到hadoop104,也可以将hadoop104上的文件拷贝到自己这台主机上,不过要求,如果要拷贝的文件或目的地的路径不在本机上,路径前面要加:用户名@主机: rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的原创 2022-07-13 22:06:38 · 547 阅读 · 0 评论 -
ssh免密登录
ssh无密码登录的实现原创 2022-07-13 21:21:21 · 166 阅读 · 0 评论 -
Hadoop基础知识
Hadoop简介原创 2022-07-12 10:15:21 · 98 阅读 · 0 评论