- 博客(18)
- 收藏
- 关注
原创 HBase不同版本中对WAL日志的处理
我们知道,HBase在处理写流程(put操作)时,RegionServer会先将数据Append到WAL日志中,在写入MemStore,这时就返回客户端通知成功了。但是,在不同的版本中(HBase 1.6和Hbase 2.x),处理WAL的具体逻辑有很大区别。因此,网络中不同的文章可能会让读者感到迷惑,我们不妨从源码中一探究竟。HBase 2.3.2的流程:1、对要操作的数据添加行锁(List(RowKey)),并添加读锁(这个锁是HRegion类里的可重入读写锁)2、对数据更新timestamp字段
2020-11-03 21:29:49
639
原创 Redis不同版本(单/多线程网络模型)下性能测试
Redis6版本中,使用了多线程处理网络IO,但是执行写命令仍然是单线程。本文就是对Redis5、Redis6两个版本中的不同网络模型,进行性能测试,尤其是对于大的Key和String类型的Value的测试。根据官方介绍,对于Key和String类型的Value,最大不超过512MB,这个限制显然是没有太大参考意义的。那么究竟有没有一个合理的指标和界限,能够区分出单线程和多线程的网络IO模型的性能呢?以下执行的都是set key value命令。可以看出,Redis6中,使用多线程处理网络IO,并没有实
2020-09-15 22:04:39
602
原创 Java线程池的最大容量是多少?5亿!
在ThreadPoolExecutor中有一个重要的属性ctl,类型为AtomicInteger,本质是作为一个bitmap来使用。其中包含两个域,高3位表示线程池的5中状态(Running、ShutDown、Stop、Tidying、Terminated),低29位表示线程池的数量。因此,理论上,线程池的最大容量位2^29-1=536870911(5亿多)。但是实际生产中我们通常需要指定一个合理的线程池容量,5亿没有什么现实意义。那么如何合理的设置我们的线程池容量呢?在《Java并发编程实践》中提
2020-09-04 19:23:29
2195
原创 关于“粘包”的解答
TCP是面向字节流的协议,TCP保证字节流按顺序到达,并没有“包”的概念。但应用开发中,的确有“粘包”的问题出现,这是因为我们直接在TCP这种字节流协议上开发应用,这里的包是我们应用层的一个消息或一帧数据。对于短连接的TCP服务,不用考虑分包的问题。对于长连接的TCP服务,由于发送方和接收方分别都有发送缓冲区和接收缓冲区,有可能出现类似两个不完整的报文同时暂存在缓冲区中,应用层读取这样的字节流,就会出现“粘包”的错觉。解决“粘包”也很简单,就好比我们在编写基于http协议的程序时不用考虑粘包问题一样,
2020-09-01 13:36:07
371
原创 一文彻底了解Hive
基本概念Hive是基于hadoop的一个数据仓库工具,是一种编程接口,处理结构化数据,将结构化的数据文件映射成表,并提供类SQL查询功能。本质:将HQL转化为MR程序。优缺点:优点:采用类SQL语法,易上手;避免写MR程序,减少学习成本;吞吐量大;支持用户自定义函数缺点:表达能力有限(受限于MR编程模型);调优困难,粒度较粗Hive架构原理Hive安装及配置Hive的安装很简单,解压安装包即可。Hive需要修改的配置:hive-env.sh文件export HADOOP_HOME=
2020-08-10 00:39:20
681
原创 Spark SQL
Spark SQL简介在Hadoop体系中,有Hive可以帮助我们将SQL转换为MR程序,Hive的基本架构如下:Hive的工作流程为因此,我们说Hive在Hadoop体系中扮演的是“编程”的角色,它本身并没有存储数据。同样的,在我们使用Spark时,也很自然的会有这样的需求——通过编写SQL获取结果,避免重复的编写大量Spark程序代码。在初期是,Shark就是扮演这样的角色,因此也被称为“Hive on Spark”。甚至Shark的整体架构和Hive都是类似的,区别是Hive将SQL转换
2020-08-06 19:35:16
350
原创 安装并配置HBase集群(5个节点)
安装并配置HBase集群规划HBase2.3.0安装将安装包拷贝到5台机器上并解压缩配置环境变量配置HBase时间同步修改`/usr/local/src/hbase-2.3.0/conf/hbase-env.sh`文件修改`hbase-site.xml`文件regionservers配置启动hbase验证,访问HBase的web界面之前的分享过使用Paralles Desktop,在虚拟机环境中搭建hadoop集群(2主3从5节点),今天就在这个基础上,再搭建HBase。由于之前安装的Hadoop是2.1
2020-07-30 13:17:12
2522
原创 深入浅出了解HBase及RDD编程
深入浅出了解HBaseHBase简介架构HBase是什么样的数据库?关键是数据模型关键要素:什么是单元格时间戳的功能是什么?HBase为什么能存储海量数据创建一个HBase表配置Spark编写程序读取HBase数据编写程序向HBase写入数据HBase简介HBase是Google BigTable的开源实现,Google公司很多数据如搜索、相册、导航数据都保存在BigTable中,2003年Google发布了该技术后,社区实现了HBase。架构HBase在Hadoop中扮演者数据库的角色,但HB
2020-07-30 09:29:31
682
原创 数据挖掘算法之支持向量机(SVM)(二)
数据挖掘算法之支持向量机(SVM)(二)软间隔分类器简介三级目录在第一篇中我们讲解了线性可分下的硬间隔分类器,但那只是SVM算法的起点。现实中许多问题并不是线性可分的,如果样本不能被完全分开,那么就是:间隔为负,原问题的可行域为空,对偶问题的目标函数无限,这将导致相应的最优化问题无解。今天我们就讲下针对近似线性可分情况下的软间隔优化。软间隔分类器简介在软间隔分类器中,允许存在少量的“噪音数据”,这些样本点被认为是训练错误。具体地说,就是引入松弛变量ξiξ_iξi来量化分类器的违规行为:其中参数
2020-07-23 16:49:40
336
原创 数据挖掘算法之支持向量机(SVM)(一)
支持向量机SVM(一)----硬间隔分类器SVM简介线性可分支持向量机函数间隔和几何间隔间隔最大化凸二次规划SVM简介支持向量机(SVM)是在所有知名数据挖掘算法中最健壮、最准确的方法之一,主要包括支持向量的分类器(SVC)、支持向量回归(SVR)。SVM算法之所以有如此大的影响,是因为该方法有坚实的统计学理论基础。本文将分三篇,由浅入深分别介绍针对线性问题的硬间隔分类器、近似线性问题的软间隔分类器和针对非线性问题的核方法。线性可分支持向量机对于两类线性可分问题,SVC要找到一个最优的决策边界,通
2020-07-18 20:12:18
1258
原创 数据挖掘算法之C4.5
算法描述C4.5算法是机器学习和数据挖掘领域中用于处理分类问题的算法。该算法是有监督学习类型的,即:给定一个数据集,每条记录都由一组特征来描述,每条记录仅属于一个标签,在给定的数据集上运行C4.5算法可以学习到一个从特征值到标签的映射,进而可以使用该映射去分类未知的(无标签)数据集。C4.5算法源于ID3(iterative dichotomizers 3,迭代分解器系列算法的第三代),是一种决策树诱导算法。所有的树诱导方法大都遵循一种递归模式。即,用根结点表示一个给定的数据集;然后,从根结点开始,在
2020-07-17 23:44:25
1094
原创 一文彻底搞懂PCA
一文彻底搞懂PCA简介约定几个符号PCA的应用场景PCA的数学原理数据的向量表示向量的基基变换的矩阵表示协方差矩阵及优化目标方差协方差协方差矩阵协方差矩阵对角化算法及实例实例进一步讨论简介PCA(Principal Component Analysis),即主成分分析,是一种基于线性代数的维归约技术,常用于数据挖掘中对数据的预处理,主要用于解决“维灾难”问题。在阅读本文前,先介绍下文章会涉及到的一些数学理论,这些理论都是PCA技术所依赖的工具或理论基础。向量相关,如转置、内积、正交矩阵相关,如矩
2020-07-16 22:59:58
2562
1
原创 mac 使用vagrant部署hadoop集群
使用虚拟机模拟分布式hadoop集群环境环境准备部署linux集群Vagrantfile修改配置集群间ssh通信hadoop 配置修改环境准备安装vagrant、virtualBox,准备centos7的box文件,hadoop、jdk部署linux集群Vagrantfile其中hostmanager需要使用 vagrant plugin install hostmanager 安装V...
2020-07-15 19:57:13
147
原创 蓄水池抽样算法(Reservoir Sampling)
蓄水池抽样算法(Reservoir Sampling)问题描述问题分析代码实现数学证明问题描述给定一个数据流,数据流长度N很大,且长度不可预知。问如何在仅遍历一次数据的情况下,如何等概率 抽取m个样本。问题分析首先明确概念:等概率抽样是一种抽样方法,是指总体中的每个个体被抽中的概率相等。关键点:N很大且不可预知,故无法一次性读入内存;抽样的时间复杂度为O(N);m个样本,每个样本被选取的概率为m/n;代码实现int[] reservoir = new int[m];//reservo
2020-07-15 14:46:12
619
1
原创 在Hadoop集群中部署Spark
Hadoop环境基于如何搭建Hadoop HA集群准备工作spark-2.4.5-bin-without-hadoop.tgz修改配置spark-env.shexport JAVA_HOME=/usr/local/src/jdk1.8.0_241/export HADOOP_HOME=/usr/local/src/hadoop-2.10.0export SPARK_DIST_CLASSPATH=$(/usr/local/src/hadoop-2.10.0/bin/hadoop clas
2020-05-12 00:46:20
501
原创 Yaml语法
编写docker-compose文件时发现,yaml有格式上的语法要求基本格式要求1,YAML大小写敏感;2,使用缩进代表层级关系;3,缩进只能使用空格,不能使用TAB,不要求空格个数,只需要相同层级左对齐(一般2个或4个空格)贴一个mysql的yml文件version: '3'services:#mysql前必需加空格表示层级 mysql:#相同层级必需左侧对齐 ...
2020-04-15 16:45:44
172
原创 Docker部署kafka
OS中,使用docker部署kafkadocker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka两个镜像分别包含了zookeeper和kafka.编辑docker-compose.yaml配置文件version: '2'services: zookeeper: container_name: zooke...
2020-04-15 13:26:49
150
原创 使用Paralles Desktop,在虚拟机环境中搭建hadoop集群(2主3从5节点)
这里写自定义目录标题准备工作第一步、准备虚拟机环境配置ssh免密登陆欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLow...
2020-04-15 13:26:04
1025
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人