- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 Nginx实现tcp/udp消息转发
1、编译安装$ yum -y install proc* openssl* pcre*$ tar zxvf nginx-1.12.2.tar.gz$ cd nginx-1.12.2$ ./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-...
2019-01-04 16:07:37
9604
原创 kafka sasl+acl权限及配额管理
Kafka开启使用 SASL_PLAINTEXT认证1、进入config目录,增加如下配置文件: (1)touch kafka_server_jaas.conf 配置如下: KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule require...
2018-11-30 15:15:07
1819
原创 Java httpclient实现CAS单点登录
最近项目中遇到CAS授权的系统,客户端需要调用https接口获取数据,下面给出具体怎么通过CAS授权的代码示例。public class SSLClient extends DefaultHttpClient { public SSLClient() throws Exception { super(); SSLContext ctx = SSLContext.getInstanc...
2018-09-18 16:19:51
4896
4
原创 SparkStreaming2.2+kafka的偏移量管理
在从kafka接受流式数据的时候,spark提供了两种方式,Dstream和DirectStream,在spark2.2中已经不在提供第一种方式,具体区别这儿就不再描述了,第二种方式spark是用的kafka低阶api,每个RDD对应一个topic的分区,这种情况,需要借助于外部存储来管理offset,或者简单点,自己手动利用kafka来管理offset,否则在程序重启时找不到offset从最新的...
2018-08-22 11:16:41
2326
1
原创 expect4j使用体会心得
在实际的生产项目中,往往涉及很多的人机交互,这个时候想要程序自主完成一些动作,就显得比较麻烦,比如输入登录密码或者和一些堡垒机做交互。下面讲一下如何应用expect4j来实现这些功能。 expect4j同样也是基于ssh协议的,他的底层依赖于jsch包,其实本质上他就是对jsch创建的通道流做处理,事先设定一个closure,当匹配到就做下一步操作,来达到自动交互完成一系类指令的功能...
2018-06-21 10:28:55
4372
转载 volatile关键字详解
最近在优化多线程之间锁同步的问题,看到一篇文章关于volatile的理解讲的非常好文章转于:http://www.importnew.com/24082.html 一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用...
2018-06-13 10:46:43
215
转载 JAVA10 新特性
JAVA10发布也有一段时间了,这段时间正好有空,从官网更新了JDK玩了玩。在使用中却发现以前版本的eclipse以及idea都不支持JAVA10,我想可能是因为var类型的引入,IDE需要做适配吧。所幸的是,eclipse4.7.3发布很快,可以完美支持JAVA10。 下面的更新内容翻译的很全,对学习很有帮助,转载于: https://www.oschina.net/tran...
2018-04-26 16:21:38
6111
转载 Kafka高性能架构之道
本文转发自技术世界,原文链接 http://www.jasongj.com/kafka/high_throughput/ 本文从宏观架构层面和微观实现层面分析了Kafka如何实现高性能。包含Kafka如何利用Partition实现并行处理和提供水平扩展能力,如何通过ISR实现可用性和数据一致性的动态平衡,如何使用NIO和Linux的sendfile实现零拷贝以及如何通过顺序读...
2018-03-28 11:10:26
272
原创 Spark DataFrame transformation操作报错问题
在Spark2.0之后版本中,当对DataFrame对象进行transformation操作的时候,编译阶段不会报错,但是运行阶段就会抛出异常,提示这样的错误信息:<console>:26: error: Unable to find encoder for type stored in a Dataset. Primitive types (Int, String, etc...
2018-03-23 17:22:16
581
原创 Spark Streaming 流计算状态管理
spark流计算的数据是以窗口的形式,源源不断的流过来的。如果每个窗口之间的数据都有联系的话,那么就需要对前一个窗口的数据做状态管理。spark有提供了两种模型来达到这样的功能,一个是updateStateByKey,另一个是mapWithState ,后者属于Spark1.6之后的版本特性,性能是前者的数十倍。 updateStateByKey 通过源码查看发现,这个模型的核...
2018-03-22 15:27:15
3745
原创 利用伴生对象构建Scala单例
在Scala语法中,并没有静态成员,所以并不能像Java一样构建单例。但是他拥有伴生对象的特性,所以可以利用这一点来达到同样的目的。 伴生对象类型为object,名称和class保持一致,那么这个object就是此class的伴生对象。class和object之间可以互相访问各自的成员变量,且object内的成员变量都是静态的。下面贴一下代码,具体如何实现。class Student...
2018-03-21 10:54:38
330
原创 Scala的高阶函数使用总结
函数在Scala语言中有着举足轻重的地位,它和类,变量同样属于一等公民的地位,函数可以脱离类而独立存在,同时自己也可以作为参数传递给其他函数。 匿名函数scala> val sayHello = (name: String) => println("my name is:" + name)sayHello: String => Unit = <functio...
2018-03-20 12:56:22
3267
原创 Scala隐式转换几种使用场景
Scala提供的隐式转换的特性的作用,简单说就是:当Scala编译器进行类型匹配时,如果找不到合适的类型,那么隐式转换会让编译器在作用范围内自动推导出合适的类型,在代码重构设计上,可以避免冗余的代码,使得代码非常优雅。 使用场景一:隐式参数scala> def sayHello(age: Int)(implicit name: String) = println("my na...
2018-03-19 20:40:04
3163
转载 Java8 新特性之流式数据函数式编程
一. 流式处理简介在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代码实现:List<Integer> evens = new ArrayList<&g...
2018-03-19 14:30:41
1832
原创 parquet研究及与spark的联合使用
这段时间因为项目,对parquet做了一系列研究,从写入跟踪到合并及spark使用等等场景。 选择parquet来对流数据进行序列化,用于后续离线分析的理由有以下几点: 1、流数据一般格式比较杂乱,可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量。 2、网络流量数据量非常的庞大,即使过滤部分,还是非常吓人,parquet压缩编码可以降低磁盘存储空间。由于同一列的...
2018-03-19 11:23:26
2410
1
原创 对标内核抓包极限提升udp收包率
在海量数据的收集中,大部分网络日志都是通过udp协议传输的,所以为了保证日志的完整性,udp的收包性能显得极其重要,所以对此主题进行一系列的研究。1.1 测试环境操作系统:linux 3.10.0-229.el7.x86_64网络带宽:千兆网机器内存:32GB处理器:4核硬盘空间:1T硬盘IO:实测300MB/SJDK版本:1.8 1.2 测试用例 1、报文大小:870b测试对象:j...
2018-02-11 12:18:45
1193
原创 Solr卸载、加载索引数据
本篇说明主要描述的是从solr中卸载索引数据已经加载索引数据的方法。卸载索引数据主要是为了减少历史数据对磁盘的空间的占用,以及提高当前solr服务的效率;加载索引数据主要是为了历史的数据资料能够复用,进行回溯。下面,将介绍执行的具体步骤。卸载索引数据 1、首先,我们先查看Solr的admin界面,浏览下都有哪些collection(collection类似于数据库中的表),在浏览器中...
2017-10-17 17:06:41
1835
转载 Spark核心RDD:combineByKey函数详解
为什么单独讲解combineByKey?因为combineByKey是Spark中一个比较核心的高级函数,其他一些高阶键值对函数底层都是用它实现的。诸如 groupByKey,reduceByKey等等如下给出combineByKey的定义,其他的细节暂时忽略(1.6.0版的函数名更新为combineByKeyWithClassTag)[java] view
2017-10-11 15:11:23
286
转载 solr之空间搜索剖析
在美团CRM系统中,搜索商家的效率与公司的销售额息息相关,为了让BD们更便捷又直观地去搜索商家,美团CRM技术团队基于Solr提供了空间搜索功能,其中移动端周边商家搜索和PC端的地图模式搜索功能为BD们的日常工作带来了很大的便利,大大提升了BD们的工作效率。在本文中,首先对空间搜索的原理进行简单介绍,然后再结合具体的业务场景去分享美团使用空间搜索的实践。
2017-09-05 14:52:25
942
原创 Spark之shuffle性能优化
一 开启consolidation机制 spark.shuffle.consolidateFiles,这个参数默认为false,设置为true后,shuffle的性能将得到极大的提升。在没有开启开启consolidation机制的时候,shuffle write的性能是比较低下的,而且会直接影响shuffle read的性能。因为在shuffle map端创建的文件太多了,导致shuffl...
2017-08-30 14:47:19
636
原创 hive2.3部署实践踩过的一些坑
1、hive.metastore.schema.verification这个参数的属性设置为false,在hive-site.xml文件中修改。否则hiveserver启动失败。2、如果报这样的错:Exception in thread "main" java.sql.SQLException: Could not open client transport with JDBC Uri:
2017-08-23 14:39:50
5326
转载 ssh 免密码设置失败原因总结
转载:http://yjmyzz.cnblogs.com 先复习一下设置ssh免密码操作的步骤:进入主目录cd生成公钥ssh-keygen -t rsa -P '' (注:最后是二个单引号,表示不设置密码)然后分发公钥到目标机器ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@对方机器IP (注意不要忘记了参数-i)
2017-08-11 11:06:04
412
原创 Java通过认证kerberos连接HDFS
针对java语言中通过kerberos认证访问hadoop环境可以利用第三方api包。UserGroupInformation这个类JAAS 框架上封装了Hadoop 的用户信息,更确切地说是subject做了一层封装: UserGroupInformation(Subject subject) { this.subject = subject; this.user = su...
2017-08-10 14:09:14
12767
原创 Java虚拟机垃圾回收调优
GC对性能的影响在于,如果内存中数据量比较大的话,那么可能会造成GC频繁的发生,另外如果要回收的数据量特别大,那么会导致GC的速度也比较慢。gc线程工作时,会让程序中的task线程暂停工作,那么整个应用程序的性能就会大打折扣。
2017-08-10 09:52:55
610
原创 Spark数据结构优化
要减少内存的消耗,除了使用高效的序列化库以外,还有一个很重要的事情,就是优化数据结构。从而避免Java语法特性中所导致的额外内存的开销,比如基于Java数据结构,以及包装类型。
2017-08-09 15:57:33
461
原创 Java指令-Djava.ext.dirs的陷阱
这两天由于现场需求,需要把ES索引写入插件改造成带安全认证的方式,加密算法是由java.security相关类实现的。在DEMO中测试了若干次都没问题,但是放到生成环境中就是报错,相关错误如下:
2017-07-05 09:48:25
25001
11
转载 Hadoop NameNode元数据相关文件目录解析
本文转自 Hadoop NameNode元数据相关文件目录解析一 NameNode 元数据相关文件目录架构二 元数据相关文件解析1 VERSION 文件2 seen_txid 文件3 fsimage 和 edits 及 md5 校验文件三 文件系统元数据 fsimage 和编辑日志 edits1 edits 和 fsimage 文件的概念2 fsimage
2017-06-28 10:29:25
1093
原创 Spark自定义RDD重分区
在某些计算场景中,我们可能需要将两个有关联的数据输入的部分数据,也就是说RDD中的部分数据,需要聚合在同一个partition进行匹配计算,这个时候,我们就需要根据实际的业务需求,自定义RDD重分区。下面结合代码,看看具体怎么实现重分区,spark内部提供了一个分区抽象类Partitioner:package org.apache.spark/** * An object that d...
2017-06-26 14:45:54
2689
原创 日志中如何输出完整的堆栈异常
程序中发生异常后,我们捕捉到异常之后一般是输出e.toString到日志,这样我们只能知道异常类型是什么,只有一个简单的描述,无法看到具体的堆栈信息。利用下面一段代码,可以将完整的堆栈信息输出到日志系统中。
2017-06-06 09:36:49
9545
原创 分布式缓存应用
在MR作业中,经常有使所有节点的作业共享引用数据的需求,Hadoop为我们提供了一种可供选择的机制:分布式缓存。它可以把map或reduce任务要用的通用只读文件在所有节点之间共享。这些文件可以是文本数据,也可以是jar包或者二进制文件,任何文件都可以。
2017-05-25 16:53:05
414
转载 Elasticsearch索引原理
最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearch的基础理论知识,整理了一下,希望能对Elasticsearch感兴趣/想了解的同学有所帮助。
2017-03-23 10:27:43
25493
10
原创 调用lucene向solr建索引实践
Solr的底层是基于Lucene索引结构,Lucene是一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能。所以,只要是相同版本的Solr和Lucene其用的索引文件是兼容的,solrconfig.xml有使用Lucene的版本信息。如果我们直接利用Lucene来写Solr的索引目录,可以减去很多网络开销,并且减去Solr除了索引以外功能做的额外开销,从提升建索引的角度,有不错的提升。
2017-03-21 16:04:06
1188
1
原创 HDFS性能测试及优化部署
hadoop的存储系统hdfs在大数据领域有着无可比拟的地位,本篇文章对hdfs的存储性能做一个相对详细的测试,影响因素有哪些,来帮助我们优化部署应用程序和hadoop集群,最大化利用hadoop的吞吐能力。
2017-03-16 16:19:07
11710
3
原创 solr亿万级索引优化实践(四)
本篇是这个系类的最后一篇,但优化方案不仅于此,需要后续的研究与学习,本篇主要从schema设计的角度来做一些实践。
2017-03-15 18:59:38
3572
4
原创 solr亿万级索引优化实践(三)
本篇文章主要介绍下如何从客户端solrJ以及服务端参数配置的角度来提升索引速度。 solrJ6.0提供的Java客户端主要有下面几种接口:HttpSolrClient,ConcurrentUpdateSolrClient,CloudSolrClient。下面分别对这三种接口做一个简单的比较。HttpSolrClient在定义的时候需要明确指定一个solr节点路径,他在提交...
2017-03-14 17:03:09
5683
原创 solr亿万级索引优化实践(二)
通过上一篇的几个优化方案,我们的索引速度其实已经能得到很大的提升了,从最初的平均每台机器7000TPS/S,大概能到2.5WTPS/S。但是这个速度远远还达不到我们的需求,最关键的时候随着节点数增加并不能速度并不能线性增加,然后又做了许多其他方面的尝试,其中路由方式是比较大的一个方向,本篇将重点介绍这一方案。 前面介绍了solr在创建索引库的时候可以指定多个sha...
2017-03-14 14:28:35
5096
原创 solr亿万级索引优化实践(一)
海量数据的索引,第一个要解决的是数据存储的问题,solr提供数据存储平台有两种,第一个是本地磁盘,另一个是HDFS,我们可以通过solrhome的配置来实现。在本次实践中,我们选择的是本地磁盘,因为采用的solrcloud部署模式,本身就是多节点多机器,在存储上不会有问题,还有另一个重要的原因后面会讲到。下面讲讲具体从哪些方面做了实践。 solr版本:solr6.0.0;主机:...
2017-03-13 16:17:17
12999
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人