- 博客(82)
- 收藏
- 关注
原创 葵花宝典--即席查询presto和kylin
一、presto1、简介presto是一个开源的分布式SQL查询引擎,数据量支持GB到PB字节,只要处理秒级查询的场景。它和mysql和oracle是不同的,不能处理带有事务的数据。基于内存计算,减少了IO,计算更快,支持跨数据源的连接,比如和mysql;它的聚合运算时边读数据边计算,边清理内存,这种处理方式对内存占用不高;但是表连接会产生大量临时数据,处理速度较慢。2、安装0)官网地址https://prestodb.github.io/1)下载地址https://repo
2020-06-08 19:23:50
2695
2
原创 葵花宝典--可视化报表Superset
一、入门ApacheSuperset是一个开源的、现代的、轻量级BI分析工具,能够对接多种数据源、拥有丰富的图标展示形式、支持自定义仪表盘,且拥有友好的用户界面,十分易用。由于Superset能够对接常用的大数据分析工具,如Hive、Kylin、Druid等,且支持自定义仪表盘,故可作为数仓的可视化工具。二、安装Superset官网地址:http://superset.apache.org/2.1 安装Python环境Superset是由Python语言编写的Web应用,要求P.
2020-06-08 18:32:43
1933
原创 葵花宝典--Spark内核和优化
一、Spark内核1、内核概述Driver:将用户程序转换为job、在executor之间进行调度、跟踪executor的运行情况、通过UI展示运行情况Executor:运行spark任务并返回结果,通过自身BlockManager为RDD提供存储和,并且加快RDD的计算通用运行流程2、部署模式Standalone模式Driver:是一个进程,我们编写的Spark应用程序就运行在Driver上,由Driver进程执行 Master:是一个进程,主要负责资源的调度和分配,并进
2020-05-25 20:29:04
637
原创 葵花宝典--SparkStreaming
一、概述1、定义Spark Streaming用于处理流式数据。支持多种数据源,常用kafka,数据输入后可以使用spark的算子进行操作,运行的结果可以保存在很多地方。 处理数据为小批次处理,使用时间间隔来将数据分开,批处理的间隔影响了作业的提交效率和数据处理延迟,也影响了数据处理的吞吐量和性能。 使用了一个高级抽象-离散化流DStream,将每个时间段的数据封装为一个RDD,这些RDD的序列构成了DStream,因此称为DStream。它可以由数据源创建,也可以在其他的DStream通过高阶
2020-05-20 21:50:36
369
原创 葵花宝典--SparkSQL
一、概述1、定义用于处理结构化数据的spark模块,提供了结构化数据和执行计算的更多信息 运行时讲spark sql转换成RDD进行运算,比我们自己写的RDD效率要高,它进行了优化;并且提供了两个抽象类:DadaFrame和DataSet2、特点易整合:完美的把sql和spark进行了无缝连接 统一的数据访问:使用相同的方式连接不同的数据源 兼容HIVE:在现有的仓库运行sql和HiveSql 标准的数据库连接:JDBC、ODBC3、DataFrame一种以RDD为基础的分布式数
2020-05-18 17:43:39
240
原创 葵花宝典--sparkRDD(二)
一、RDD序列化在运行spark任务的时候,通常初始化工作是在Driver端完成,实际的运行逻辑RDD实在executor端执行,需要进行远程通信,要进行序列化。说明:driver端执行算子意外的代码,executor端执行算子相关代码在RDD操作中通常是内部匿名函数,这是会进行闭包检查,判断RDD中的元素和变量是否需要进行序列化,这过程我们称为闭包检查,思路如下:序列化方式:实现serializable接口,2.0以后支持java和kryo两种序列化方式 增加case,事对象变为
2020-05-13 20:45:35
316
原创 葵花宝典--sparkRDD(一)
一、Transformation(转换算子)1、value类型1)、map:映射,将RDD的数据进行转换,比如对数据乘2、把数据转换为元组2)、mapPartition:对分区内数据进行map,入参是可迭代的集合,对入参进行map操作3)、mapPartitionWithIndex:带分区号的map操作,入参是分区号和可迭代的集合map和mapPartition的区别:map每次处理一条数据 mapPartition是处理一个分区内的数据,只有当分区内的数据处理完毕,原始RDD数据
2020-05-11 18:22:53
1238
原创 葵花宝典--sparkRDD
一、RDD概述RDD是弹性分布式数据集,是spark中数据的抽象。在代码中是一个抽象类,他代表一个抽象类不可变、可分区、元素可并行计算的集合。弹性:存储(内存和磁盘相互切换)、容错(数据丢失可自动恢复)、计算(计算出错重试)、分片(可根据需求重新分片) 分布式:数据存储在hdfs上 数据集:RDD只保存计算逻辑,不保存数据 数据抽象:RDD是一个抽象类,需要具体实现 不可变:RDD封装了计算逻辑,是不可变的,想要改变只能生成新的RDD,在新的RDD封装计算逻辑 可分区、并行计算RDD特性
2020-05-10 12:02:04
1000
原创 葵花宝典--spark入门+WordCount入门
一、概述定义:spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎;采用scala编写。支持迭代式计算和图计算,计算比MR快的原因,是因为他的中间结果不落盘,只有发生shuffer的时候才会进行落盘内置模块sparkCore:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。 sparkSQL:是Spark用来
2020-05-09 21:57:05
302
原创 私房菜数据结构和算法--图
一、图的定义和分类定义:图是由一组顶点和一组能够将两个顶点相连的边组成。特殊的图:自己连自己的(自环);两个顶点多条线相连(平行边)图的分类:有向图(边不仅有连接作用,且有方向)、无向图(边仅仅做连接作用)二、无向图相关术语相邻顶点:一条边连接的两个顶点,且这条边依附于这个顶点 度:某个顶点的度就是依附于这个顶点的边的个数 子图:是一幅图的所有边的子集(包含这些边依附的顶点)组成的图 路径:由边顺序连接的一系列的顶点组成 环:一条至少含有一条边且终点和起点相同的路径
2020-05-08 23:32:39
242
原创 私房菜数据结构和算法-- 2-3查找树(平衡树) + B-树 + B+树
一、平衡树1、2-3查找树2-节点:含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。3-节点:含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。查找:将二叉查找树的查找算法一般化我们就能够直接得到...
2020-05-07 23:34:13
186
原创 私房菜数据结构和算法--二叉树+堆
一、树的定义树是由n个节点组成的一个具有层次关系的集合,它具有以下特点:每个节点都由0个或多个节点 没有父节点的节点称为根节点 每个非根节点都只有一个父节点 每个节点及其后代节点整体上可以看成是一棵树,称为当前节点的父节点的一颗子树二、树的相干术语节点的度:一个节点子节点的数量 叶节点:一个子节点数为0的节点,也称为终端节点 分支节点:子节点不为0的节点 节点的层次:...
2020-05-07 19:23:30
190
原创 私房菜数据结构和算法--线性表+符号表
一、顺序表(数组)顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素、使得线性表中再逻辑结构上响铃的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。时间复杂度:获取和修改时间复杂度:O(1) 插入和删除时间复杂度:O(n)稀疏数组:当二维数组中,绝大多数的值为...
2020-05-07 17:42:17
265
原创 私房菜数据结构和算法--排序
一、简单排序1、冒泡排序排序原理:比较相邻的元素,如果后一个元素比前一个大,则交换他们的位置,保证最大的数在最后时间复杂度:O(n^2) /* 对数组a中的元素进行排序 */ public static void sort(Comparable[] a) { for (int i = a.length - 1; i > 0; i--) {...
2020-05-07 16:00:02
186
原创 九阴真经--scala模式匹配+异常+隐式转换+泛型
一、模式匹配scala中模式匹配类似java中的switch。使用 op match { case _ => {代码块}}case _和java中的default类似,在scala中如果都不匹配的话,没有case _会抛出matchErr异常 case可以跟任何类型的数据,且没有break,默认执行case => 后的代码,直到下一个case,执行的代码可以用{}包裹模式守...
2020-05-05 14:58:54
230
原创 九阴真经--scala集合
一、简介scala的集合有三大类:序列Seq、集合set、映射map,所有的集合都继承iterable特质 所有的集合都提供了可变(scala.collection.mutable)和不可变两个类(scala.collection.immutable) 集合的可变和不可变是说的集合的长度(增加|删除),可变集合用函数,不可变集合用符号不可变集合继承图:可变集合继承图:se...
2020-05-04 23:19:00
289
原创 九阴真经--scala面向对象
scala的面向对象思想和Java的面向对象思想和概念是一致的。Scala中语法和Java不同,补充了更多的功能。一、scala包基本语法:package 包名作用:区分名字相同的类、类很多时便于管理、控制访问权限命名规则:只能包含数字、字母、下划线、小圆点.,但不能用数字开头,也不要使用关键字。包说明:scala有两种包的管理风格,一种方式和Java的包管理风格相同,每个...
2020-04-30 18:46:56
160
原创 九阴真经--scala函数式编程高级
一、高阶函数在scala中函数是一等公民,对于一个函数我们可以定义函数、调用函数。函数可以作为值传递:在函数后加 空格 + _,可以把函数整体赋值给某个变量 如果明确函数的返回值。可以不加 _ ,将函数的返回值赋值给某个变量函数可以作为参数传递:一般已匿名函数进行传递函数可以作为函数值返回:通常通过函数嵌套来实现def f1(name:String) : Unit = ...
2020-04-28 21:35:45
180
原创 九阴真经--scala流程控制+函数式编程
一、条件循环分支控制有三种:单分支、双分支、多分支 Scala中if else表达式其实是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容。如果返回类型不同时,取共同的祖先 Scala可以通过if实现三元运算符var age:Int = 20if (age < 18){ println("小孩儿")}else if (age >= 18 &&a...
2020-04-27 20:56:41
292
原创 九阴真经--scala入门+变量+数据类型+运算符
一、入门Spark由scala编写,为后续学习Spark打基础 scala基于java进行开发,把scala代码编译成class文件,运作在jvm上 scala是一种多范式、支持面向对象和函数式编程的语言Hello Word案例: object HelloScala{ def main(args:Array[String]):Unit = { println("He...
2020-04-26 17:25:46
311
原创 葵花宝典--sqoop
一、概述sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统; 导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等。工作机制 将导入或导出命令翻译成mapreduce程序来实现。 在翻译出的mapreduce中主要是对...
2020-04-25 22:28:22
191
原创 葵花宝典--Azkaban
一 概述1.1 为什么需要工作流调度系统1)一个完整的数据分析系统通常都是由大量任务单元组成: shell 脚本程序,java 程序,mapreduce 程序、hive 脚本等。2)各任务单元之间存在时间先后及前后依赖关系。3)为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。 例如,我们可能有这样一个需求,某个业务系统每天产生 20G 原始数据,我们每...
2020-04-25 22:08:30
1162
原创 葵花宝典--Hbase+Phoenix
一、概述Hbase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是多维map。Hbase逻辑结构:Hbase物理结构:nameSpace:类似与数据库,默认default和hbase两个,hbase表放hbase内置...
2020-04-25 16:03:20
910
1
原创 葵花宝典--kafka
一、kafka概述kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。producer:生产者,向kafka发送数据consumer:消费者,消费kafka内的数据consumer group:消费者组,消费者组内的消费者负责消费不同分区的数据,一个分区只能由一个消费者消费,一个消费者可以消费多个分区内的数据,消费者组之间互不影响broker:一...
2020-04-22 17:22:47
281
原创 葵花宝典--Flume
一、Flume概述flume是一款高可用、高可靠、分布式的海量日志收集、聚合的传输系统。Flume基于流式框架,灵活简单。 Agent:flume的进程,包括source、channel、sink Source:接收数据源,常用netcat、avro、taildir、exec channel:连接source和sink,中间缓冲,常用filechannel、memorychannel和k...
2020-04-22 13:02:43
396
原创 葵花宝典--zookeeper
一、概述为分布式应用提供服务协调的组件 zk一个leader多个follower,半数以上存活便可对外提供服务 数据全局一致、请求顺序执行、数据实时性保证整个集群数据的可靠性 提供统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等服务二、配置文件tickTime=2000:服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会...
2020-04-21 22:33:13
95
原创 葵花宝典--YARN
一、YARN的定义Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而Mapreduce等运算程序则相当于运行于操作系统之上的应用程序。Yarn包括ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。二、YRAN的工作机制客户端提交任务到集群,resouserman...
2020-04-21 22:00:20
10182
原创 葵花宝典--MapReduce
一、MapReduce概述1、MapReduce定义MapReduce是一个分布式计算框架,将用户编写的业务代码和自带默认组件组成一个完整的分布式运算程序,并运行在一个Hadoop集群上。2、优点易于编程:简单的实现和继承类就可以编写自己的业务代码,运行在集群中,就可实现分布式计算 扩展性:可以通过简单的增加机器来完成对集群的扩展 高容错:任务分别在不同的机器运行,单个任务的失...
2020-04-21 19:32:32
265
原创 葵花宝典--HDFS高可用HA
一、HA概述所谓谓HA(High Availablity),即高可用(7*24小时不中断服务)。实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种...
2020-04-20 20:05:25
152
原创 葵花宝典--HDFS
一、HDFS概述1、HDFS的前提和设计目标存储超大文件:大文件(单个在MB以上),海量文件(总存储量在PE、EB级别) 硬件容错:基于普通机器搭建,硬件错误是常态而不是异常,因此错误检测和快速、自动的恢复是HDFS最核心的架构目标 数据流式访问:为数据批处理而设计,关注数据访问的高吞吐量 简单的一致性模型:一次写入,多次读取,一个文件经创建写入关闭后就不需要再更改,可以进行追加 ...
2020-04-20 18:35:11
305
原创 葵花宝典--hadoop入门
一、Hadoop简介1、优势优势:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。 高容错性:能够自动将失败的任务重新分配。2、Hadoop组成部分HDFS简介:Nam...
2020-04-19 21:51:49
169
原创 线程池控制一定数量的线程去处理业务
只有代码实现,具体基础知识请查看后面的博客1、自定义线程池import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurren...
2020-02-27 15:18:44
574
原创 linux安装解压版mysql并配置主从复制(亲测有效,傻瓜教程)
1、下载mysqlmysql最新版的官网下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads。如果新的项目,推荐mysql5.7或更新版本,因为它比老版本的配置文件更少,更容易配置和管理,安装方式更加自动化。2、解压:下载后的文件名:mysql-5.7.26-el7-x86_64.tar先tar -xvf m...
2019-05-15 12:18:25
486
原创 使用cronolog进行日志切割
1、下载(最新版本)# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz2、解压缩tar -xvf cronolog-1.6.2.tar3、进入cronolog安装文件所在目录cd cronolog-1.6.24、运行安装# ./configure# make# make install5、查看cr...
2019-04-29 14:18:45
1094
原创 Data truncation: Incorrect datetime value: '0000-00-00 00:00:00' for column xxx
1. 错误提示Data truncation: Incorrect datetime value: '0000-00-00 00:00:00' for column xxx2. 问题分析从上面的描述我们可以看出原因是:我们给类型是datetime的xxx字段赋值0000-00-00 00:00:00是不被支持的,赋值包含两种情况: 情况一:我们直接提供的值就是0000-00-0...
2019-04-01 21:50:23
19746
3
原创 mysql数据迁移
最近刚做完mysql数据库的迁移,简单来说就是,把一个环境的库整体搬到另外一个环境中。1、把要搬迁的数据库dump成一个sql文件进入mysql安装目录的bin目录:到处表和数据:mysqldump -u用户名 -p密码 数据库名 > 数据库名.sqlmysqldump -uroot -p dbname > dbname .sql导出表结构:mysqldump...
2019-04-01 21:45:47
802
原创 tomcat没有报错,但是启动非常慢,解决方法
熵池的大小是根据键盘 鼠标之类的噪音产生的数 然后/dev/random会根据熵池来生成随机数 而生成需要有足够的熵池里的噪音数 如果没有达到的话就会一直阻塞 tomcat启动的时候为了生成session id就会获取这个随机数来生成密匙 所以才出现上面的情况 一直阻塞在等待熵池里的数满足生成随机数的大小 3分钟以后熵池里的数够大了才开始部署 所以我们可以使用rngd来增大熵池 因为docker容...
2019-04-01 21:30:05
397
原创 安装keepalived+redis实现主被切换
安装redis*保证系统已安装有gcc和ruby解压:tar -zxvf redis-4.0.10.tar.gz进入redis目录进行编译:make进入src目录:make install PREFIX=/root/redis配置config文件;redis.conf启动:./redis-server redis.conf连接:./redis-cli 或 ....
2019-03-15 17:50:49
273
原创 安装zookeeper+activemq
安装JDK解压jdk:tar -zxvf jdk-8u172-linux-x64.tar.gzvi /etc/profile:export JAVA_HOME=/var/local/jdk1.8.0_172export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$JAVA_HOME/bin...
2019-03-15 17:49:42
726
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人