自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

04stone37

日积月累

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

原创 HDFS数据副本

背景知识位于不同机柜的两台机器进行通信,需要通过交换机路由,增加延时;相同机柜内的网络带宽是要高于机柜间的带宽;整个机柜故障的概率远低于单台机器; Communication between two nodes in different racks has to go through switches. In most cases, network bandwidth betw...

2018-08-30 23:26:34 1103

原创 HDFS架构

HDFS介绍HDFS是Hadoop的分布式文件系统,具有高吞吐高容错性等特点,具体如下:集群容错性好:HDFS设计之初,就考虑到集群规模变大出现硬件故障的概率就会变大的事实,通过数据的备份机制来提升集群容错性;高吞吐量:主要原因有两个,一方面,设计之初就提倡批处理;另一方面,简化了数据一致性模型,一个文件一旦经过创建、写入和关闭后,就不需要修改了;HDFS架构Dat...

2018-08-30 17:09:16 142

原创 Hadoop介绍

狭义Hadoop狭义上,Hadoop是一个分布式计算框架,主要包括以下四个模块:Hadoop Common: 通用工具类模块;HDFS: 分布式文件系统模块;YARN: 子群资源管理模块;MapReduce: 数据批处理计算框架;      广义Hadoop广义上,Hadoop是指大数据生态,如下图所示: Flume:海量日志收集系统;Sqoop:数据导入导...

2018-08-30 11:00:44 239

原创 结构化数据、半结构化数据和非结构化数据

按照结构化程度,大数据可以被分为三大类:结构化数据(Structured Data);半结构数据(Semi-structured Data);非结构化数据(Unstructured Data);结构化数据半结构化数据非结构化数据参考:https://www.w3trainingschool.com/structured-semi-structured-un...

2018-08-28 18:53:52 8264

原创 IaaS、 PaaS 和 SaaS

  当前的云计算服务主要分为三个层次:IaaS、 PaaS 和 SaaS。 IaaS  IaaS(Infrastructure-as-a-Service) ,硬件层面的基础设施服务,为用户提供服务器(物理机或虚拟机)、存储、网络和防火墙等最底层硬件资源;PaaS   PaaS(Platform-as-a-Service) ,软件层面的基础设施服务,为用户提供操作系统、编程语言运行...

2018-08-27 11:53:02 334

原创 HBase --- RegionServer组件

RegionServerRegionServer组件主要分为4部分:WAL: HDFS上日志文件,存储还未持久化到HFile的数据,以及MemStore的恢复,每个RegionServer有一个WAL,被所有Region共享; BlockCache: 读缓存,存储被打开的HFile的索引结构,使用LRU策略;MemStore: 写缓存,存储还未持久化到HFile的最新写数据,每个Re...

2018-08-24 16:49:35 537

原创 HBase --- 故障恢复

数据备份  HBase依赖HDFS的备份机制进行备份容灾,如下图所示:    故障检测和恢复检测:Zookeeper通过心跳检测RegionServer是否存活;恢复:HMaster监听到Zookeeper的通知后,开启恢复流程;恢复流程按照负载均衡策略重新分配Region;按照Region维度拆分WAL;按照拆分后的日志重构Region数据; 参考:...

2018-08-24 11:19:53 756

原创 HBase --- 读写流程(二)

Read Merge背景  随着时间的推移, MemStore会产生众多HFile文件,一方面需要对文件数量进行控制,防止资源浪费和耗尽;另一方面,需要对文件的数据进行合并,以提升读性能;     Minor Compaction  Minor Compaction是指将众多小的HFile文件合并成为若干较大的HFile文件,如下图所示:    优点:IO消耗小;缺...

2018-08-24 09:59:36 446

原创 HBase --- 读写流程(一)

整体流程读写流程主要分为两大部分:Client从MetaTable路由到Region所在的Region Server;Client直接与对应的Region Server进行交互;    路由表MetaTable  MetaTable存储Region与Region Server的对应关系,其结构如下所示: 路由表的获取时机  Client 首次读写时会首先从Zoo...

2018-08-23 17:39:29 628

原创 HBase --- 架构组成

整体架构    HMaster  主要负责HRegionServer的协调管理及Table的DDL操作(新增、更新和删除),HRegionServer的管理包含两方面:监控HRegionServer的运行状态(从ZK接受通知);Region的分配(HRegionServer扩容、宕机及负载均衡等情况);ZookeeperHMaster的HA解决方案(主备切换、M...

2018-08-23 15:40:53 266

原创 HBase --- 数据模型(二)

逻辑表与物理存储一张逻辑表被水平拆分成多个Region,存储在不同的RegionServer上,如下图所示:   每个Region按CF维度进行垂直拆分,每个CF对应多个HFile(LSM树原因),存储在HDFS上,如下图所示:  参考:https://mapr.com/blog/hbase-and-mapr-db-designed-distribution-scale-...

2018-08-23 12:33:59 143

原创 HBase介绍

出现背景  传统的关系型数据库适用于OLTP类业务,但是存储容容量和计算能力无法任意水平扩展,不适合于大数据场景;HBase介绍  HBase是构建于Hadoop之上的NoSQL数据库,具有分布式、易扩展和高性能特点;特点1:分布式  逻辑上一张BigTable被水平拆分成多个Region,分布在多台机器上,如下图所示:     特点2:易扩展只需添加Regio...

2018-08-23 11:43:48 344

转载 LSM树

背景知识无论是机械硬盘还是固态硬盘,顺序操作要比随机操作快,相差大约三个数量级;当代数据存储引擎主要基于两类数据结构:B+树和LSM树。传统的SQL数据库,如MySQL、Oracle等主要基于B+树;当前流行的HBase,Cassandra,LevelDB等NoSQL数据库的核心存储引擎都是基于LSM树的思想发展而来的。LSM树思想  牺牲部分读性能,提升写性能,将随机写转换...

2018-08-21 15:43:40 803

原创 B+树优缺点

优点单次请求涉及的磁盘IO次数少(出度d大,且非叶子节点不包含表数据,树的高度小);查询效率稳定(任何关键字的查询必须走从根结点到叶子结点,查询路径长度相同);遍历效率高(从符合条件的某个叶子节点开始遍历即可); 在B+树中, 由于底层的各个叶子节点都通过指针组织成一个双向链表, 结构如下图所示。 因此,只需要从跟节点到叶子节点定位到第一个满足条件的Key, 然后不断在叶子节点...

2018-08-21 10:47:45 20707

原创 机械硬盘和固态硬盘

机械硬盘HDD VS 固态硬盘SSD  总结: SSD具有速度快、功耗低等优点,但是成本高,容量受限;HDD具有成本低、容量大等优点,但是速度慢、功耗大,各项具体比较如下图所示: 固态硬盘SSD  固态硬盘没有机械装置,数据存储在可持久记忆的硅晶体上,因此可以像内存一样快速随机访问。但同时,很多针对机械硬盘的优化算法换成SSD将会失效。参考:https://www....

2018-08-20 15:33:01 1286

原创 HBase --- 数据模型(一)

数据模型Row每行被RowKey(行键)唯一标识;行按照RowKey的排序结果(字母顺序)进行存储; A row in HBase consists of a row key and one or more columns with values associated with them. Rows are sorted alphabetically by the row...

2018-08-20 09:49:57 441

原创 Hive --- 表类型

Managed Table(内部表/管理表)管理表有如下特点:表数据存储在管理表的存储目录下;删除管理表时,元数据和表数据都会被删除;External Table(外部表)Partitioned Table(分区表)...

2018-08-17 18:01:08 1109

原创 Hive --- 安装模式

嵌入模式  Hive使用自带的Derby存储元数据,这种模式只允许建立一个连接,主要用于Demo场景;本地模式  Hive使用部署在同一台物理机上的MySQL、Oracle等存储元数据,主要用于开发和测试;远程模式  Hive使用部署在其它台物理机上的MySQL、Oracle等存储元数据,主要用于线上环境;参考:https://blog.csdn.net/Dax1n/...

2018-08-17 14:53:24 263

原创 Hive --- 体系结构

体系结构元数据是什么?  元数据包括表信息(存储位置、属性及分区信息等)、列信息等;存储位置  元数据一般存储在关系型数据库中,如MySQL及默认的Derby等;HQL语句执行过程...

2018-08-17 11:51:29 178

原创 Hive --- 整体介绍

Hive简介  Hive可看作一款数据仓库软件,使用者可通过类SQL的命令查询统计,极大提升了Hadoop易用性,使用者不再需要编写提交MR任务。 The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distribu...

2018-08-16 11:30:13 1236

原创 转账方案设计

数据一致性方案方案1A业务处理和消息发送在同一个本地事务中执行,执行完成后本地消息表中有条status=0记录;B收到消息后,在同一个事务中进行业务处理和消息发送(返回响应);如果B处理失败,由Broker进行失败重试;A收到响应消息后更新对应的消息状态为1;A端本地会启动定时任务,定时扫描状态为0的消息,发出告警,甚至进一步可以执行数据补偿操作;方案2A业务...

2018-08-09 15:36:43 1330

原创 PoolArena

数据结构分配过程首先,对要请求的容量进行规整化;如果是tiny\small\normal类型的容量,优先使用线程中缓存的空间,若无法分配再从PoolArena分配;如果是huge类型的容量,PoolArena不再支持,需要从JVM中申请空间;参考:https://gsmtoday.github.io/2017/09/03/netty-memory-pool-md/...

2018-08-08 16:12:15 220

转载 PoolChunk

转载:https://gsmtoday.github.io/2017/08/27/poolchunk/数据结构  PoolChunk逻辑上是一颗完全平衡二叉树,代码实现上用数组表示,如下所示: 初始化逻辑  数组下标表示二叉树中各节点的编号id,数组元素内容表示当前节点可分配内存的子节点(即未分配)在二叉树中的深度,如下所示: memoryMap = new...

2018-08-08 12:02:31 176

原创 PooledByteBufAllocator

作用  池化的ByteBuf分配器,提供统一的ByteBuf分配服务;内存分配算法:jemallocPooledByteBufAllocator采用了jemalloc内存分配算法,大致思想如下:为了降低锁竞争,将池化空间划分为多个PoolArena,每个线程按照负载均衡算法绑定到特定的PoolArena;为了进一步降低同一个PoolArena不同线程间的锁竞争,每个线程内部增加...

2018-08-07 19:30:49 1449

原创 PoolThreadCache

缓存构成  PoolThreadCache的缓存由三部分构成:tiny、small 和 normal。tiny  缓存数据大小区间为[16B, 496B]数据,数组长度为32,根据数据大小计算索引的办法:数据大小除以16,如下代码所示:static int tinyIdx(int normCapacity) { return normCapacity >&gt...

2018-08-07 17:18:09 365

原创 JVM停顿

JVM停顿  JVM在运行过程中,许多事件都可能造成Stop The World,常见的有GC、JIT、取消偏向锁(RevokeBias)、RedefineClasses(AOP)等等,其中GC停顿对应用程序的影响最大。排查手段将JVM停顿时间输出到GC日志中:-XX:+PrintGCApplicationStoppedTime;将JVM停顿原因输出到GC日志中:-XX:+Pr...

2018-08-02 14:51:22 615

原创 GC日志打印优化

问题描述  通常我们会设定JVM参数-Xloggc:xxx来指定GC日志文件路径,但是这个日志文件会不断累加,直至进程重启被重新覆盖。因此,对于线上长期运行的应用,输出GC日志性能可能会下降,进而造成JVM停顿,请求RT变大。解决方案:滚动输出打开GC日志滚动记录功能:-XX:+UseGCLogFileRotation;设置滚动日志文件大小:-XX:GCLogFileSize=...

2018-08-02 11:55:09 1867

原创 如何合理地估算线程池大小?

整体思路首先,确定线程池要执行任务的性质:CPU密集型或者IO密集型;如果是CPU密集型,说明请求的处理比较占用CPU资源,瓶颈在于CPU,增加线程数作用不大;如果是IO密集型,说明请求的处理占用IO资源,CPU比较空闲,此时应该合理地增加线程数;实际操作Step1:预估初始大小 Step2:调整初始大小  根据压测目标,对初始值进行调整,得到最佳的性能指标。...

2018-08-01 11:31:57 1100

空空如也

空空如也

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

TA关注的人

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