- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 数据倾斜专题
数据倾斜一 数据倾斜的具体表现1.1 hadoop1.1.1 hadoop产生数据倾斜的现象当我们看任务进度长时间维持在99%,这里如果详细的看日志或者和监控界面的话会发现:有一个多几个reduce卡住,一直不结束各种container报错OOM读写的数据量极大,至少远远超过其它正常的reduce伴随着数据倾斜,会出现任务被kill等各种诡异的表现1.1.2 定位数据倾斜 可以直接同Yarn的8088监控页面查看1.2 hive1.2.1 hive产生数据倾斜的情况 出现数
2021-04-17 10:12:48
204
原创 小文件处理专题
小文件处理专题一 MapReduce1.1 小数据带来的问题在HDFS上,每个文件在NameNode上占150Byte(在内存中占用),如果小文件过多的话就占用大量的Namenode内存,并且查找元数据的速度会很慢在处理MapReduce的过程中每一个小文件就要启动切一片,并且要启动一个maptask,每个maptask默认内存是1G,这样会大量消耗NodeManager内存,同时一个map任务启动和初始化的时间远远大于逻辑处理的时间,就会造成很大的资源浪费。1.2 如何解决从数据源头解
2021-04-17 10:08:41
186
原创 sparkYarn集群提交流程分析(二)
sparkYarn集群提交流程分析(二)书接上文,我们了解到了在不涉及集群的情况下,我们需要在本地启动一个SparkSubmit进程并且,在进程中执行了一个Client伴生对象的main方法,这次我们从client是什么说起client def main(argStrings: Array[String]) { if (!sys.props.contains("SPARK_SUBMIT")) { logWarning("WARNING: This
2021-03-18 17:02:44
232
原创 sparkYarn集群提交流程分析(三)
sparkYarn集群提交流程分析(三)1 .上回说到了骤② 在某一个节点上创建了一个ApplicationMaster进程管理整个spark项目2 .这回说说这ApplicationaMaster中到底干了什么复习一下spark集群提交后有两种运行模式Client模式: 这种运行模式会将Driver启动在提交的节点,你在哪提交在哪给你创建Cluster模式: 这种运行模式会将Driver启动在集群的某一节点,具体启动在哪,由ApplicationMaster来决定,AM在哪Drive
2021-03-18 17:00:05
603
原创 sparkYarn集群提交流程分析(四)
sparkYarn集群提交流程分析(四)书接上文,上次进行到了在不同的节点开启了一个CoarseGrainedExecutorBackend进程,这次就从这个进程的启动开始说起(也就是main方法的执行)org.apache.spark.executor.CoarseGrainedExecutorBackend main() def main(args: Array[String]) { var driverUrl: String = null var executor
2021-03-18 16:57:54
216
2
原创 spark通信框架
spark通信框架一 前言spark在2.0之前使用的是akka的通信框架(实际上在1.6.0就已经全部替换为Netty), 事实上akka这个基于actor的通信框架很是优秀, 但是优秀的人也就不能结局的问题, akka无法解决大块数据的传输问题, 此时就需要一个能解决这个问题并且还保留着akka的优点的人站出来, 于是Netty就占了出来, 这个Netty不仅借鉴了akka的设计, 一种碾压式的趋势占领了spark的通信框架, 包括Java也在用Netty这个通信框架, 可见其优秀至于具体原因请
2021-03-18 16:55:42
247
原创 Spark程序Yarn集群提交Executor反向注册在分析
Spark程序Yarn集群提交Executor反向注册在分析一 前言有了spark的通信框架的基础再去看CoarseGrainedExecutorBackend类,才会明白提交任务的最后一步反向注册二 反向注册先看上次源码 private def run( driverUrl: String, executorId: String, hostname: String, cores: Int, appId: String,
2021-03-18 16:51:14
438
原创 Spark程序的Yarn集群提交流程源码分析(一)
sparkYarn集群提交流程分析(一)spark提交流程图简介(之后的源码分析会围绕流程图进行)源码分析注意: 本文章中的所有代码都不完整 , 这里只取了重要代码分析1 .首先集群提交就需要将用户编写的应用程序打成jar包上传到集群中2 .其次在集群中执行的代码如下: bin/spark-submit \ --class com.project.spark.WordCount \ --master yarn \ WordCount.jar \ /input \ /out
2021-03-11 19:49:32
184
原创 shell练习题
16.shell练习题(1) 什么是解释性语言?什么是编译型语言?解释性语言依赖于解释器,每次执行都需要经过解释器解析然后形成机器可执行的代码 运行速度较慢编译型语言在执行之前需要编译成机器可识别的文件然后再交给机器去执行,只需要一次编译就可以到处运行 运行速度较快(2).写一个脚本输入任意数组或则数字例如 2 3 4 5 6 7 8 9,输出最大值、最小值、平均值[root@haibao class26-shell]# cat -n num01.sh 1 #!/bin/bash 2
2020-10-24 15:50:58
532
原创 shell编程
15.shell编程引1 Shell是什么?a)上图可以看到Shell处于外部应用层和linux内核中间,他的作用就是**接受外界用户的应用程序的命令,然后调用linux内核做一系列操作来完成功能,**实际上是一个上传下达的程序b) 并且他还是一个功能强大的解释性编译语言,我们可以直接在linux系统上直接编写shell程序来执行,这样就成为shell编程也是linux学习过程中重要的一部分,同时linux命令(外部命令)基本上都是运行在shell程序上的,还有一部分命令(直接命令)直接集成在lin
2020-10-24 15:50:03
356
原创 Linux基础命令实操
Linux实操vi/vim操作来个操作吓吓你提问:这是个啥,这个键盘是干啥的是vi/vim的快捷键vi是用来操作和编辑文件的,又因为linux是万事万物皆文件,所以可见这个操作重要性vim是vi的加强版,也同样重要想要操作一个文件首先要打开它,在linux系统中打开终端,输入如下代码vim 文件名.扩展名这句话的意思就是如果没有这个文件就先创建再打开,如果有直接打开vim 打开文件后有三种模式普通(正常)模式用vim打开后的默认模式在这个模式我们可以使用快捷键进行
2020-10-21 21:20:11
355
原创 Mybatis中${}和#{}取值的区别
Mybatis中${}和#{}取值的区别相同点:#:可以获取map中的值或者pojo对象属性的值;${}:可以获取map中的值或者pojo对象属性的值;区别:#{}:是以预编译的形式,将参数设置到sql语句中,PreparedStatement;防止sql注入$:取出的值直接拼装在sql语句中;会有安全问题;效果实例select * from tbl_employee where id=${id} and last_name=#{lastName}Preparin
2020-09-22 16:49:30
818
原创 Tomcat部署项目的三种方式
Tomcat部署项目的三种方式本文所有的目录全部在tomcat安装目录下寻找,并且所有的版本都有1.直接将项目放到webapps目录下即可在webapps目录中放入项目文件,文件名就是localhost:8080后需要加的虚拟路径简化部署:将项目打成一个war包,再将war包放置到webapps目录下。war包会自动解压缩,并且war包的名字就是localhost:8080后需要加的虚拟路径**注意:**这两种方式都需要默认的项目配置服务时直接将项目名(也就是文件名配
2020-09-15 10:39:56
473
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人