自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spark 的运行模式

1.client向resourceManager 申请资源,返回一个applicationID,client拿着用户ID和用户名以及jar包上传到hdfs里面,上传完成之后再和resourceManager进行通信,是跟appicationManager2.然后application Manage会跟其中一个nodeManager进行通信,然后让nodeManager下载jar包,(jar包是spark提供的,里面有sparkcontext,构建DAG,创建RDD,切分stage,产生rdd),把...

2020-09-02 23:37:08 222

原创 关于kafka的一些问题

1.kafka有哪些特点1.1高吞吐量,低延迟,kafka可以每秒处理几十万条数据,它的延迟最低只有几毫秒,每个topic可以分为多个partition,consumer group 对partition 的consumer进行操作.1.2可扩展性:横向扩大缓冲,发送端和接收端之间加消息队列,也就是kafka支持,热扩展1.3持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失1.4容错性:允许集群中节点运行失败(若集群中有N个节点,就可以允许n-1个节点运行失败)1.5

2020-09-02 22:51:42 149

原创 工作日志1---关于数仓的数据说明

数仓整体说明:1.1使用到的技术使用flume进行数据采集,hdfs为存储平台,hive进行操作,sparksql为技术引擎,yarn作为资源调度平台,rookeeper为任务调度平台,altas管理元数据,1.2分层设计ADS为服务层DWD为数仓汇总层,ODS详细设计:ODS操作数据DIM存储维表ODS:存放flume采集过的原始数据,主要是对进行ods层数据做ETL处理后的数据扁平化处理,以parquet文件格式存储,一般大概在3-6个月数据规模.

2020-09-02 21:28:21 260

原创 吃透数据倾斜

原理以及现象先来解释一下,出现什么现象的时候我们认定他为数据倾斜,以及他数据倾斜发生的原理是什么?数据倾斜产生的现象:比如一个spark任务中,绝多数task任务运行速度很快,但是就是有那么几个task任务运行极其缓慢,慢慢的可能就接着报内存溢出的问题了,那么这个时候我们就可以认定他是数据倾斜了。数据倾斜产生的原因:接下来说一下发生数据倾斜的底层理论,其实可以非常肯定的说,数据倾斜就是发生在shuffle类的算子中,在进行shuffle的时候,必须将各个节点的相同的key拉到某个节点上的

2020-09-01 23:28:55 160

原创 spark内存管理

一.spark内存管理只堆内存/堆外内存前世今生1.堆内存和对外内存作为jvm进程,executor的内存管理建立在jvm之上,spark对jvm的堆内空间进行了更为详细的分配,以充分利用内存,1.1堆内存的大小堆内存的大小,由spark应用程序启动的xexcuto-memory或spark-executor-memory参数配置,Executor内运行的并发任务共享JVM堆内内存,这些任务在缓存RDD和广播(Broadcast)数据时占用的内存被规划为存储(Storage)内存,而这些任务

2020-09-01 21:56:17 228

原创 数据埋点

数据埋点是什么?设置埋点的意义是什么?所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。埋点的技术实质,是先监听软件应用运行过程中的事件,当需要关注的事件发生时进行判断和捕获,然后获取必要的上下文信息,最后将信息整理后发送至服务器端。所监听的事件,通常由操作系统、浏览器、APP框架等平台提供,也可以在基础事件之上进行触发条件的自定义(如点击某一个特定按钮)。一般情况下,埋点可以通过监测分析工具提供的SDK来...

2020-08-30 14:16:06 337

原创 快捷键大全

自动代码常用的有fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码 。例如要输入for(User user : users)只需输入user.for+Tab ;再比如,要输入Date birthday = user.getBirthday()只需输入user.getBirthday().var+Tab即可。代码标签输入完成后,按Tab,生成代码。Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如ge

2020-08-25 15:10:07 193

原创 算子的含义

Transform: 1. map:rdd中的每项数据进行map里的操作后,会形成一个个新的元素的新rdd flatMap:在map的基础上进行扁平化,形成一个新的rdd2. distinct:转换操作,去重 filter:对rdd中的元素进行过滤 filterByRange:范围过滤,作用于键值对RDD,对RDD中元素进行过滤,返回键在指定范围内的元素3. union:并集操作,不去重 intersection:交集操作,去重 subtract:类似intersection,返回在rdd中出...

2020-08-18 20:35:06 500

原创 广播变量

有一个大的数据集和一个小的数据集,把每一个小的数据集在每一个executor里面进行缓存,大的小的数据集放在hdfs里面,如果传统的方法,那么就是调用join ,join.底层就是cogroup方法,1.先把小的数据处理一下,但是每个Task只是读取部分数据,然后把每个Task的部分数据缓存起来,2.读取大的数据,然后关联一些规则数据,也就是缓存起来的那部分小数据,但也有可能关联不上,当前的应用需要在executor里面进行缓存,3.在进行广播应用的时候,只需要把数据广播到当前任务的execu.

2020-08-15 20:53:49 1209

原创 自定义分区编号

val isLocal = args(0).toBoolean val conf = new SparkConf().setAppName(this.getClass.getCanonicalName) if (isLocal) { conf.setMaster("local[*]") } val sc = new SparkContext(conf) //指定以后从哪里读取数据创建RDD val lines = sc.textFile(arg..

2020-08-13 22:52:03 196

原创 求连续登陆的用户日期

guid01,2018-02-28guid01,2018-03-01guid01,2018-03-02guid01,2018-03-04guid01,2018-03-05guid01,2018-03-06guid01,2018-03-07guid02,2018-03-01guid02,2018-03-02guid02,2018-03-03guid02,2018-03-06 //第一个参数就传true或false因为以后有可能在本地执行,有可能提交到集群里面 val isl.

2020-08-11 15:24:27 215

原创 join算子

join:val rdd1 =sc.parallelize(List(("spark",1),("hadoop",1),("spark",2),("hadoop",2),("hive",2)))sc.parallelize(List(("spark",3),("hive",3),("spark",4),("hadoop",2)))------->d.RDD[(String, (Int, Int))这个有点类似val rdd0 = sc.flatMapValues(List("a..

2020-08-09 23:36:37 237

原创 cogroup算子

cogroup:协分组val rdd1 = sc.parallelize(List(("tom",1),("tom",2),("jerry",3),("kitty",2)))--->(String, Int)val rdd2 = sc.parallelize(List(("jerry",2),("tom",1),("jerry",3),("kitty",2)))---->[(String, Int)]val rdd3 = rdd1.cogroup(rdd2)----&g.

2020-08-09 21:52:09 479

原创 算子三

aggregateByKey,foldByKey,redceByKey,combineByKey底层调用的都是combineByKeyWithClassTag,combineByKeyWithClassTag要传入三个函数,第一个函数是key的第一个value拿出来进行运算,是吧每一个分区内,相同key的value进行运算,第三个是进行全局运算的时候,将灭一个分区得到的,key相同的value进行运算,注意combineByKey,与combineByKeyWithClassTag,都必须要指定第二个.

2020-08-09 16:18:36 119

原创 算子第二部分

groupByKey:底层代码:先创建一个CompactBuffer,这时是一个特殊的集合,可以随时添加,也就是先把key相同的数据放到CompactBuffer集合里面,如果后面有相同的key,那就先添加上去,底层也会先局部分组聚合,然后再shuffle到下游的时候,再进行一次全局分组,这次是相同的key的CompactBuffer相加def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppNam.

2020-08-08 23:34:37 146

原创 算子

MapPartitionsRDD 算子的程序与应用程序底层执行流程,1.连接Spark配置文件,设置项目名称,和创建本地地址,2.创建连接,创建RDD,分三个去,把9个数字均匀的分配到三个去里面,调用RDD,对RDD操作,本质上是对RDD里面的每一个分 区进行操作,每一个分区有对应一个Task,Task里面的逻辑也就是分区对应的计算逻辑,3.调用map,从下面的程序中可以得知,每一条数据都会调用一次map函数,这样就降低数据处理的效率,4.分析一下map底层的实现逻辑,在调用...

2020-08-07 22:21:49 273

原创 RDD执行的流程

RDD执行流程 textFile() 是创建最原始的RDD,不属于transformation 在真正计算的时候有可能有多个阶段,有多少个阶段呢,取决于所处理的数据也没有shuffle,如果有shuffle,就被划分成两个阶段,因为需要按照一定的规律把数据分到同一个分区里面,如果有shuffle,就要切分stage,程序先执行先前的stage,然后再执行后面的stage,一个stage会有多个task,同一个stage,里面多个taask的计算逻辑是一样的,只不过各个task的计算数据不一...

2020-08-06 19:51:23 1410

原创 pycharm的基本操作

Pycharm新手教程,只需要看这篇就够了pycharm是一款高效的python IDE工具,它非常强大,且可以跨平台,是新手首选工具!下面我给第一次使用这款软件的朋友做一个简单的使用教程,希望能给你带来帮助!目前pycharm一共有两个版本,Professional(专业版本)」和「社区版」,专业版功能最强大,主要是为 Python 和 web 开发者而准备,是需要付费的。社区版是专业版的阉割版,比较轻量级,主要是为 Python 和数据专家而准备的。一般我们做开发,下载专业版本比较合适。

2020-08-05 23:32:54 1385

原创 Spark内部流程

一.standalone client模式1.启动master,和worker ,然后worker向master建立连接,然后把计算机资源汇报给master,然后master保存这些注册信息,然后向worker返回注册成功的信息 2.然后worker向master发送心跳,目的是向master报活, 3.这时候启动客户端,客户端会提交任务,在提交任务的时候,会指定自身需要多少资源,比如说需要多少内存核,通过底层rcp,与master建立起通信, 4.这时候master知道要有任务要提交了,这时.

2020-08-04 23:34:37 195

原创 spark API的操作

object WordCount { def main(args: Array[String]): Unit = { //创建一个SparkContext,用来闯将最原始的RDD //创建一个SparkConf().setAppName(),加载SparkConf文件,并为其取名字"WordCount" val conf = new SparkConf().setAppName("WordCount") //创建SparkContext,他可以跟集群建立连接申请资源,里.

2020-08-04 23:25:52 276

原创 隐式转换代码

测试;类初学者一定要知道函数与好方法的书写格式函数,变量类型val var 变量名 =(一个或多个参数列表) => { 函数体}方法: 关键字 方法名 (参数列表) = {方法体}import java.io.File//这个导入方法可以放在组外面,这样下面所有涉及到的方法都可以用import Demo05.MyContent01._object FileDemo { def main(args: Array[String]): Unit = { ...

2020-08-01 23:49:06 146

原创 Scala总和实战

整体思路1.启动master ,worker(node)2.worker 向master传递注册信息,master放worker返回注册信息3.worker,向master传递心跳机制,master定时检查心跳机制,并移除,超出时间未能传递心跳机制的机器一.本地传本地信息代码package Demo1import akka.actor.{Actor, ActorSystem, Props}import com.typesafe.config.ConfigFactoryclas

2020-07-30 23:01:16 129

原创 函数式变成思想

package cn._51doit.com03;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MyListTest { public static void main(String[] args) { //函数式变成带来最大的好处就是,逻辑不必根数据绑定在一起 //数据在集合里面了,但是有关逻辑确是单独一个函数 .

2020-07-29 23:09:50 137

原创 hive的安装过程

0 正常启动HDFS和YARN1.安装mysql2 查看mysql是否运行netstat -nltp | grep 3306 tcp 0 0 0.0.0.0:3306 3 service mysqld start 启动mysql服务 4 可以配置mysql的开机自启服务 chkconfig mysqld on就用以前安装的,但是要注意,开启远程连接权限1) [root@doit01 ~]# service mysqld start...

2020-07-20 11:16:54 134

原创 Hbase详细笔记

负载均衡 快照 拆分 数据存储 合并 刷写 读数据流程 写数据流程 热点问题 row设计 批量导入 Mr整合Hbase 协处理器 1.负载均衡1.1有Master的LoadBalance线程周期性的在各个RegionServer间移动region维护负载均衡 1.2当一个机器经过大量的插入或者删除数据以后,region经过合并,或者分裂那么机器上的region会相差很大 1.3当某个region数据量过大的时候,HbaseBalance作为负载均衡的开关,会自...

2020-07-19 23:08:02 285

原创 HDFS的客户端shell和java命令

hdfshdfs dfs -lshdfs dfs -du -hhdfs dfs -du -h5 hdfs dfs -rm -r6 hdfs dfs -puthdfs dfs -get HDFS的路径 本java客户端maven需要的配置文件 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId&gt...

2020-07-18 21:31:07 144

原创 zookeeper客户端

zk客户端/** * @Auther: 多易教育-行哥 * @Date: 2020/6/9 * @Description: java连接zk * 获取指定节点下的所有的子节点 */public class Demo1 { public static void main(String[] args) throws Exception { String connectionString = "linux01:2181,linux02:2181,linux03:21

2020-07-18 20:20:52 152

原创 zookeeper的shell客户端

0 数据存储特点znode类似于Linux的目录结构(TREE) , 维护了节点的层级关系 ,真正的数据存储是以key:value的形式存储的!在所有的ZK节点上存储的数据是同步一致的!zookeeper中对数据的存储采用key-value的形式然后,它的key有特别的格式——路径的形式!(/service/dn1 doit01/service/dn2doit02)之所以采取这种形式,是因为zookeeper中的数据节点(znode)之间可以存在父子关系;...

2020-07-18 20:12:35 218

原创 zookeeper的核心概念和安装

作用分布式系统中的主节点选举!比如hbase中的老大的产生 Hmaster(HA)分布式系统中的主从节点感知!分布式系统中的配置文件同步!系统服务器的动态上下线感知!!!分布式系统中的分布式锁的实现!分布式中的同一个对象分布式系统中的名称服务!分布式系统中的负载均衡! ...Zookeeper的功能其实很简单:就是提供协调服务!协调服务具体来说有三方面:帮使用者存储一些状态信息帮使用者读取一些信息帮使用者监视一些信息的变化,并将变化作为事件通知给使用者角色 » 领导者(l..

2020-07-18 20:01:26 136

原创 hbase中shell客户端命令

1 本节目录基本命令DDL命令DML命令namespace命令高级命令hbase和HDFS类似也提供了shell端操作指令和java客户端API进入大hbase的客户端hbase shell例举出系统中所支持的所有的指令help查看某个命令的详细使用说明help "command"[root@linux01 ~]# hbase shellSLF4J: Class path contains multiple SLF4J bindings.SLF4J...

2020-07-18 19:41:39 489

原创 hbase的安装

章节目录Hbase安装环境准备hbase安装详细步骤Hasee启停1 Hbase安装环境准备准备集群,集群中配置JDK环境安装部署ZooKeeper集群并启动集群节点时间同步手动设置 :date -s "2020-06-10 11:11:00"连接时间服务器 :ntpdate 0.asia.pool.ntp.org4.HDFS集群正常运行2 hbase安装详细步骤1上传解压[root@linux01...

2020-07-18 19:36:58 131

原创 Put批量输入数据

批量数据的导入import Utils.HbaseUtils;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Table;public class TableDataDemo { public static void main(String[] args) throws Exception { //在进行批量插入的前提是,这个表是存在的,所插入数据的rowk.

2020-07-18 19:28:52 808

原创 hbase中java客户端操作

获取客户端数据package doit01;import Utils.HbaseUtils;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CellUtil;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase

2020-07-17 23:17:10 278

原创 mr内部数据处理流程

内部流程1.处理数据的输入路径 计算任务切片(mt个数),根据任务切片的个数启动mapTask.2.MapTask 处理属于自己的任务数据(start(偏移量),length) TextInputFormat就是数据切分,分成若干个split,以便确定MapTask个数,以及对应的split,且里面有一个createRecorder方法,返回一个LineRecordReader 一行一行的读(如果行数比较多,就会产生大量的kv) ...

2020-07-13 23:14:21 645

原创 数据倾斜原因及其处理方式

前言本文是介绍的是开发spark极其核心的地方,可以说懂得解决spark数据倾斜是区分一个spark工程师是否足够专业的标准,在面试中以及实际开发中,几乎天天面临的都是这个问题。原理以及现象先来解释一下,出现什么现象的时候我们认定他为数据倾斜,以及他数据倾斜发生的原理是什么?比如一个spark任务中,绝多数task任务运行速度很快,但是就是有那么几个task任务运行极其缓慢,慢慢的可能就接着报内存溢出的问题了,那么这个时候我们就可以认定他是数据倾斜了。接下来说一下发生数据倾斜的底层理论,

2020-07-13 19:58:08 642

原创 HDFS不能随意更改,但如何实现更改呢

第一种比较笨的方法:从头开始读取数据,比如 1001,zss,28,M 28改成38,则可以根据底层追加的原理,每当读到该数据,就在没填一个序列号,第一次读到添1,第二次读到添加2 读到一次就修改成我们想要的数据,并序列号i++ ,并覆盖到前面的数据在最后追加到文件数据的末尾.序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。namenode的作用1.接收datanode的注册------>

2020-07-10 23:02:54 1828

原创 HDFS读写流程[上传下载流程和原理

1.客户端请求namenode上传数据信息(包括数据大小,存储位置)2.namenode对数据进行校验(包括数据的存储容量,元数据信息)3.namenode对处理的信息返回到客户端,4.客户端向namenode请求上传第一块数据5.客户端与三台机器建立连接6.namenode返回允许上传第一块数据块7.客户端对数据块进行读取操作,并且本地分布式输出流边进行读取,边输出到第一台机器上,并且以打包的形式8.第一台机器,边进行写的操作,边输出到第二台机器上,9.第二台机器边把数据写入到本地,边把数

2020-07-10 19:54:29 296

原创 linux安装步骤

1.文件–新建虚拟机–自定义2、硬盘兼容性–默认3、稍后安装操作系统(需要在虚拟机安装完成之后,删除不需要的硬件,所以稍后安装操作系统)注意这里要选择好自己的盘符下面文件夹,保存软件包4、选择客户端操作系统:客户机操作系统–Linux 版本--centos 64位(注意:版本一定要对应镜像文件版本,其中centos是32位,centos 64位则就是64位,windows系统应安装64位版本)5、命名虚拟机(简略表示出该虚拟机的类型、版本。例如:centos-7 )6、处理器

2020-07-02 20:52:43 888 1

空空如也

空空如也

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

TA关注的人

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