自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 项目整理

1.项目的整体简介从需求上面讲,主要包含两方面:​ (1)流量域分析​ (2)业务域分析从数据分析上面讲包含:​ 运营报表分析数据的来源分为两部分:​ (1)用户的日志行为(埋点可以植入业务系统的后端程序中(比如:Java,php),也可以植入业务系统的前端程序中(原生APP,微信小程序中,页面js))​ (2)业务数据库技术选型:​ (1)数据采集:flume,sqoop​ (2)存储平台:hdfs

2020-08-17 11:49:52 371

原创 将kafaka跟sparkstreaming进行整合简单的计算任务

object KafkaWordCount {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName(this.getClass.getSimpleName).setMaster(“local[*]”)val ssc = new StreamingContext(conf,Seconds(5))ssc.sparkContext.setLogLevel(“WARN”)//kafka相关的参数val k

2020-07-25 09:49:48 204

原创 原理加强Spark中的一些重要的概念

1 Application使用SparkSubmit提交的个计算应用,一个Application中可以触发多次Action,触发一次Action形成一个DAG,一个DAG对应一个Job,一个Application中可以有一到多个Jobs2 jobDriver向Executor提交的作业,触发一次Acition形成一个完整的DAG,一个DAG对应一个Job,一个Job中有多个Stage,一个Stage中有多个Task由一个或多个调度阶段stage所组成的一次计算作业;包含多个Task组成的并行计算,往

2020-07-14 20:54:42 206

原创 Spark的特殊算子

1 cache persis将数据缓存到内存,第一次触发Action,才会将数据放入内存,以后在触发Action,可以复用前面内存中缓存的数据,可以提升技术效率cache和persist的使用场景:一个application多次触发Action,为了复用前面RDD的数据,避免反复读取HDFS(数据源)中的数据和重复计算,可以将数据缓存到内存或磁盘【executor所在的磁盘】,第一次触发action才放入到内存或磁盘,以后会缓存的RDD进行操作可以复用缓存的数据。一个RDD多次触发Action缓存才有

2020-07-14 20:52:26 262

原创 Action行动算子 及相应的举例

7.Action行动算子转换算子 起始就是记录了数据的一个操作流程 RDD1->RDD2->RDD3->RDD4 , 流式运算现象RDD1 到 RDD4 之间维护血缘关系(操作行为)RDD的转换算子是lazy加载 , 不执行行动算子 , RDD根本没有计算数据只有执行行动算子才会触发RDD去读取数据 (分区:task) 分布式进行运算 JOBRDD 是spark抽象出来的运算逻辑,RDD中是不存储数据的,只记录数据的操作和RDD之间的血缘关系,只有执行到行动算子的时

2020-07-14 20:51:21 545

原创 不产生shuffle的转换算子及相应的举例

6.1.1.map做映射,处理的单位是一条数据val sc: SparkContext = SparkUtil.getSparkContext()//创建RDDval rdd: RDD[Int] = sc.parallelize(1 to 10 , 3)//对RDD中的每个元素进行操作 返回一个新的RDDval res: RDD[Int] = rdd.map(e=>e*10)// 将结果RDD收集到本地 成本地数组val arr: Array[Int] = res.collect(

2020-07-14 20:49:40 2523

原创 产生shuffle的转换算子

6.2.产生shuffle的transformation的算子Transformation算子只要产生shuffle就会写入磁盘,而且会触动行动算子,分布聚合都是在shuffle之前,然后开始写入磁盘,全局聚合,是shuffle之后,是从本地磁盘中拉去出来,比如reduceByKey6.2.1 sortBy 和sortByKey 排序使用的RangePartition,在构建这个分区器是要采样,触发一次Action//sortby 参数一排序规则 参数二 默认升序 false 降序sc.p

2020-07-14 20:47:42 2817

原创 三种创建RDD的方法

读取HDFS中的文件创建RDDprivate def makeRDDFromHDFS = {val conf: SparkConf = new SparkConf().setAppName(this.getClass.getSimpleName).setMaster(“local[*]”)val sc = new SparkContext(conf)//读取HDFS文件val rdd: RDD[String] = sc.textFile(“hdfs://doit01:9000/word.txt”)

2020-07-14 20:43:24 1585

原创 RDD算子怎么区分转换算子和行动算子

textFile 既不是transformation 也不是 action 它是为生成RDD前做准备算子: 指的就是RDD上的方法。spark中的算子分为2类:(1)转换算子: transformation: 由RRD 调用方法 返回一个新的RDD (一直存在drive中因为没生成task)​ 特点:​ 生成新的rdd​ lazy执行(不会立刻读取数据记录RDD之间的处理过程)(2)行动算子: action:触发读取数据 , 执行运算的函数 不会返回新的RDD​ 当触发

2020-07-14 20:34:06 1252

原创 Spark和MapReduce的本质区别

1.MR只能做离线计算,如果实现复杂计算逻辑,一个MR搞不定,就需要将多个MR按照先后顺序连成一串,一个MR计算完成后会将计算结果写入到HDFS中,下一个MR将上一个MR的输出作为输入,这样就要频繁读写HDFS,网络IO和磁盘IO会成为性能瓶颈。从而导致效率低下。2.既可以做离线计算,有可以做实时计算,提供了抽象的数据集(RDD、Dataset、DataFrame、DStream)有高度封装的API,算子丰富,并且使用了更先进的DAG有向无环图调度思想,可以对执行计划优化后在执行,并且可以数据可以cac

2020-07-14 20:30:38 297

原创 Spark原理框架说明

1)先启动master进程,然后在其他机器启动worker进程,然后worker和master会通过rpc进行通信2)在window中会写一个程序,然后打包成jar包3).然后在linux执行 spark-submit --master spark://linux01:7077 --class类名 jar包 这个命令,执行者个命令就找到了集群(standlone模式的spark集群),然后向master进行资源申请4)master会跟worker通信让worker启动executor(executor

2020-07-14 20:28:02 245

原创 kafka中topic和副本的关系图简介

Borker必须唯一(就相当于机器的ID)创建一个topic有三个分区,三个副本, leader用三角形标注,0号分区在第一台机器上是leaser其他机器是副本,同理其他分区一样,有一个leader其他机器上存有他的副本,(有9个分区),zookeeper在选举的时候会将活跃分区分散在多个broker里面,这样会把读写的压力分摊到多个机器上,因为以后负责读写的是活跃分区生产者可以把数据写道固定的分区,也可以把数据写道多个活跃分区,并且多个生产者可以向同一个活跃分区中写数据(生产者可以固

2020-07-04 19:14:34 1156

原创 kafka原理图简介

1)Borker启动之后会向zookeeper注册,zookeeper保存着kafka的元数据信息,并且zookeeper完成对kafka的选举(选举哪个分区时leader分区,哪个分区是follwer分区)2)生产者主动会把数据写入到kafka中producer不需要连接zookeeper只需知道kafka的borker的地址就行了,3)消费者consumer会连接zookeeper,会向zookeeper注册,因为消费者需要知道kafka中有多少broker,broker下面有多少分区,哪个分区在哪

2020-07-04 19:12:35 405

原创 kafka消息中间件的原理图简介

为什么用到消息中简件?当数据量很大时,暂时存储当前数据的,可以销峰消息的生产者(不是一个)主动把数据写道中间件中,消费者(不是一个)拉取中简件的数据中间件的特点:1)高可用(HA)​ 其中一个节点挂掉,数据不会丢失,2)存在多个副本3)高并发​ 有很多的生产者和消费者,同时读写4)高吞吐5)记录偏移量​ 某个消费者拉取数据的时候,突然出现问题了,kafka可以记录到他出现问题的地方,重启之后可以接着上一次数据进行拉取6)消费者组7)分布式8)可扩展​以

2020-07-04 19:09:07 226

原创 scala多态机器的RPC通信机制

Worker跟master进行通信经过网络通信1.先启动master2.Master内部有个线程检测超时的worker,即使没有worker加入进来也有检测的线程3.启动worker(不仅启动一个还可以启动多个)4.Worker跟master建立连接5.Worker向master发送注册信息(注册信息包括worker中有多少内存,cpu核,worker在哪台机器上,worker的ID)6.master接收到worker的信息后,并把信息封装起来,封装到map集合中,然后把注册成功的消息返回给wo

2020-07-02 21:27:18 158

原创 Hive工作原理

元数据信息存储在MSQL中HDFS中存储的是数据Hive只装在一台机器上,hive只是一个工具一个客户端,而且他的数据时存储在HDFS中的,只要Hive能读取HDFS的数据,能和msql进行交互底层就能转换成MR程序,MR程序交给yarn之后就进行分布式运行了Hive来处理HDFS中存储的结构化的静态化数据,这个数据可以用MapReduce程序处理HDFS中的结构化静态数据,处理完成之后,打成jar包运行在yarn平台上,MR处理完的数据会写到HDFS上,MR程序处理数据比较复杂,开发成本高,周期长

2020-07-01 23:13:07 325

原创 HBASE读数据流程

1.客户端进行读数据的时候会请求ZK集群,ZK会返回客户端元数据信息的位置,2.根据元数据位置信息,请求相应的regionserver,然后把元数据表下载到客户端3.返回到元数据信息表进行相应的解析缓存,确定所查信息的region4.开始请求regionserver2,获取数据,会先从region中的store中的内存(memestore)中找数据,会把找到的数据写道region中的cacheBlock缓存块中,然后返回数据给客户端(找数据先从region中的内存中找,如果有会一边返回,一边写道reg

2020-07-01 23:04:38 352 1

原创 HBASE写数据流程

1.当客户端发送put请求,先请求ZK集群,ZK集群会先校验master节点存在否,存在则可以写数据,master不存在则不能写数据,会报错,ZK集群中会有一个节点,会告诉你插入的元数据在哪个region上,2.ZK集群会返回给客户端meta的位置在哪个region上,3.请求region获取元数据表4.将meta下载到本地缓存,然后开始进行解析meta表,解析后能分析出key该存到哪台机器上,哪个region上,5.开始请求regionserver开始写数据,会找到对应的region,然后找到对应

2020-07-01 23:02:47 334

原创 HBASE组件说明

1.客户端先请求zk集群,然后创建连接对象Connection2.Hmaster向ZK注册,监听,监控子节点(region)的变化3.regionserver(管理region的节点),也向ZK注册4.创建表的时候,找zookeeper,然后告诉Hmaster,这就相当于间接的找master,建表的时候必须找master,并且给region划分任务5.当master宕机后,查询数据仍然能够查询,说明查询数据的时候不经过maser6.(1)查询数据的时候也找ZK,ZK中有个节点(/hbase/met

2020-07-01 23:00:47 179

原创 HBASE原理图

HBASE中使用到zookeeper这个集群,来处理单节点故障问题,有两个主节点master,去zookeeper中进行注册,zookeeper中有选举机制,只要启动master就选举其中的一个master为其中的一个leader(起两个master就有一主一备 高可用(HA)), 从节点给启动之后也会向zookeeper注册,顺带着也会向master汇报注册,master也会管理从节点(从节点叫做region server),Region存储的是表的范围数据,把region 分给下面从节点, 从节点把

2020-07-01 22:56:55 154

原创 zookeeper上下动态感知

1. datanode上线找ZK注册(注册本质就是在zk找一个客户端,在zk集群中创建一个临时有序的节点),上线就是打开客户端去注册节点namenode去ZK集群注册并监听datanode,并去ZK监控datanode节点,然后打开zk客户端,namenode中有一个getChildren的方法,去注册一个监听器当去dns中添加了一个子节点,namenode又监听了一个节点,并且一直在注册,在getChildren中重新拿到了一个列表当其中的一个节点宕机了,又触发了namenode节点,在

2020-06-16 08:23:13 270

原创 MR程序在yarn上的运行流程说明.

1. 客户端往resourcemanager提交了job,resourcemanager中有一个ApplicationMaster管理所有的job,然后ApplicationMaster会创建一个jobID和临时目录,返回一个job ID和工作临时目录给客户端初始化job,然后在hdfs中创建工作目录,接收jar包 初始化配置 根据路径 数据计算任务切片,返回给客户端ok然后客户端向resourcemanager申请默认容器,来创建MRApplicationMaster,执行程序,

2020-06-14 18:00:32 488

原创 MR处理数据内部流程图文字说明

1. 客户端有一个文件,读取文件(textInputFormat),生成新的的k v,开始一行一行的读取数据,任务被读取之后,开始计算任务切片(就是Maptask个数,maptask的个数是根据文件的个数和文件的大小来决定的),然后kv(k代表 行偏移量,v代表行内容)交给maptask(),之后kv不断地往maptask输入,kv交给map()方法,一个kv执行一次map方法,然后可以子啊map方法中可以对文件进行切割了,Map切割完成后,context.write写出去,写到缓存区(M

2020-06-14 16:20:10 849 1

原创 元数据管理机制

当-format格式化的时候回创建一个name文件夹当启动start namenode时会启动java进程,就会创建一个FsImage对象(这个对象就是内存管理对象)当追加数据的是一边往内存中写,当FsImage到达一定大小开始序列化写道磁盘中,另一边往日志中写,日志时滚动生成的,当一个日志文件写道一定大小开始往下个日志文件中写,日志编号根fsImage序列号对应当到达一定时间后secondary namenode 会下载 namenode的日志文件和以前序列化好的FsImage对...

2020-06-14 13:59:20 345

原创 文件下载原理

客户端请求NM下载数据返还给客户存储的端元数据信息(这些元数据信息包括数据存储在那台设备上,有多大,有几个副本),客户端开始解析数据客户端开始请求Linux01下载blk_000数据块然后分别下载数据块二 数据块三块二 数据块三​...

2020-06-14 13:07:59 1008

原创 文件上传原理

客户端上传数据,先请求namenode,请求上传a.txt 300M 3个默认128M一个切块Namenode接收客户端的请求 ,开始校验集群中的存储状态检验完成集群状态ok,开始进行元数据的规划(计算返回给客户端一个检验ok+meta(元数据)在数据块上传之前,先ping一下建立对应的连接通道Ping通了之后,响应给客户ok信息,通过本地的Io流读取文件,读的时候就变成了字节,通过网络分布输出流开始把把字节封装成一个datapackage,传送出去开始上传数据,然...

2020-06-14 12:52:45 282

原创 HDFS数据存储细节

1/clip_image002.jpg)]1.namenode先接受汇报,记录元数据,接收客户端的上传请求2.datanode从节点启动后会向主节点namenode节点汇报,汇报数据存储的内容,汇报自己节点的存储容量,3.namenode检查DN的容量,计算切片的个数4.开始往datanode写元数据ode写元数据...

2020-06-14 10:43:56 201

原创 DD和NN之间的通信详解

(file:///C:/Users/bing/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg)]namenode主节点先启动,然后datanode启动,启动后向主节点namenode主节点注册,主节点校验,检验ok就返回集群(cluster)ID和BP-ID给datanode,然后datanode拿着集群ID(cluster)向主节点汇报自己的节点数据信息然后datanode会3s会向namenode发送一个心跳机制(发送心跳

2020-06-14 10:38:28 1835

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除