- 博客(32)
- 收藏
- 关注
原创 容器化技术之Docker——安装
系统要求Docker CE 支持64位版本CentOS 7,并且要求内核版本不低于3.10,可通过命令行参数 uname -r 查看内核版本。安装 Docker卸载旧版本sudo yum remove docker使用 yum 安装sudo yum install docker-ce注意:如果安装的是 centos7 minimal 版本,执行安装提示 “没有可用软件包” ...
2019-12-19 17:51:59
363
原创 中间件——Rocket MQ收发事务消息
业务背景由于分布式系统架构越来越多地被使用,于是便很容易牵扯到系统间的事务问题;之前介绍过使用Rabbit MQ结合本地表来实现分布式业务数据的幂等,详见 https://blog.youkuaiyun.com/Winner941112/article/details/102869015,本文将通过使用Rocket MQ的特性,同样来一定程度上地解决事务问题。此次以用户注册为例,在用户注册后向用户发送一条信...
2019-11-08 20:35:02
441
原创 中间件——分布式事务解决方案
前言随着互联网公司的业务的不断拓展,数据量以及用户的不断增多,越来越多的公司的系统架构从最开始的单系统架构转为了多系统间的分布式架构,这种方式能够大大减少系统间的耦合性,同时也能缓解系统压力;但是同时也带来了系统间数据不一致的问题,在接口的调用和数据的传输写入等操作中,往往很难保证事务的可靠性。通常分布式事务有以下几种解决方案:1.基于数据库XA/JTA协议的方式(需要数据库厂商支持;JAV...
2019-11-02 17:31:24
1261
原创 hive获取字符串指定位置之前的字符串
在数据表中有一个字段 PROC_DEF_ID_ 数据如下:AfterSaleWorkSheetProgress:1:3ReturnToPSPProgress:17:965022pspOrderCancelWork:15:965017现在要截取的字段为:AfterSaleWorkSheetProgressReturnToPSPProgresspspOrderCancelW...
2019-10-23 15:46:20
6348
2
原创 使用shell脚本输出文件后缀多个问号(?)
在使用shell脚本输出文件后,文件后缀出现问号,导致文件无法使用sz下载:原因时该脚本是在window下编写的,一般shell都是用重定向向新文件输出内容时随便创建这个文件的。也就是在命令的最后是 >> filename 或 > filename在linux下看的话,后面就会多一个 ^M, 然后显示的时候不能识别这个符号,就显示问号了。解决方法就是删除多...
2019-10-23 15:43:02
1696
原创 JVM调优之GC调优——响应时间优先(三)
GC调优之响应时间优先上一节简单介绍了GC调优的吞吐量优先,详见:,这一节将会考虑响应时长进行调优。响应时间优先依然使用之前的程序来模拟生产上的用户请求,每100毫秒创建150线程,每个线程创建一个512kb的对象,观察GC情况;对于对象存活在1s左右的场景,远远超过平时接口的响应时间要求,场景应该为吞吐量优先。模拟代码如下:import org.springframework.boot....
2019-10-23 15:12:47
2139
原创 JVM调优之GC调优——吞吐量优先(二)
GC调优之调节吞吐量上一节简单介绍了一些调优参数和调优场景,详见:,这一节将会模拟大量用户请求来进行一个吞吐量的调优。吞吐量调优这里使用一个简单的程序来模拟生产上的用户请求,每100毫秒创建150线程,每个线程创建一个512kb的对象,观察GC情况;对于对象存活在1s左右的场景,远远超过平时接口的响应时间要求,场景应该为吞吐量优先。模拟代码如下:import org.springframe...
2019-10-23 11:27:42
4402
原创 JVM调优之GC调优——介绍(一)
调优基本概念在调整性能时,JVM有三个组件:1、堆大小调整2、垃圾收集器调整3、JIT编辑器大多数调优选项都与调整堆大小和对应情况的垃圾收集器有关,JIT编辑器对性能有很大的影响,但很少需要使用较新版本的JVM进行调优。通常,在调优Java应用程序时重点是以下两个主要目标之一:1、响应性:应用程序或系统对请求的数据进行响应的速度,对于专注于响应性的应用程序,长的暂停时间是不可以接受的...
2019-10-23 10:58:30
1433
原创 SparkStreaming重复消费消息队列中的数据解决方案
SparkStreaming重复消费消息队列中的数据解决方案问题:在E-MapReduce上使用SparkStreaming消费阿里云LogService(可以当作Kafka类似的消息队列来发送和消费数据,实际是类似ElasticSearch的数据库)中的数据时,每个batch都会消费到之前所有的数据。如图:在向LogService中发送了16条数据后,每个match都能消费到所有的数据代码...
2019-09-30 12:10:37
1183
原创 hive COALESCE 的使用
COALESCE(expr1, expr2, expr3)当expr1为空时使用expr2为结果值,若expr2也为空,使用expr3为结果值SELECT COALESCE (u.u_date, o.o_date, r.r_date, 'no_time') AS result_date,COALESCE (u.na, o.na, r.na, 'no_netflow') AS resu...
2019-09-30 10:48:07
767
转载 Spark性能优化指南——高级篇
数据倾斜调优调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个tas...
2018-11-10 12:09:46
364
转载 Logstash详解之——output模块
说明:该文章转自:https://yq.aliyun.com/articles/197785?spm=a2c4e.11153940.blogcont154341.25.426051feD4jKxMLogstash的output模块,相比于input模块来说是一个输出模块,output模块集成了大量的输出插件,可以输出到指定文件,也可输出到指定的网络端口,当然也可以输出数据到ES.在这里我只介...
2018-10-19 14:34:07
2839
转载 Logstash详解之——filter模块
说明:该文章转自:https://yq.aliyun.com/articles/154341?spm=a2c4e.11153940.blogcont152043.25.99405fc0jSShVxLogstash三个组件的第二个组件,也是Logstash工具中最复杂,最蛋疼的一个组件,当然,也是最有作用的一个组件。1、grok插件 grok插件有非常强大的功能,他能匹配一切数据,但是他的性能...
2018-10-19 14:28:43
2263
1
转载 Logstash详解之——input模块
说明:该文章转自:https://yq.aliyun.com/articles/152043?spm=a2c4e.11153940.blogcont154341.23.792e51fekIVnjRLogstash由三个组件构造成,分别是input、filter以及output。我们可以吧Logstash三个组件的工作流理解为:input收集数据,filter处理数据,output输出数据。至于...
2018-10-19 14:15:10
5929
原创 Head插件安装
1、git clone git://github.com/mobz/elasticsearch-head.git 2、切换到:elasticsearch-head 目录下,在该目录下执行: npm install3、进入Gruntfile.js修改配置: connect: { server: { ...
2018-10-18 15:36:40
254
原创 Kibana安装
Kibana 是一个开源的分析和可视化平台,旨在与 Elasticsearch 合作。Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。1、kibana下载地址:https://www.elastic.co/downloads/past-releases/kibana...
2018-10-18 10:35:08
236
原创 Elasticsearch5.4.0集群安装IK分词器
1、ik分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v5.5.3 注意:一定要下载和自己es版本匹配的ik分词器2、解压elasticsearch-analysis-ik-5.4.0.tar.gz: tar -zxvf elasticsearch-analysis-i...
2018-10-18 10:19:03
859
1
原创 Elasticsearch-5.4.0集群搭建
1、Elasticsearch-5.4.0 安装包下载地址:https://www.elastic.co/downloads/past-releases/elasticsearch-5-4-02、解压文件:tar -zxvf /home/elasticsearch-5.4.0.tar.gz -C /usr/local/3、设置系统参数:vi /etc/sysctl.conf ...
2018-10-17 15:26:34
546
原创 logstash-input-jdbc实现mysql 与elasticsearch实时同步
实现MySQL数据库中数据到Elasticsearch的实时同步:首先需要做好的准备工作:1、服务器上安装好elasticsearch和logstash2、安装logstash-input-jdbc插件,但从logstash5.X开始,已经至少集成了logstash-input-jdbc插件。所以,你如果使用的是logstash5.X,可以不必再安装,可以直接跳过这一步。插件安装可...
2018-10-16 15:37:23
442
原创 hive优化(1)
Hive在map端存在三个配置参数:set mapred.max.split.size=256000000;set mapred.min.split.size.per.node=256000000;set mapred.min.split.size.per.rack=256000000;set hive.input.format=org.apache.hadoop.hive.ql.io...
2018-10-10 10:36:16
288
转载 Spark优化(十):资源参数调优
在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者通常不知道该设置哪些必要的参数以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。 资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。 ...
2018-09-30 16:03:34
373
转载 Spark优化(九):优化数据结构
优化数据结构Java中,有三种类型比较耗费内存: 对象,每个Java对象都有对象头、引用等额外的信息,因此比较占用内存空间。 字符串,每个字符串内部都有一个字符数组以及长度等额外信息。 集合类型,比如HashMap、LinkedList等,因为集合类型内部通常会使用一些内部类来封装集合元素,比如Map.Entry。 因此Spark官方建议,在Spark...
2018-09-30 14:31:14
323
转载 Spark优化(八):使用Kryo优化序列化性能
使用Kryo优化序列化性能 在Spark中,主要有三个地方涉及到了序列化: 在算子函数中使用到外部变量时,该变量会被序列化后进行网络传输(见“Spark优化(七):广播大变量”中的讲解)。 将自定义的类型作为RDD的泛型类型时(比如JavaRDD、Student是自定义类型),所有自定义类型对象,都会进行序列化。因此这种情况下,也要求自定义的类必须实现Serializ...
2018-09-30 13:58:23
714
转载 Spark优化(七):广播大变量
广播大变量有时在开发过程中,会遇到需要在算子函数中使用外部变量的场景(尤其是大变量,比如100M以上的大集合),那么此时就应该使用Spark的广播(Broadcast)功能来提升性能。在算子函数中使用到外部变量时,默认情况下,Spark会将该变量复制多个副本,通过网络传输到task中,此时每个task都有一个变量副本。如果变量本身比较大的话(比如100M,甚至1G),那么大量的变量副本在...
2018-09-30 13:44:46
668
转载 Spark优化(六):使用高性能的算子
除了shuffle相关的算子有优化原则之外,其它的算子也都有着相应的优化原则: 使用reduceByKey/aggregateByKey替代groupByKey。 详情见“Spark优化(五):使用map-side预聚合的shuffle操作”。 使用mapPartitions替代普通map。 mapPartitions类的算子,一次函数调用会处理一个partition...
2018-09-29 17:29:33
1565
转载 Spark优化(五):使用map-side预聚合的shuffle操作
使用map-side预聚合的shuffle操作如果因为业务需要,一定要使用shuffle操作,无法用map类的算子来替代,那么尽量使用可以map-side预聚合的算子。所谓的map-side预聚合,说的是在每个节点本地对相同的key进行一次聚合操作,类似于MapReduce中的本地combiner。 map-side预聚合之后,每个节点本地就只会有一条相同的key,因为多条相同...
2018-09-29 17:18:43
3349
转载 Spark优化(四):尽量避免使用shuffle类算子
尽量避免使用shuffle类算子如果有可能的话,要尽量避免使用shuffle类算子。因为Spark作业运行过程中,最消耗性能的地方就是shuffle过程。shuffle过程,简单来说,就是将分布在集群中多个节点上的同一个key拉取到同一个节点上,进行聚合或join等操作。比如reduceByKey、join等算子,都会触发shuffle操作。shuffle过程中,各个节点上的相同key...
2018-09-29 16:53:14
4304
转载 Spark优化(三):对多次使用的RDD进行持久化
对多次使用的RDD进行持久化当你在Spark代码中多次对一个RDD做了算子操作后,恭喜,你已经实现Spark作业第一步的优化了,也就是尽可能复用RDD。此时就该在这个基础之上,进行第二步优化了,也就是要保证对一个RDD执行多次算子操作时,这个RDD本身仅仅被计算一次。Spark中对于一个RDD执行多次算子的默认原理是这样的:每次你对一个RDD执行一个算子操作时,都会重新从源头处计算一遍...
2018-09-29 16:38:34
1906
转载 Spark优化(二):复用RDD
尽可能复用同一个RDD除了要避免在开发过程中对一份完全相同的数据创建多个RDD之外,在对不同的数据执行算子操作时还要尽可能地复用一个RDD。 比如说,有一个RDD的数据格式是key-value类型的,另一个是单value类型的,这两个RDD的value数据是完全一样的,那么此时我们可以只使用key-value类型的那个RDD,因为其中已经包含了另一个的数据。 对于类似这种多个R...
2018-09-29 16:29:20
1040
转载 Spark优化(一):避免重复RDD
避免创建重复的RDD通常来说,我们在开发一个Spark作业时,首先是基于某个数据源(比如Hive表或HDFS文件)创建一个初始的RDD;接着对这个RDD执行某个算子操作,然后得到下一个RDD,以此类推,循环往复,直到计算出最终我们需要的结果。 在这个过程中,多个RDD会通过不同的算子操作(比如map、reduce等)串起来,这个“RDD串”,就是RDD lineage,也就是“RDD...
2018-09-29 16:26:25
2482
原创 Spark2.X 使用累加器AccumulatorV2实现字符串拼接下的字母统计
Spark 2.X 中的累加器和 Spark 1.X中有着很大不同,下面将实现的功能是:将一个集合,集合中含有字母 "A","B","A","D","E","D","G","H","I","A","B","I","G","D"
2018-07-10 15:28:32
1227
原创 Spark 2.X 自定义AccumulatorV2 JavaAPI实现
自定义Accumulator:Scala自定义accumulator代码:import org.apache.spark.util.AccumulatorV2class MyAccumulator2 extends AccumulatorV2[String,String]{ private var res = "" override def isZero: Boolean = {re...
2018-07-04 15:51:32
1428
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人