![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据
文章平均质量分 89
Z_Data
大学计算机专业老师一枚,高级开发工程师,专注大数据相关技术分享,实战项目开发。
展开
-
Spark运行架构
Spark Core包含Spark最基础和最核心的功能,当提及Spark运行架构时,就是指Spark Core的运行架构。本节首先介绍Spark的基本概念和架构设计,然后介绍Spark运行基本流程,最后介RDD 的设计与运行原理。原创 2024-04-12 15:37:52 · 836 阅读 · 0 评论 -
Hadoop分布式计算框架(MapReduce)——案例实践:气象大数据离线分析
数据格式由Year(年)、Month(月)、Day(日)、Hour(时)、Temperature(气温)、Dew(湿度)、Pressure(气压)、Wind dir.(风向)、Wind speed(风速)、Sky Cond.(天气状况)、Rain 1h(每小时降雨量)、Rain 6h(每6小时降雨量)组成。打包成功后,在项目的targer目录下找到编译好的bigdata-1.0-SNAPSHOT.jar包,然后将其上传至/home/hadoop/shell/lib目录下(没有相关目录可手动创建)原创 2023-12-21 16:46:18 · 1600 阅读 · 5 评论 -
Hadoop分布式计算框架(MapReduce)——MapReduce运行机制
它首先为Map任务发出请求,该请求优先级要高于Reduce任务的请求,这是因为所有的Map任务必须在Reduce的排序阶段能够启动前完成,直到有5%的Map任务已经完成时,为Roduce任务的请求才会发出。在Map任务和Reduce任务运行时,子进程和自己的父Application Master通过接口进行通信,默认每隔3s,任务通过这个接口向自己的Application Master报告进度和状态(包括计数器), Application Master会形成一个作业的汇聚视图。原创 2023-12-21 16:37:12 · 145 阅读 · 0 评论 -
Hadoop分布式计算框架(MapReduce)—— MapReduce的编程模型
从MapReduce自身的命名特点可以看出,MapReduce由Map和Reduce两个部分组成。用户只需实现Mapper和Reducer两个抽象类,编写map和reduce两个函数,即可完成简单的分布式程序的开发。这就是最简单的MapReduce编程模型。原创 2023-12-21 14:44:12 · 422 阅读 · 0 评论 -
Hadoop分布式计算框架(MapReduce)——初识MapReduce
MapReduce 是一个使用简单的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级别的数据集。MapReduce是一个并行程序的计算模型与方法MapReduce是一个并行程序运行的软件框架MapReduce是一个基于集群的高性能并行计算平台。原创 2023-12-21 14:30:23 · 172 阅读 · 0 评论 -
案例实践:YARN调度器的配置与使用
以Hadoop自带的WordCount为例,操作演示公平调度器的配置与使用。原创 2023-09-28 15:12:16 · 490 阅读 · 0 评论 -
YARN的调度器
理想情况下,YARN应用发出的资源请求应该立刻给予满足,然而在现实中,资源是有限的。在一个繁忙的集群上,一个应用经常需要等待才能得到所需要的资源。YARN调度器的工作就是根据既定策略为应用分配资源。原创 2023-09-28 15:06:00 · 347 阅读 · 0 评论 -
YARN架构设计与工作原理
Apache Hadoop另一种资源协调者(YARN)是一种新的Hadoop资源管理器,是一个通用的资源管理系统,可为上层应用提供统一的资源管理和作业调度服务,它的引入为集群在资源利用、资源的统一管理调度和数据共享等方面带来了巨大的好处。原创 2023-09-28 15:00:37 · 746 阅读 · 0 评论 -
Scala基础(一)——常用数据类型
在Scala中,使用val关键字定义一个常量,使用var关键字定义一个变量。1.常量 在程序运行过程中值不会发生变化的量为常量或值,常量通过val关键字定义,常量一旦定义就不可更改,即不能对常量进行重新计算或重新赋值。 定义一个常量的语法格式如下。 val关键字后以依次跟着的是常量名、冒号“:”、数据类型、赋值运算符“=”和初始值。 数组是Scala中常用的一种数据结构,数组是一种存储了相同类型元素的固定大小的顺序集合。Scala定义一个数组的语法格式如下。原创 2023-04-04 16:49:01 · 828 阅读 · 0 评论 -
Scala ------ 模式匹配和样例类(重点)
6.1.样例类多用于匹配模式,样例类的编写方式://样例类case class LogWeb(a:Int,b:String){}1、参数列表默认都是val修饰。除非你显示声明为var2、样例类在使用过程中,会自动创建对象。(用于匹配模式)3、样例类默认实现Seri序列化接口。6.2.模式匹配匹配模式就是更高级的Switch语句。用于匹配各个分支,匹配成功,就会执行分...原创 2018-11-22 21:37:47 · 244 阅读 · 0 评论 -
Scala基础
关于对象的知识扩充单例对象(重点)单例对象:全局只有一个对象实例。java中创建单例对象是通过设计一个单例模式的类,在通过该类获取单例对象。Scala中没有static关键字,通过object修饰类名后,直接就是一个单例对象,伴生对象(重点)A、伴生对象的写法定义:与类同一个源文件中,与类同名并且用object修饰的对象叫做伴生对象,B、伴生对象的作用a)、类和...原创 2018-11-22 21:25:35 · 134 阅读 · 0 评论 -
Scala高阶函数
概念:如果一个函数的传入参数为函数或者返回值是函数,则该函数即为高阶函数。3.7.1. 匿名函数的定义和案例1、匿名函数定义:(x: Int) => x + 1匿名函数说明(一般作为参数值传递): 3.7.2. 函数作为参数[1] 第一步:定义带函数类型参数的函数f2第二步:定义函数f3(一般定义匿名函数),作为f2的参数值第三步:调用f2,将...原创 2018-11-20 09:16:38 · 223 阅读 · 0 评论 -
Scala函数学习
1、 Scala函数. 定义函数(多种)1,函数的定义方式(左参数类型参数名,右参数名运算方法):val f2 = (a: Int, b: Int) => {a + b}2,函数的定义方式(左参数类型,右参数名运算方法):val f1:((Int,Int)=>Int)={(x,y)=>x+y}3,函数的定义方式:val f1 = new Func...原创 2018-11-19 21:56:25 · 220 阅读 · 0 评论 -
Scala ---- while循环、for循环、增强for循环、嵌套for循环
3.5. 循环A)、while (条件语句){代码块}B)、do{代码块}while(条件语句) C)、for循环语法结构:for (i <- 表达式/数组/集合)1、简单for循环 注意:to和until的区别,to包括边界数据,until不包括右边界数据2、增强for循环3、嵌套for循环案例1:案例2...原创 2018-11-19 21:53:04 · 2575 阅读 · 0 评论 -
Scala --- 块表达式
3.4. 块表达式A、在scala中,{}中可以包含一系列表达式,块中最后一个表达式的值就是块的值块语句,最后一句是赋值语句返回unit,代表没有值,()<=> unit。案例1:案例2:注意:a),块表达式的值是最后一个表达式的值b),最后一句是赋值语句返回unit,代表没有值,()<=> unit。...原创 2018-11-19 21:22:22 · 493 阅读 · 0 评论 -
scala -------- 条件表达式
a、简单if结构if(条件表达式1){方法体}b、if-else选择结构if(条件表达式1){方法体}else{方法体}c、嵌套if-else结构if(条件表达式1){if(条件表达式1){方法体}}d、多重if-else结构if(条件表达式1){方法体}else if(条件表达式2){方法体}注意:1,条件表达式有返回值,不使用return语句,默认最后一个表...原创 2018-11-19 21:03:07 · 327 阅读 · 0 评论 -
Scala语法讲解及练习
Scala基础语法1、 值和变量A)、声明变量:var修饰的字段,是变量,内容和引用都可变B)、声明常量:val修饰的字段,是常量,内容可变引用不可变val修饰的字段,相当于Java中final修饰的变量注意:在val和var均可的条件下,官方推荐使用val、var和var区别演示进入scala操作界面演示var修饰的变量特点:var修饰字段引用可变...原创 2018-11-19 20:50:20 · 431 阅读 · 0 评论 -
Scala环境安装,JDK安装、编写HelloScala程序
因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK Scala安装,编写HelloScala程序1、 系统环境安装第一步:下载Scala地址https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz然后解压Scala到指定目录(/bigdata)tar -zxvf scala-2.10....原创 2018-11-19 19:50:32 · 1917 阅读 · 0 评论 -
大数据学习 ------ Scala入门
1.1 为什么要学Scala语言[1] 1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。Martin OrderSke (scala发人)Epel瑞士科技大学 Javac是Matin编写的 让程序员高效简洁优雅开发软件 SCALA比 Ruby Gtoovy高效 Spark是又Scala编写2.速度快:Scala语言表达能...原创 2018-11-19 19:22:50 · 290 阅读 · 0 评论 -
Scala学习 ----- 其他知识扩充
单例java:单例模式,创建一个全局唯一的实例,本质staticscala单例对象:使用object修饰的对象,就是单例对象。解释:object修饰的对象,里面的方法和属性默认都是static修饰的。单例对象。伴生对象:经常使用object修饰的对象,作为类的伴生对象。与类同名/** * 普通类 */class Student {}/** * 伴生对象 *...原创 2018-11-22 11:52:40 · 131 阅读 · 0 评论 -
Scala学习 ----- 泛型(上界、下界、视图界定)(难点)
概念:约束数据的泛型[T] //约束数组中的元素val arry=new Array[Int](2)class CompareObject[T](per1:T,per2:T) {上界[A<:B]:A必须是B的子类,才能满足泛型的要求案例:比较两个对象的大小 package com.zzk4class Person(var name:String,v...原创 2018-11-22 10:55:15 · 571 阅读 · 0 评论 -
Scala ------- 文件读写
7.1 读取行(Source.fromFile getLines)//以行形式读文件val source: BufferedSource = Source.fromFile("D://shuju/a.txt")//获取文件中的行val strings: Iterator[String] = source.getLines()//迭代出数据strings.foreach((x)=&g...原创 2018-11-22 21:38:45 · 504 阅读 · 0 评论 -
Scala ------- 并发编程(1)
1.并发编程名词解释(重点)并行:多个处理器或者是多核的处理器同时处理多个不同的任务并发:一个处理器同时处理多个任务 同步:某段时间只有一个线程执行一个任务异步:某段时间多个线程执行一个任务 并发编程:是指编写多个任务,在一台处理器上“同时”处理。并发编程目的:目标是充分的利用处理器的每一个核,以达到最高的处理性能...原创 2018-11-22 21:40:31 · 207 阅读 · 0 评论 -
scala学习 --------java实现并发编程(理解)
2.1 java中实现线程方式(2种)使用继承Thread类或者实现Runable接口来编写线程,效率很低。没有办法实现对线程有效的管理,造成资源浪费。2.2 java并发编程Executors接口2.2.1. Java通过Executors接口提供四种线程池newFixedThreadPool (execute)创建一个定长的线程池。//固定长度线程池public...原创 2018-11-22 21:43:07 · 260 阅读 · 0 评论 -
spark调优的几种方法
spark.shuffle.file.buffer 默认值是32kmap side task的内存buffer大小,写数据到磁盘文件之前,会先保存在缓冲中,如果内存充足,可以适当加大,从而减少map side磁盘IO次数,提升性能spark.reducer.maxSizeInFlight 默认值是48mreduce task的buffer缓冲,代表了每个reduce task每次能够拉...原创 2019-02-23 17:38:06 · 1160 阅读 · 0 评论 -
spark任务的提交执行流程
极简版:1,Driver端向Master发送任务信息2,Master接收到任务信息后,把任务信息放到一个队列中3,Master找到比较空闲的Worker,并通知Worker来拿取任务信息4,Worker向Master拿取任务信息,同时启动Executor子进程5,Executor启动后,开始向Driver端反向注册6,Driver开始向向相应Executor发送任务(tas...原创 2019-02-23 17:35:11 · 574 阅读 · 0 评论 -
foreach和map的区别
map一个是Transformationforeach是actionmap()是将函数用于RDD中的每个元素,将返回值构成新的RDD。而foreach是我们的方法被传入了迭代器foreach(每个元素遍历执行一次函数)...原创 2019-02-23 17:34:15 · 689 阅读 · 0 评论 -
flatMap和map的区别
map()是将函数用于RDD中的每个元素,将返回值构成新的RDD。map的作用是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;而flatMap函数则是两个操作的集合——正是“先映射后扁平化”...原创 2019-02-23 17:33:35 · 1378 阅读 · 2 评论 -
什么是RDD以及RDD的五大基本属性
什么是RDDRDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。RDD的五大基本属性1)A li...原创 2019-02-23 17:29:34 · 3701 阅读 · 0 评论 -
stage,task和job的区别与划分方式
Application用户构建在 Spark 上的程序。由集群上的一个 driver 程序和多个 executor 组成。Worker node任何在集群中可以运行应用代码的节点。Executor一个为了在 worker 节点上的应用而启动的进程,它运行 task 并且将数据保持在内存中或者硬盘存储。每个应用有它自己的 Executor。Job:一个由多个任务组成的并行计算...原创 2019-02-23 17:28:23 · 4894 阅读 · 0 评论 -
spark的shuffle有几种方式
shuffle过程中分为shuffle write和shuffle read,而且会在不同的stage中进行的 在进行一个key对应的values的聚合时, 首先,上一个stage的每个map task就必须保证将自己处理的当前分区中的数据相同key写入一个分区文件中,可能会多个不同的分区文件,接着下一个stage的reduce task就必须从上一个stage的所有task所在的节点上,将各个t...原创 2019-02-23 17:24:45 · 2746 阅读 · 0 评论 -
线程安全问题解决方式
加载规则库信息的线程安全问题定义10分钟更新一次规则库,尽管有多个线程,只能是10分钟一个线程访问一次规则库实现方式: 获取当前的时间戳,然后解析出分钟数,判断分钟数是否能被10整除,如果能就加载一次 Boolean tag = false; if(时间是否满足能被10整除) { if(tag) { 更新规则库...原创 2019-02-23 17:22:32 · 272 阅读 · 0 评论 -
hadoop阶段考试
HDFS读写流程 读数据流程1)客户端向namenode发起RPC调用,请求读取文件数据。2)namenode检查文件是否存在,如果存在则获取文件的元信息(blockid以及对应的datanode列表)。3)客户端收到元信息后选取一个网络距离最近的datanode,依次请求读取每个数据块。客户端首先要校检文件是否损坏,如果损坏,客户端会选取另外的datanode请求。4)d...原创 2018-11-27 22:01:03 · 969 阅读 · 0 评论 -
Akka简介
Akka基于Actor模型,提供了一个用于构建可扩展的(Scalable)、弹性的(Resilient)、快速响应的(Responsive)应用程序的平台。Actor是Akka中最核心的概念,Actor之间可以通过交换消息的方式进行通信,每个Actor都有自己的收件箱(Mailbox)。通过Actor能够简化线程管理,可以非常容易地开发出正确地并发程序和并行系统 3.1、Akka框架思...原创 2018-11-26 08:59:19 · 470 阅读 · 0 评论 -
Scala学习 -------- Actor实战
第一个例子(while-receive不断地接收消息)package com.zzk1import scala.actors.{Actor, Future}//Atl+Enter导包//Ctrl+i 实现抽象方法class ActorDemo extends Actor{ //接受消息的方法 override def act(): Unit = { ...原创 2018-11-26 08:57:51 · 315 阅读 · 0 评论 -
Scala并发编程Demo(扩展Actor)
package com.zzk1import scala.actors.Actor//Atl+Enter导包//Ctrl+i 实现抽象方法class ActorDemo extends Actor{ //接受消息的方法 override def act(): Unit = { //处理方式,匹配模式。匹配消息,消息匹配成功,执行该分支的代码 receive{...原创 2018-11-26 08:55:04 · 311 阅读 · 0 评论 -
Scala学习 --------- 隐式转换(难点)
隐式转换:如果你希望对某个类进行扩展,就可使用隐式转换语法,进行扩展。隐式转换案例:案例1:implicit class MyRichInt(x:Int){ //对Int进行扩展的一个方法 def add(a:Int,b:Int)={ a+b+x }}def main(args: Array[String]): Unit = { //调用自己扩展的方法 ...原创 2018-11-22 08:59:35 · 306 阅读 · 2 评论 -
Scala学习 --------- 抽象类型、特质
抽象类定义概念:如果你在类中定义了抽象字段或抽象方法,那就一定是抽象类abstract class Animal { //抽象字段 var name:String //抽象方法 def eat()}注意:1、抽象类中既可以又抽象成员又可以又普通成员2、子类必须实现特质的抽象成员特质定义trait Person {}理解:1、类似接口...原创 2018-11-22 08:57:32 · 206 阅读 · 0 评论 -
Scala ------- 封装继承多态(重点)
a、封装思想在Scala面向对象编程同样适用。b、继承:extends案例1:scala子类继承父类package com.qf2//父类class Pig extends Animal {}//子类object Test{ def main(args: Array[String]): Unit = { var p=new Pig p.name="佩奇"...原创 2018-11-22 08:53:15 · 607 阅读 · 0 评论 -
Sqoop ------- 将mysql的数据导入到hive中
将数据导入到hive中,但是实际上来说hive中的数据也是在hdfs上进行保存的。在进行导入hive的本质其实就是先把数据导入到hdfs 在从hdfs把数据迁移到hive表所在的hdfs路径范例:从mysql数据库中导入数据到hive中sqoop import \--connect jdbc:mysql://mini3:3306/hive \--username root \--p...原创 2018-11-14 09:37:14 · 661 阅读 · 0 评论