自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

尹忠政的博客

学无止境

  • 博客(102)
  • 收藏
  • 关注

原创 HDFS源码-写数据流程

HDFS源码-写数据流程hadoop版本:2.7.0文章目录HDFS源码-写数据流程前言一、整体写流程二、使用步骤1.引入库2.读入数据总结前言这里主要分析HDFS的写数据流程,包括客户端、输出流包装类对象、chunk、packet、pipeline、dataqueue、ackqueue等概念内容比较多,慢慢一点点的分析。这里我以copyToLocalFile()方法为例来通过源码整体分析HDFS的写数据流程。一、整体写流程示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据

2021-12-09 19:14:47 550

原创 HDFS源码-DataNode启动流程

HDFS源码-DataNode启动流程文章目录HDFS源码-DataNode启动流程前言一、DataNode启动1、相关类2、重点代码二、DN注册流程1、BPServiceActor的创建三、总结前言DataNode是HDFS中主要扮演者数据存储管理的角色,主要辅助Block快的存储和读写,以及上报Block快信息至NameNode节点,同事对NameNode发出的指令做出响应,比如缓存、删除、迁移、复制等。还接收客户端的请求,提供Block的读写请求,同也与其他DataNode进行通信,比如写数据

2021-11-25 16:31:20 1493

原创 HDFS-源码NameNode启动(含安全模式)

HDFS-源码NameNode启动(含安全模式)上一篇总结了HDFS的RPC机制,那么本篇主要是来总结NN的启动,启动流程如下忽略细节,抓住重点,那么从上图可以发现NN的启动伴随着如下时间的发生hdfs web服务启动NN文件系统被加载,初始化工作rpcServer 被创建namesystem 被启动rpcServer 启动在namesystem.startCommonServices()被调用的时候会进行安全检查首先就是检查NN目录是否满足系统要求文件夹最小存储空间为100M

2021-11-16 00:14:33 361

原创 HDFS-源码深度分析RPC机制

HDFS-源码深度分析RPC机制一个分布式系统最重要的组件之一就是RPC协议,如何构建一套高性能的RPC协议就显得非常重要了,那么来看看HDFS的RPC协议是如何构建的吧。1.原理剖析部分通信流程HDFS的RPC协议的序列化协议分为两种,第一种是Writerable,一种是Protobuf,前者是HDFS是HDFS自定义的,也是默认的序列化协议,要用Protobuf需要将参数进行包装和响应进行解析为接口返回的类型。本篇主要研究Protobuf协议,Writerable其实也是囊括在内的。简要流程

2021-11-14 15:28:00 1223

原创 IO-深入理解零拷贝

深入理解零拷贝文章目录深入理解零拷贝定义DMA(Driect Memory Access)传统的文件读写如何提高吞吐量?mmapsendfilePageCache总结定义全程由DMA进行数据搬运,CPU不再参与任何与数据搬运相关的事情,提高系统的吞吐量DMA(Driect Memory Access)负责IO设备和内存的数据交换无DMA有DMA传统的文件读写read(file,buf,len)write(socket,buf,len)流程图注:每一次系统调用

2021-11-11 16:34:08 698

原创 深入理解IO(BIO/NIO/IO Multiplexing/SGIO/AIO)

深入理解IO操作系统层面内核空间操作系统为了保证内核安全,将资源(虚拟内存)划分为内核空间和用户空间,内核模块运行在内核空间,称为内核态;用户程序运行在用户空间称为用户态。内核空间总是常驻内存的,内核空间的模可以访问受保护的内核空间,也有访问底层硬件设备的权限。用户空间用户空间的应用程序是不允许直接访问内核空间的,比如读写。也不允许直接调用内核代码定义的函数。每个应用程序都拥有单独的用户空间,对应的状态为用户态。区别内核进程可以执行任意命令,可以调用系统一切资源。用户进程只能进行简单的计算,不

2021-11-09 17:29:35 749

原创 HDFS-ClientProtocol的客户端执行过程详解

HDFS-ClientProtocol的客户端执行过程详解

2021-11-05 18:14:07 155

原创 细节图解HDFS-读流程

图解HDFS-读流程说明在open的时候,客户端会去执行步骤2去获取起始位置的LocatedBlocks,getLocatedBlocks(src, start, dfsClientConf.prefetchSize),第三个参数是表示数据长度,默认是10 * defaultBlockSize,既1280M。在大多数情况下,无需请求步骤5,每一次定位block时只需要走第一次缓存的LocatedBlocks即可。当读取的offset大于缓存的LocatedBlocks的fileLength的时候,这

2021-11-03 23:07:11 1289

原创 源码解析-HDFS读流程

2021-11-02 01:42:57 126

原创 OOZIE-任务假死分析与解决

OOZIE-任务假死分析与解决问题描述提交的job,所有的workflow都出现了假死的状态,查看日志,全是oozie输出的heart beat 心跳日志。yarn fair 调度器资源也被打满分析问题首先网上查了下资料,这里就不赘言了,全是说资源不足,那么在我看来,我这边的集群资源,container内存是给够了的,所以就不考虑了。仔细观察,oozie一个action是分为两部分的,launcher和action,oozie所有的action都会提交一个mr作业,在作业中提交相应的act

2021-10-28 00:32:32 283

原创 源码解析-HDFS副本放置策略

源码解析-HDFS副本放置策略重点类DistributedFileSystem create()DataStreamerBlockManager chooseTarget4NewBlock()BlockPlacementPolicyDefault chooseTarget()BlockPlacementPolicyDefault chooseTargetInOrder()hadoop-version:3.4.0-SNAPSHOT剖析点通过FileSystem.newInstance(

2021-10-27 01:33:22 324 2

原创 一篇文章了解HDFS名称空间NameSpace

一篇文章了解HDFS名称空间NameSpace文章目录一篇文章了解HDFS名称空间NameSpaceNamespace(名称空间)文件结构文件系统元数据(第一行)imgVersionnumFilesgenStamp目录元数据pathreplicasmtimeatimeblocksiznsQuotadsQuotausernamegroupperm文件元数据(包含目录元数据)blockidnumBytesgenStampFSImageEditsBlocksMap数据结构原理LightWeightGSet构造方

2021-10-24 16:08:58 6313

原创 hive UDAF 求轨迹

hive UDAF 求轨迹需求 :需要求用户的行动轨迹,例如:uidlocation_idtime00112021-10-01 12:21:2100122021-10-01 12:22:2100212021-10-01 09:23:2100112021-10-01 11:24:2100112021-10-01 12:25:2100122021-10-01 12:26:2100122021-10-01 01:26:21

2021-10-17 18:40:33 147

原创 水塘抽样解析(详细)

水塘抽样解析什么是水塘抽样(参考百度百科)水塘抽样是一系列的随机算法,其目的在于从包含n个项目的集合S中选取k个样本,其中n为一很大或未知的数量,尤其适用于不能把所有n个项目都存放到内存的情况。最常见例子为[Jeffrey Vitter](https://baike.baidu.com/item/Jeffrey Vitter)在其论文中所提及的算法R。算法步骤(参考百度百科)参照Dictionaryof Algorithms and Data Structures所载的O(n)算法,包含以下步骤(假

2021-09-24 00:33:52 310

原创 Flume自定义clickhouse sink

Flume自定义clickhouse sinkCommonConf.javapackage com.tbl.flume.conf;public class CommonConf { public static final String TIME_FIELD = "time_field"; public static final String TOPIC = "topic"; public static final String TOPIC_PREFIX = "topic_pr

2021-09-18 17:51:23 472

原创 Flume 采集配置

Flum 采集配置安装使用CDH安装存在的问题Timed out before HDFS call was made. Your hdfs.callTimeout might be set too low or HDFS calls are taking too long.增加hdfs的超时时间 tier1.sinks.ods_hdfs_sink.hdfs.callTimeoutChannelFullException: Space for commit to queue couldn

2021-09-18 17:50:07 160

原创 Oozie开发记录

oozie开发文档文章目录oozie开发文档总结oozie开放文档设置时区,cdh修改 oozie-site.xmloozie.processing.timezoneGMT+0800oozie通过cdh方式部署时,oozie的依赖没有上传至hdfs,需要我们手动上传cd /opt/cloudera/parcels/CDH/lib/oozie/oozie-sharelib-yarnsu hdfshdfs -dfs -mkdir -p /user/oozie/share/hdfs

2021-09-16 23:12:08 112

原创 clickhouse运维探索之ckman

clickhouse Manager(Ckman) 部署文章目录clickhouse Manager(Ckman) 部署环境准备安装ckman安装go安装git安装prometheus安装node_exporter安装zookeeper配置prometheus安装ckman编译创建clickhouse集群导入版本包创建集群管理集群总结环境准备关闭防火墙systemctl stop firewalld.servicesystemctl disable firewalld.servicesys

2021-09-07 19:29:17 3362 1

原创 spark介绍

spark介绍spark是由加州伯克利大学的AMP实验室开发的一个通用的并行计算框架,2009年发布,2010年开源,是一个针对大规模数据处理的通用的分析引擎。spark也是基于map&reduce算法实现的一个分布式计算框架。速度从官网的介绍可以看出,spark的速度是mapreduce的100倍以上,即使是使用纯磁盘存储,速度也是mapreduce的10倍以上。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dunKftOJ-1598717040897)(C

2020-08-30 00:04:44 439

原创 Spark CmbineByKey之自定义key 源码解析

文章目录Spark CmbineByKey之自定义key 源码解析简要分析AppendOnlyMap结论测试总结Spark CmbineByKey之自定义key 源码解析习惯了MapReduce,对于自定义对象作为Key的情况太常见了,这里就对于Spark的CmbineByKey来进行分析,怎样实现自定义Key,无论书MR还是CmbineByKey的核心思想都是相同的key为一组.简要分析AppendOnlyMapAppendOnlyMap // Holds keys and values in

2020-07-12 00:31:22 370

原创 MapReduce源码分析(一)

文章目录MapReduce源码分析提交计算切片读取LineRecordReader总结MapReduce源码分析忙碌中,补充一下之前阅读源码的过程,以及MapReduce如何保证读取文件的逻辑完整性的问题。提交waitForCompletion()=>submit()->submitJobInternal(){ int maps = writeSplits(job, submitJobDir) => writeNewSplits() =>

2020-07-08 00:29:03 214

原创 Hbase高性能分页

Hbase高性能分页前言实现HbasePagePartitionHbaseQueryConsumSettingByPageHbasePageHelperHbaseQueryHelper总结前言hbase分页要做到像mysql分页一样比较困难,但是我们可以只提供上一页和下一页的方式来实现高性能的Hbase分页。这里的分页借助了PageFilter,但是不仅仅只是依赖于它,PageFilter的分...

2019-12-16 16:42:16 4572 12

原创 Hbase查询Scan优化和Row设计策略

Hbase查询Scan优化和Row设计策略Hbase查询Scan优化和Row设计策略前言分区号设计时间因素java查询代码总结Hbase查询Scan优化和Row设计策略好久没有分享工作和学习经验了,工作太忙,好多学习计划都落下了,后面得加油了,本次就分享下在项目中运用的Hbase查询和RowKey设计相关的东西。前言startKey和stopKey,scan中我建议必须要设置,限制扫描的...

2019-12-15 00:06:23 904

原创 MapReduce实现分词和倒排索引(算法TF-IDF)

MapReduce实现分词和倒排索引(算法TF-IDF)介绍IFDF IF:词频(单词在文档中出现的次数/文档中的总词数) DF:逆向文件频率(log(文档总数/出现该单词的文件数量)),log归一化,避免了一些常用词如 的,了等词的评分 IF/DF能表明单词在索引(文档库)的重要程度输入文件id \t 文本内容3823891101582094 我爱中国3823891201582...

2019-06-02 16:25:24 1073

原创 hadoop搭建(centOS 7 hadoop 2.7.2)

#hadoop搭建(centOS 7 hadoop 2.7.2)伪分布式版本修改主机名新增用户 groupadd hadoop useradd hd -g hadoop -p xxxxxxxx SSH cd ~ cd .ssh/ ssh-kengen -t rsa ssh-copy-id 其他机器的id 测试 ...

2019-04-09 16:46:50 144

原创 Canal的坑你遇到了多少,全在这儿呢

Canal的坑你遇到了多少,全在这里呢修改mysql字符集#在[client]段增加下面代码 default-character-set=utf8#在[mysql]段增加下面的代码 character-set-server=utf8 #在[mysqld]段增加下面的代码character-set-server=utf8init_connect='S...

2019-03-08 00:19:23 13806 9

原创 Linux(CentOs7)Mysql(5.6+)的安装的坑

Linux(CentOs7)Mysql的安装在整canal的时候折腾 了半天,最后还是5.5的mysql做了升级,摊牌了。。。卸载之前的mysql1.查看mysql的rpm包rpm -qa | grep -i mysql2.停止mysql服务service mysql stop3.卸载rpmrpm -ev MySQL-devel-5.6.23-1.linux_glibc2.5...

2019-03-08 00:18:14 313

原创 elasticsearch及相关插件安装

elasticsearch相关安装elasticsearch安装下载es包新建用户 groupadd es useradd es -g es -p xxx chown -R es:es 你的es目录su es 如果出现用户创建不成功 mkdir /home/es cp /etc/skel/.bash_logout /home/es/...

2019-03-05 23:29:16 1715

原创 elasticsearch-部分匹配

elasticsearch-部分匹配参考文章:https://www.elastic.co/guide/cn/elasticsearch/guide/current/scoring-theory.html短语匹配一个被认定为和短语 quick brown fox 匹配的文档,必须满足以下这些要求:quick 、 brown 和 fox 需要全部出现在域中。brown 的位置应该比 q...

2019-03-05 11:34:26 1454

原创 elasticsearch你懂的,为了搜索

elasticsearch你懂的,为了搜索文章目录elasticsearch你懂的,为了搜索elasticsearch搜索中两种操作精确查询term 基于词项的查询精确相等返回查询is null and is not null缓存全文搜索提高精度查询组合控制精度bool和match提高权重搜索文本的分析器索引模板相关度多字段文本搜索最佳字段dis_max调优多数字段跨字段跨字段解决方案编辑自定义...

2019-03-03 22:15:49 186

原创 elasticsearch内部原理

elasticsearch内部原理参考文章https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.htmlelasticsearch的近实时搜索此项在索引文档中出现的统计表TermDoc 1Doc 2Doc 3…brownXX…foxXXX…quickXX...

2019-03-03 13:05:25 166

原创 elasticsearch-基础篇

elasticsearch学习-基础篇以下内容全部是来自https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html乐观并发控制通过version字段来解决更新丢失的问题PUT /es_test/employee/2?version=2{ "first_name": "John2", "last_...

2019-03-02 22:02:31 223

原创 nio-深入理解Selector

nio-深入理解Selector概述Selector提供了询问注册在其上的所有Channel是够已经准备好执行I/O操作的能力。假如你设计,如何实现Channel托管?通过生产者/消费者的思想或者说是wait/notify的思路。首先需要集中管理Socket对象,分配一个或者多个线程去处理I/O操作,这些线程处于激活等待状态,当有新的远程客户端连接或者远程客户端的发送数据至服务端,这个时...

2019-01-21 21:52:11 287

原创 nio-很详细很深入的Buffer笔记

nio-Buffer笔记文章目录nio-Buffer笔记Buffer属性ByteBuffer(重要)基本数据类型字节字节顺序(字节在内存中保存的顺序)ByteOrderByteBuffer.order(ByteOrder order)直接缓冲区(DirectBuffer)视图缓冲区数据元素视图总结github地址Buffer属性mark:一个标记值,和reset()方法配合使用,将pos...

2019-01-17 17:33:54 217

原创 IO-nio原生实现聊天室

IO-nio原生实现聊天室概述公司使用了netty框架做了一个在线通讯的基础框架,客户需要在线同同事进行交流,在这里我通过原生NIO api做了一个简易的聊天框架。中间遇到了很多问题,好在最后都解决了。在这里做一次记录,望共勉。调用图调用顺序注意:Selector只能管理非阻塞的ChannelServerSocketChannel开启Socket监听服务创建一个Selecto...

2019-01-15 21:58:57 226

原创 IO-BIO聊天室升级版

IO-BIOl聊天室升级版存在的问题当处理线程池达到最大线程的时候,那么后面的客户端将无法发送消息,这个是致命的。新思路该架构的优点解决了之前版本在线程池达到最大线程数的时候,服务端将不能在处理新加入的客户端,除非客户端掉线,线程才有机会去处理。该版本支持大规模的客户端在线服务。通过接管了客户端input监听,能更好控制线程数,维持机器的良好新能,可控。项目架构Serve...

2019-01-13 17:19:31 225

原创 IO-BIO实现聊天室

IO-BIO实现聊天室(Socket全双工)概述本次实现的是一个聊天室,使用的是TCP/IP协议,使用自定义传输协议。多个客户端连接上服务端,客户端发送消息到服务端,服务端将客户端加入到客户端队列,通过loop队列,向所有的客户端转发消息。此处转发为同步转发,意味着先加入的客户端将优先收到消息。当客户端离线的时候,服务端将从队列中移除,并且终止针对该客户端的轮询。流程图服务端获取客...

2019-01-12 21:26:45 643

原创 dubbo分布式项目架构组建-rxcq

分布式项目rxcq 架子闲聊分布式分布式架构,我的理解是,大的逻辑是将应用按照模块进行拆分,如果某个模块的某个点热度比较高,可以考虑将此功能拆出来,单独部提高吞吐量分布式架构实现了业务和api接口的分离,通过dubbo实现RPC通信,API不在参与具体业务。3.通过使用消息队列组建来解耦可被异步调用的一些业务,如验证码相关,邮件相关、用户积分相关、推送相关、日志相关等一些可以异步的操...

2019-01-09 16:27:32 335

原创 Dubbo源码解析-bean的创建和服务暴露

Dubbo源码解析-bean的创建和服务暴露项目中使用了dubbo有一段时间了,以前公司项目是ssm架构的单体应用,目前由于项目模块不断增长,开发迭代需要加快的前提下,参与了公司的项目改造,在dubbo和springCloud的权衡后还是选择了dubbo。dubbo bean加载过程dubbo利用spring中schema扩展编写schema扩展文件(xsd文件)在classpa...

2019-01-06 12:11:23 298

原创 java并发-CountDownLatch和CyclicBarrier源码解析

CountDownLatch和CyclicBarrier在看Curator的时候,看到了分布式屏障的设计,所以回头仔细看看Jdk的CyclicBarrier实现思路。这里CountDownLatch和CyclicBarrier的作用有点类似,就一并分析了。CountDownLatch特点是一个原子递减操作,当计数器为0的时候,所有等待的线程将释放,阻塞状态将打开。只能使用一次,...

2019-01-03 21:59:03 211

空空如也

空空如也

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

TA关注的人

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