自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 日志存储

文件目录布局一个分区副本在节点上对应一个log文件夹,同时kafka为了防止文件过大引入了logSegment概念。将log切分成了多个logSegment,相当于将一个大文件切分成多个小文件。logSegment又对应磁盘上多个文件,一般有一个日志文件和两个索引文件,以及可能的其他文件。向log中追加消息时是顺序写入,只有最后一个logSegment才能执行昔日如操作,此前的所有logSegment度不能写入数据。为了便于消息的检索,每个logSegment中的日志文件(以.log结尾)对有对应的

2020-11-16 13:36:06 1641

原创 主题与分区

主题管理1.1 创建主题当broker端配置参数auto.create.topics.enable设置为true(默认为true),那么当生产者向一个尚未创建的主题发送校学习时,会自动创建一个分区数为num.partitions,副本因子为default.replication.factor的主题。另外,当一个消费者开始从位置主题中读取消息时,或者当任意一个客户端向未知追发送元数据请求时,都会按照配置参数num.partitions和default.replication.factor的值来创建一个相应

2020-11-10 14:49:55 364

原创 Kafka深入学习(4)

主题与分区主题管理创建主题分区副本的分配查看主题修改主题配置管理删除主题主题管理创建主题如果broker端参数auto.create.topics.enable设置为true,则生产者或者消费者先未知topic进行操作时将自动创建这个topic(建议将这个参数设置为true)创建topic的kafka命令kafka-topics.sh --zookeeper localhost:2181...

2020-04-14 14:40:26 442

原创 Kafka深入学习(3)

Kafka消费者消费者和消费组订阅主题与分消息消费提交控制和关闭消费指定位移消费再平衡拦截器消费者和消费组拥有相同group.id的消费者线程为同一组消费组消费者数量和分区数量一致时为p2p模式;消费者数量少于分区数量为发布订阅模式订阅主题与分subscribe()方法为订阅主题,有4个重载的方法public void subscribe(Collection<String&gt...

2020-04-13 15:36:52 213

原创 后端开发之项目前期准备----MyBatis逆向工程准备

MyBatis逆向工程在使用mybatis的时候,我们需要构建相应mapper接口与mapper的xml文件,用于sql语句和接口方法之间的关联,而且我们还要为每一个数据表构建一个专门的pojo实体类。如果是在一个大型项目中,我们有多大数十张表的时候我们的工作就会相当繁琐。这里我们使用mybatis的逆向工程,通过读取数据库中的表来自动生成相应的pojo实体类和其mapper接口与xml文件...

2020-03-25 16:55:05 226

原创 后端开发之Elasticsearch篇----Logstash同步数据

Logstash同步数据mysql至es我们需要先在es中创建一个索引(但是不需要为这儿索引设置mappings)。logstash在同步数据到es时是参照自增的id或者updated_time这个更新时间字段的,每一个logstash使用一各sql查询指定的表后会记录下这个表的自增id或者更新时间字段,如果和上一次比对的值发生变化了,就开始读取新的数据。准备之前我在网上也查过一些在同步时...

2020-03-24 14:50:59 474

原创 后端开发之Elasticsearch篇----SpringBoot整合ES

SpringBoot整合ESsb添加es的依赖和配置在pom中添加如下依赖,现在的版本2.2.2.RELEASE对es的整合版本是6.4.3<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elastic...

2020-03-22 21:57:14 831

原创 后端开发之Elasticsearch篇----es集群

集群搭建集群现在我们有es1,es2,es3这3台机器分别修改三台机器的elasticsearch.yml配置文件# 配置集群名称,保证每个节点的集群名称相同,如此就能都处于一个集群之内了cluster.name: es-cluster# 每一个节点的名称,必须不一样node.name: ${你定义的节点名称,eg:es-node1}# http端口,一般使用默认就可以了ht...

2020-03-21 16:43:29 1015

原创 后端开发之Elasticsearch篇----深度查询和批量查询

深度查询和批量查询深度分页在分页查询中,使用和query同级的关键字from和size。但是当你的from从9999开始而size是10的时候肯定会报错。因为有一个max_result_window的参数控制着,其默认值是10000。如果你的公司非要进行那些超深度的查询,可以修改这个值GET /shop/_settings # 用于查询相关的设置PUT ...

2020-03-20 22:46:55 518

原创 后端开发之Elasticsearch篇----DSL

Elasticsearch的DSL风格非DSL风格的查询方式查询[字段]包含[内容]的文档# 可以理解为在全文搜索的基础上添加了查询字段的筛选GET /shop/_doc/_search?q=desc:doudouGET /shop/_doc/_search?q=nickname:men&q=age:25text与keyword搜索对比测试(keyword不会...

2020-03-19 10:42:17 306

原创 后端开发之Elasticsearch篇----入门介绍

搜索引擎ElasticsearchElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。核心术语ES就相当于一个数据库索引index在最新版本可以理解为一个表(为什么说是最新版本呢,因为在老版本在index下还有一个type的概念,但现在被移除了。所以现在index可以直接定型为一个表的概念)文档docu...

2020-03-18 10:32:06 571

原创 后端开发之Redis篇----分布式会话

分布式会话会话session代表的是客户端与服务器的一次交互过程,这个过程可以是连续也可以是时断时续。曾经在Servlet时代(jsp),一旦用户与服务端交互,服务器tomcat就会为用户创建一个session,同时前段会有一个jsessionid,每次交互都会携带。如此一来,服务器只要在接到用户请求时候,就可以拿到jsessonid,并根据这个ID在内存中找到对应的会话session,当拿到s...

2020-03-12 14:31:43 152

原创 后端开发之Redis篇----Redis集群进阶

多主多备Redis集群原理在上几篇博文中,我们已经介绍了主从同步和哨兵模式,这些模式都是对读操作的高并发量有一定提升。但是,如果如何都是在单master节点下操作的,当我们的写操作的并发量异常地多的时候横向扩展master节点就很有必要了。哨兵模式其实也是一种集群,他能狗提高读请求的并发,但是容错方面可能会有一些问题,如:master同步数据给slave的时候,这其实是异步复制的,这个时候如...

2020-03-10 15:12:42 145

原创 后端开发之Redis篇----哨兵机制原理及实战

Redis主从架构进阶哨兵机制在上一篇博文中,我们介绍了Redis的主从架构。在当前的架构体系下,我们是使用了1个master和2个slave的模式。那么这就有了单点故障的可能性了,当我们的master节点上的Redis服务进程挂掉后,我们就无法提供写操作了,数据就得不到更新了。所以我们需要一个监控机制来保障我们的master有效性,当原来的active的master节点挂掉后,必须要有一个替...

2020-03-09 22:04:39 202

原创 后端开发之Redis篇----持久化与主从同步及缓存过期处理

Redis进阶持久化 PersistenceRedis提供了两种不同的持久化方式,具体可以分为:使用快照的rdb式的全量持久化和监控写入操作的AOF式的追加式的增量持久化RDBRDB全称Redis DataBase 其实现原理为每个一段时间把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存理的数据肯定会没有,那么再次启动redis后,就能恢复了...

2020-03-09 14:01:25 472

原创 后端开发之Redis篇----Redis安装与部署及相关命令

Redis入门安装与配置首先,我们在redis的官网https://redis.io下载我们需要的安装包到我们的服务器上,随后解压。tar -xzvf redis-5.0.5.tar.gz解压后我们就得到了redis的源码包,然后我们直接安装make && make install接着我们开始配置服务cp utils/redis_init_scripts /etc...

2020-03-07 22:19:51 250

原创 后端开发之SpringBoot篇----Maven聚合工程

Maven聚合工程构建顶级工程(父工程)首先,我们使用maven来创建项目,在这里直接next就可以了。在下一个页面中,输入我们的公司名称或者域名的倒写加项目名,然后next在下一个页面上直接finish就可以了这个时候我们的顶级工程就创建完成了,由于是顶级工程,我们需要在其pom文件里面添加这么一段标识接着就是构建在顶级工程一下的子模块了然后,直接next到了这个窗口最...

2020-03-06 10:56:00 472

原创 后端开发之Keepalived篇----Keepalived入门

Keepalive入门安装keepalived将下载后的keepalived的tar包上传至你的服务器上然后解压,解压后的是源码包,需要我们编译和安装tar -zxvf keepalived-2.0.18.tar.gz进入源码包中,进行配置./configure --prefix=/usr/local/keepalived --sysconf=/etcprefix: keepa...

2020-03-04 18:29:13 397

原创 后端开发之Nginx篇----Nginx进阶

Nginx 进阶跨域问题解决我们之前使用tomcat作为web容器装载前后端服务时,我们使用的是SpringBoot的Cors来解决跨域的问题,然而当我们使用nginx来请求后端server所映射的静态资源时,同样存在跨域的安全性,这就需要我们在nginx中设置跨域server { listen 80; server_name localhost; #允许跨域请求的域,*代...

2020-03-02 23:08:51 635

原创 后端开发之Nginx篇----Nginx入门

Nginx入门什么是NginxNginx是一个HTTP和反向代理Web服务器,同时也提供IMAP/POP3/SMTP服务。其重点是一个反向代理服务器,那什么是反向代理服务器?首先,我们先来理解下正向代理服务器。当我们的client端向一个目标服务器发其请求的时候,我们的请求首先是要经过运营商的服务器,然后在由运营商的服务器来将我们的请求发送到我们的目标服务器上面(毕竟我们的网线并没有直接连接...

2020-03-02 00:43:41 547

原创 大数据开发之Spark篇----join的不同情况讨论(避免shuffle)

Join如何避免shuffle在我们使用Spark对数据进行处理的时候最让人头疼的就是业务上复杂的逻辑,而这些逻辑往往不是map算子就能解决的,不是aggragate就是join操作,而这些操作又伴随着shuffle极大地影响了程序执行过程的性能开销。今天我们来讨论下在使用join的时候如何避免shuffle的发生。一般我们直接使用join的时候都是触发commen join,这种join操作...

2019-11-14 11:54:24 1292

原创 大数据开发之Kubernetes篇----安装部署Kubernetes&dashboard

Kubernetes简介由于公司有需要,需要将外后的服务外加Tensorflow模型部署加训练全部集成到k8s上,所以特意记录下这次简单部署的过程。k8s安装部署首先,我们在部署任何大型的组件前都必须要做的事情就是关闭防火墙和设置hostname了vi /etc/hostsk8s001 xxx.xxx.xxx.xxk8s002 xxx.xxx.xxx.xx...systemctl ...

2019-09-18 16:46:12 288

原创 大数据开发之azkaban篇----编译安装azkaban

Azkaban一个通用的作业调度系统,下面我们将重点了解这个组件的编译和安装过程编译首先,在我们开始之前我们先要完成以下几个准备工作安装jdk下载安装git下载安装gcc-c++mkdir /usr/javawget jdk-8u121-linux-x64.tar.gztar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/java# 将解...

2019-09-11 10:15:02 349

原创 大数据开发之CDH篇----cloudera-scm-agent启动不了后的一堆事

某次cloudera-scm-agnet系统启动不了前几天添加磁盘的时候系统以外重启了,那个时候并没stop cloudera-scm-server和cloudera-scm-agent两个进程,导致了重新启动的时候cloudera-scm-server可以启动而cloudera-scm-agent无法启动。使用命令: systemctl status cloudera-scm-agent得到...

2019-08-23 10:06:43 8941

原创 大数据开发之Spark篇----Spark和HBase的结合(2)

Spark将数据写入到HBase上上一篇博客,我已经介绍了使用put这种方法来将数据写入到HBase上了,如果你是在实时状态下这样写的话可能还好,但是如果是离线批处理的时候,我们要将数据批量地写入到HBase上的话,这么写的性能就非常地差了。下面将介绍一种直接将数据写入到HFile的方法,数据将不经过HBase层了。这种写法的性能是put的好几倍哦。下面也是先贴代码再作解释:(这里的依赖和上...

2019-04-09 21:24:28 548

原创 大数据开发之Spark篇----Spark和HBase的结合(1)

Spark处理,存储到HBase版本Scala 2.11.8Spark 2.4.0HBase 1.2.0-cdh5.7.0mysql 5.1.27maven依赖org.apache.spark:spark-core_2.11:${spark.version}org.apache.hbase:hbase-client:${hbase.version}org.apache.hbase...

2019-04-09 20:44:20 1096

原创 大数据开发之Hive篇----使用外部分区表时要注意的事情

直接将数据put到HDFS上,Hive的查询变化当我们已经使用Hive建立好了一个表的时候,使用desc formatted table_name;可以直接查看到这个表的具体location,如果我们将文件直接放到这个地址上面去,我们在Hive上面理论上面可以直接查询到增加的结果的。假设我现在Hive上创建了一张外部表create external table person(id int,n...

2019-03-22 11:38:05 351

原创 大数据开发之Spark篇----使用Dataset中遇到的小坑

Dataset的使用按照官网上面的提示,我将DataFrame转换成Dataset来使用,代码如下:package com.doudou.www.sql01import org.apache.spark.sql.{Encoders, SparkSession}object JDBCApp { def main(args: Array[String]): Unit = { ...

2019-03-19 01:07:57 3084

原创 大数据开发之Spark篇---SparkSQL入门(5)

CatalogCatalog是一个抽象类,我们一般用它来对Spark里面的元数据进行操作的,其实现类是CatalogImpl这个类型我们一般使用catalog是在sparkSession的实例对象里调用的,将返回一个Catalog对象,使用这个对象就可以直接查看元数据了。val spark = SparkSession.builder().master("local[2]").appNa...

2019-01-17 17:47:01 3926 7

原创 大数据开发之Kafka篇----Kafka入门(2)

部署试用篇说了这么就的Kafka理论知识,我们也需要实际操作一波了Zookeeper部署使用Kafka肯定离不开使用Zookeeper的,这里我们介绍一下在3台机器上部署Zookeeper的过程(但我就只在我是在我本机上演示的,就只能展示单机版的了)首先下载Zookeeper的压缩包,然后解压并到Zookeeper目录下tar -xzvf zookeeper-3.4.6.tar.gz ...

2019-01-17 01:39:17 233

原创 大数据开发之Kafka篇----Kafka入门(1)

Kafka简介首先,我们还是先从官网入手吧:kafka.apache.org。那么Kafka是什么呢?官网上面是说:Apache Kafka® is a distributed streaming platform 这个是改版后的介绍了,以前就是一个消息中间件。那么Kafka有什么用呢?发布与订阅(就是读写数据)处理数据(当数据读取到Kafka里面后现在可以在Kafka里面直接对一些数...

2019-01-16 21:02:58 462

原创 大数据开发之Flume篇----Flume入门(1)

Flume简介Flume官网:http://flume.apache.org/从官网上我们可以知道,其实Flume是就是一种分布式,高可靠数据采集聚合与移动的服务。对于流式数据,其有这简单灵活的特性,支持容错横向扩张。如何体现Flume的简单灵活呢?Flume只有三中类型的组件,分别是:source,channel和sink。我们只需要写好配置文件在运行的时候指定我们的配置文件就可以了。so...

2019-01-10 17:26:54 353

原创 大数据开发之Hive篇----join的工作原理和UDF的定义

深入join的过程虽然我们在Spark篇的SparkSQL入门中也提到了一些join的东西,但是还是不够详细。这里我们将在Hive中执行join操作,看看在执行计划中究竟是怎么样的。现在我们有这么一个SQL语句,里面是对两个表进行join:select a.empno,a.ename,a.deptno,b.dname from emp a join dept b on a.de...

2019-01-09 18:11:51 792

原创 大数据开发之Spark篇----SparkSQL入门(4)

SparkSQL处理结构化数据流程无论是SQL AST,DataFrame还会Dataset都是按照这个流程来执行的Unresolved Logical Plan 先生成一个纯粹的逻辑计划,这个时候还没和实际上的数据有任何的交互Logical Plan 这个时候和数据交互后得到一个实际的逻辑执行计划Optimized Plan 因为上一步已经和数据进行一定的交互,引擎可以在这个基础上进行...

2019-01-09 16:05:18 234

原创 大数据开发之Spark篇----SparkSQL入门(3)

外部数据源实现的主要接口与类上一篇我们已经介绍了DataFrame构建的三种方法:RDD转DataFrame,Hive表,外部数据源。今天我们来重点介绍一下外部数据源是怎么实现的,以及我们将手动实现一个外部数据源。format().load()的调用方RelationProvider我们在使用外部数据源时使用的语法是:val spark = SparkSession.builder(...

2019-01-07 15:22:27 292

原创 大数据开发之Spark篇----SparkSQL入门(2)

DataFrame详解DataFrame与RDD之间的差异RDD的回顾我们先回顾一下我们前几篇对RDD的描述再从这些特性进入到DataFrame的讲解。首先,我们知道RDD的全称是弹性分布式数据集,重点是RDD是一个数据集,其里面是由一个个元素构成的,所以我们操作的时候其实就是对元素进行操作,比如各种的map,filter,reduce操作,但是我们好像并不知道RDD里面元素的具体类型到底是...

2018-12-31 11:31:58 466

原创 大数据开发之Spark篇----idea上使用SparkSQL对Hive上的数据

在idea上使用SparkSQL连接到Hive上将hive-site.xml存储到项目上的resources目录上既然我们要在idea上使用spark来访问Hive上的数据,那我们也要有元数据地址才行嘛,所以这和使用spark-sql访问一样需要hive-site.xml这个配置文件。我们将它放到项目的resources上面,记得要将这个文件夹标记成Resources哦。如果我们没有添加这个...

2018-12-27 18:11:26 2914

原创 大数据开发之Spark篇----SparkSQL入门(1)

SparkSQL的基本了解SparkSQL是个啥?官网上都是怎么描述SparkSQL的官网地址:http://spark.apache.org/sql/我们先简单了解下官网是怎么描述SparkSQL这个东西的:Spark SQL is Apache Spark’s module for working with structured data. 根据官网的描述就是Spark SQL这个东...

2018-12-27 15:56:01 904

原创 大数据开发之Spark篇----过滤脏数据并统计

统计日志数据中的脏数据现在我们手头上有一个日志文件,里面只有3个字段分别是url,时间,流量。在日志文件里面这些都是字符串,所以无论是时间还是流量都可能是一些不可用的格式,现在我们要统计出有多少脏数据并保留。先贴代码吧,这里很多东西我都是写死了,大家就当个简单例子来看看吧:package sparkHomWorkimport java.io.{File, PrintWriter}imp...

2018-12-27 14:35:34 4179

原创 大数据开发之Spark篇----解决Spark on Yarn上的一个小问题

在我们使用Spark on Yarn的时候都会看到这样的一句:warning Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.Ps:解释一下这幅图为什么这样啊,是因为我们内存不够了,所以才这样的,并不影响我们解决问题的既然提示...

2018-12-27 14:06:46 3539 1

空空如也

空空如也

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

TA关注的人

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