自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Strom完整攻略(一)

前言Strom特点进程常驻内存,数据不经过磁盘,在内存中处理,速度非常快,可以达到毫秒(秒)级别Storm数据传输采用Netty,基于NIO,更加高效,早期采用ZMQ,但是ZMQ和Strom的license不兼容。Storm可靠性异常处理消息可靠性的保证机制ACKStrom和其他框架的对比1.Spark-Streaming 微批处理框...

2019-06-03 10:43:00 925

原创 Lucene的必会的核心知识点

前言Lucene 是一种高性能、可伸缩的信息搜索(IR)库,在 2000 年开源,最初由鼎鼎大名的 Doug Cutting 开发,是基于 Java 实现的高性能的开源项目。Lucene 采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。基本概念在深入解读Lu...

2019-06-02 21:37:00 475

原创 Flume Sink组、Sink处理器

前言Sink运行器(Sink Runner)运行一个Sink组(Sink Group),Sink组可以含有一个或多个Sink。如果组中只存在一个Sink,那么没有组将会更有效率。Sink运行器仅仅是一个询问Sink组(或Sink)来处理下一批事件的线程。每个Sink组有一个Sink处理器(Sink Processor),处理器选择组中的Sink之一去处理...

2019-06-01 19:53:00 902

原创 Flume选择器

前言Channel选择器是决定Source接受的特定事件写入到哪个Channel的组件,他们告诉Channel处理器,然后由其将事件写入到Channel。Agent中各个组件的交互由于Flume不是两阶段提交,事件被写入到一个Channel,然后事件在写入下一个Channel之前提交,如果写入一个Channel出现异常,那么之前已经写入到...

2019-06-01 17:57:00 2375

原创 Flume拦截器-应用与配置

Flume最重要的组件是Source、Channel和Sink,另外,Flume Agent还有一些使Flume更加灵活的组件,如拦截器,Channel选择器,Sink组和Sink选择器。本文将讨论一下拦截器的应用。拦截器拦截器(Interceptor)是简单的插入式组件,设置在Source和Source写入数据的Channel之间,Source接收到...

2019-06-01 16:09:00 1934

原创 Flume Source

Source是负责接收数据到Flume Agent的组件。Source可以从其他系统接收数据。Source也可以用于接受其他Flume Agent的Sink通过RPC发送来的数据。毫不夸张的说,Source可以接受任何来源的数据。Source的基本配置Source像所有的Fluem组件一样,需要在配置文件中指定它的类型,可以是FQCN或者内置Sourc...

2019-05-29 21:18:00 214

原创 hive中distribute by 、sort by 、cluster by 、order by的区别

order by只有一个reduce负责对所有的数据进行排序,若大数据量,则需要较长的时间。建议在小的数据集中使用order by 进行排序。如果设置hive.mapred.mode参数控制Hive执行方式为strict,则order by 则需要指定limit(若有分区还有指定哪个分区) ;若为nostrict,则与关系型数据库差不多。distri...

2019-05-29 19:46:00 655

原创 Flume Agent 内部原理概述

一.概述Flume将数据表示为事件,事件是非常简单的数据结构,具有一个主体和一个报头集合,事件的主体是一个字节数组,通常是是Flume传送过来的负载,抱头被标记为一个map,其中有字符串key和字符串value。报头并不是用来传输数据的,只是为了路由和标记事件的优先级。报头也可以用来给事件增加ID或者UUID。每个事件本质上必须是一个独立的记录,而不是...

2019-05-25 18:53:00 1066

原创 腾讯面试题:一条SQL语句执行很慢的原因有哪些?

这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了。1. 分析问题大多数情况是正常的,知识偶尔的时候会出现很慢的情况。在数据量不变的情况下,这条SQL语句一直以来都执行的很慢2. 数据库在刷新脏页我也无奈啊一条SQL语句执行速度一般情...

2019-05-21 10:15:00 301

原创 Linux系统编程—I/O多路复用

I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪,就是这个文件描述符进行读写操作之前),能够通知程序进行相应的读写操作...

2019-05-18 13:35:00 221

原创 产品经理真正的样子。。。。

产品经理真正的样子。。。。别看同样叫“经理”,但实质上......产品经理并不是管着谁,除了产品部门的新人助理什么的,并没有谁是归你管的。而且,产品经理和产品专员其实是一码事,只是在不同公司的叫法不一样罢了。也有公司用来区分产品部门内的职位等级(比如工作了三年的产品经理和工作一年的产品专员,差在经验上)。也就是,要做好心理准备,实际上,在有些公司,产品经理...

2019-05-18 12:00:00 180

原创 LSM-tree 基本原理及应用

LSM-tree 在 NoSQL 系统里非常常见,基本已经成为必选方案了。今天介绍一下 LSM-tree 的主要思想,再举一个 LevelDB 的例子。转载自:https://kuaibao.qq.com/s/20181105G13VZ000?refer=cp_1026LSM-treeLSM-tree起源于 1996 年的一篇论文《The Log-S...

2019-05-18 10:30:00 991

原创 HBase中Region的分裂和合并问题分析

Region分裂当MemStore的数据超过阈值时,将数据溢写磁盘,生成一个StoreFile文件。当Region中最大Store的大小超过阈值时,Region分裂,等分成两个Region,实现数据访问的负载均衡。新的Region的位置由HMaster来确定在哪个RegionServer中。下面是具体的细节:1.当一个region里的StoreFil...

2019-05-17 08:40:00 3971

原创 HDFS设置BLOCK的目的

先看两个问题...一、在HDFS里面,文件存储为什么要以Block块的方式存储?主要是减少硬盘寻道时间,HDFS设计前提是支持大容量的流式数据操作,所以即使是一般的数据读写操作,涉及到的数据量都是比较大的。假如数据块设置过少,那需要读取的数据块就比较多,由于数据块在硬盘上非连续存储,普通硬盘因为需要移动磁头,所以随机寻址较慢,读越多的数据块就增大了总的...

2019-05-15 21:06:00 566

原创 HDFS是如何保证其可靠性?

数据存储系统,数据存储的可靠性至关重要。HDFS是如何保证其可靠性呢?它主要采用如下机理。1)冗余副本策略即所有数据都有副本,副本的数目可以在hdfs-site.xml中设置相应的复制因子,或者put操作时-D dfs.block.size=2123123,这样的形式指定块的大小。2)副本放置策略即HDFS的“机架感知”,一般在本机架存放一个副本,...

2019-05-15 20:49:00 2944

原创 HBase架构原理

一、什么是HBaseHBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价的PC Server上搭建大规模结构化存储集群。HBase是Google BigTable的开源实现,与Google BigTable利用GFS作为其文件存储系统类似,HBase利用Hadoop HDFS作为其文件存储系统;Google运行M...

2019-05-14 08:51:00 197

原创 HIVE的数据模型

Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:内部表(Table)外部表(External Table)分区(Partition)桶(Bucket)。一.内部表Table 将数据保存到Hive 自己的数据仓库目录中:/usr/hive/warehouse每一个Table在Hive中数据仓库目录下都有一个相应...

2019-05-13 21:36:00 2048

原创 HIVE的架构模型

一.Hive 能做什么,与mapreduce 相比优势在哪里(相对于开发)hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 相对于mapreduce 离线计算需要写很多java代码去实现数据提取,hive可以通过类SQL语句快速实现简...

2019-05-13 20:25:00 661

原创 MapReduce源码分析——ReduceTask流程分析

前言Reduce会从Mapper任务中拉取很多小文件,小文件内部有序,但是整体是没序的,Reduce会合并小文件,然后套个归并算法,变成一个整体有序的文件。Reducer 主要有3个基本的过程:1.Shuffle阶段Reducer会通过网络IO将Mapper端的排序输出给复制过来。2.Sort阶段按key对reducer输入进行排序(因为不同...

2019-05-13 15:17:00 595 1

原创 你要的Chrome插件都在这里了

目录(2019年5月11日更新)040《GitZip for github》从Github批量下载表情包039《Simplify Gmail》让网页版Gmail更清爽038《Alexa Traffic Rank》一键查看网站全球排名037《Saladict》谷歌!有道!我全都要! 聚合词典, 并行翻译036《Screen Shader》把网页调...

2019-05-12 14:52:00 1861

原创 Oracle中物化视图的概念

前言Oracle中的物化视图也是种视图。Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。物化视图可以查询表,视图和其它的物化视图。概念与使用1.物化视图的特点(1) 物化视图在某种意义上说就是一个物理表(而且不仅仅是一个物理表),这通...

2019-05-11 11:51:00 359

原创 HIVE 动态分区的需要注意的问题

问题的引入在hive sql中使用动态分区非常方便,也比较常用,但是在使用的过程中会带来一些问题。比如:在一段sql语句中我需要指定两个字段当做动态分区,一个字段的基数为7,另一个为4,这就是28个分区,当sql语句的最后一个job是一个仅有map阶段的任务,此时如果数据量有4000个map,那么这种情况下map任务在往hive分区中写的时候,每个ma...

2019-05-11 11:29:00 1619

原创 MapReduce源码分析——MapTask流程分析

前言首先要说,MapTask,分为4种,分别是Job-setup Task,Job-cleanup Task,Task-cleanup和Map Task。Job-setup Task、Job-cleanup Task分别是作业运行时启动的第一个任务和最后一个任务,主要工作分别是进行一些作业初始化和收尾工作,比如创建和删除作业临时输出目录;Task-cl...

2019-05-10 08:38:00 431

原创 MapReduce源码分析(二)作业初始化流程分析

在上一篇文章中,我们初步介绍了一个客户端是如何准备一个Job并提交给ResourceManager.在这篇文章中,我们会简单介绍,在YARN端,是如何提交并启动这个Job的.首先,Client会发送ApplicationSubmissionContext以及ContainerLaunchContext到ResourceManager. @Overri...

2019-05-09 08:56:00 261

原创 MapReduce源码分析(一)作业提交流程

前言Mapreduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop的数据分析 应用”的核心框架。Mapreduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 hadoop 集群上。执行流程图一.waitForCompletion在mapreduce程序的job类中...

2019-05-07 21:54:00 427

原创 HDFS中ZKFailoverController的原理探究

自动化failover的引入HDFS中自动化的failover故障转移需要增加两个新的组件:一个是Zookeeper quorum(仲裁),另一个是ZKFailoverController进程(简称ZKFC)。Apache Zookeeper是一个高可用的服务,对于小规模数据协调,通知客户端数据变化,监控客户端失败。自动failover的实现是基于ZK...

2019-05-07 07:53:00 2312

原创 HDFS中的HA原理解析

前言Hadoop2.0之前,NameNode是单个集群的故障点,NameNode作为集群首脑,存放着集群中所有的元数据,一旦节点出错,将导致整个集群不可用。为了解决这个问题,HA(高可用)就被引入了。HA高可用架构图HA中的角色如下1.ZKFCZKFC即ZKFailoverController,作为独立进程存在,负责控制NameNod...

2019-05-06 09:38:00 1654 1

原创 零拷贝(Zero-copy)及其应用详解

目录前言 传统的数据传输方法 零拷贝的数据传输方法 “基础的”零拷贝机制 对Scatter/Gather的支持 对内存映射(mmap)的支持 零拷贝机制的应用 在Kafka中的应用 在Spark中的应用 The End前言这是一个多月之前留下的烂尾文,今天终于想起来了,就补全并且发出来吧。零拷贝(Zero-copy)是一种高效的数据传输机制,在追求低...

2019-05-05 21:37:00 2507

原创 剑指offer刷题(二)

一.重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回public class Solution4 { public class TreeNode {...

2019-05-05 21:14:00 119

原创 剑指offer刷题(一)

一.二维数组的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public static void main(String[] args) ...

2019-05-04 17:44:00 103

原创 【深入浅出Linux】关于mmap的解析

前言看这篇文章之前需要知道一个概念虚拟内存系统通过将虚拟内存分割为称作虚拟页(Virtual Page,VP)大小固定的块,一般情况下,每个虚拟页的大小默认是4096字节。同样的,物理内存也被分割为物理页(Physical Page,PP),也为4096字节。一、mmap基本原理和分类在LINUX中我们可以使用mmap用来在进程虚拟内存地址空间中分...

2019-05-04 12:09:00 1085

原创 Netty中的Option和ChildOption参数解析

前言Netty中的Option和ChildOption的区别:1.Netty中的option主要是设置的ServerChannel的一些选项,而childOption主要是设置的ServerChannel的子Channel的选项。2.如果是在客户端,因为是Bootstrap,只会有option而没有childOption,所以设置的是客户端Chann...

2019-05-04 08:54:00 5941

原创 sql常用知识点1-20

1.limitLIMIT是MySQL内置函数,其作用是用于限制查询结果的条数。1)其语法格式如下:LIMIT[位置偏移量,]行数其中,中括号里面的参数是可选参数,位置偏移量是指MySQL查询分析器要从哪一行开始显示,索引值从0开始,即第一条记录位置偏移量是0,第二条记录的位置偏移量是1,依此类推...,第二个参数为“行数”即指示返回的记录条数。位...

2019-05-03 21:56:00 284

原创 【重温设计模式】JAVA中对观察者模式的支持

前言本文将分为以下三个部分介绍观察者模式1.观察者模式介绍2.观察者模式示例3.Java中的观察者模式一.观察者模式介绍当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。image观...

2019-05-03 21:54:00 315

原创 Netty的重连机制实现

前言Netty心跳重连的代码,需要解决以下几个问题1)ChannelPipeline中的ChannelHandlers的维护,首次连接和重连都需要对ChannelHandlers进行管理2)重连对象的管理,也就是bootstrap对象的管理3)重连机制编写下面是代码实现...一.客户端重连机制主要是在客户端来实现,下面直接上代码public...

2019-05-03 16:53:00 2840

原创 Netty的心跳检测机制源码阅读

一.原理与源码阅读Netty4.0提供了一个类,名为IdleStateHandler,这个类可以对三种类型的心跳检测。.... public IdleStateHandler(int readerIdleTimeSeconds, int writerIdleTimeSeconds, int allIdleTimeSeconds) { ...

2019-05-03 15:44:00 508

原创 Netty的拆包和粘包解决方案

概念TCP是一个“流”协议,所谓流,就是没有界限的一长串二进制数据。TCP作为传输层协议并不不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分,所以在业务上认为是一个完整的包,可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。当数据被TCP拆分成多个包进行发送,...

2019-05-02 21:54:00 1785

原创 使用AIO 完成网络通信

前言jdk7中新增了一些与文件(网络)I/O相关的一些api。这些API被称为NIO.2,或称为AIO(Asynchronous I/O)。AIO最大的一个特性就是异步能力,这种能力对socket与文件I/O都起作用。AIO其实是一种在读写操作结束之前允许进行其他操作的I/O处理。AIO是对JDK1.4中提出的同步非阻塞I/O(NIO)的进一步增强。正...

2019-05-02 18:42:00 494

原创 使用NIO完成网络通信

一.思路首先,整理NIO进行服务端开发的步骤:(1)创建ServerSocketChannel,配置它为非阻塞模式。(2)绑定监听,配置TCP参数,backlog的大小。(3)创建一个独立的I/O线程,用于轮询多路复用器Selector。(4)创建Selector,将之前创建的ServerSocketChannel注册到Selector上,监听S...

2019-05-02 18:08:00 295

原创 NIO中Buffer缓冲区的核心要点

一.buffer缓冲区核心要点我们来看看Buffer缓冲区有什么值得我们注意的地方。Buffer是缓冲区的抽象类:buffer抽象类源码.jpg其中ByteBuffer是用得最多的实现类(在管道中读写字节数据)。buffer实现类.jpg拿到一个缓冲区我们往往会做什么?很简单,就是读取缓冲区的数据/写数据到缓冲区中。所以...

2019-05-02 14:50:00 193

空空如也

空空如也

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

TA关注的人

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