![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 79
MrTitan
这个作者很懒,什么都没留下…
展开
-
HBase 0.1.0 数据存储基本结构详解
首先,还是拿出一张Hbase自带的结构图:HBase采用了LSM-Tree来解决数据存储问题。其中有几个核心数据结构:HRegion:一个独立的数据存储单元。存储从startkey-endkey的所有数据。HRegion中会根据每个columnfamily生成一个HStore对象HStore:存储了hbase中每个columnfamily的数据记录。数据结构上主要包括一个Memst原创 2012-12-02 18:26:26 · 1506 阅读 · 0 评论 -
Hadoop启动脚本全解析,不能再全了![bed]
在工作过程中,经常需要调整一些hadoop的参数配置,所以经常会遇到各种各样的问题。比如改了个配置怎么突然namenode起不来啦,加了个jar包怎么让hadoop的jvm加载啊,如何设定log目录啦等等,每次都需要仔细的查一遍启动脚本才能找到原因,费时又费力,因此专门总结了一下以便不时之需。 cloudera的hadoop的启动脚本写的异常复杂和零散,各种shell脚本分散在系统的各个角原创 2013-06-17 23:34:23 · 11228 阅读 · 0 评论 -
hadoop hbase metric名全解释
和同事花了1天时间把hadoop和hbase的所有metric全部解释了一遍,记录一下:系统参数监控metricsload_one 每分钟的系统平均负载load_fifteen 每15分钟的系统平均负载load_five 每5分钟的系统平均负载boottime 系统原创 2013-05-28 15:29:49 · 11494 阅读 · 6 评论 -
hadoop核心逻辑shuffle代码分析-map端
首先要推荐一下:http://www.alidata.org/archives/1470阿里的大牛在上面的文章中比较详细的介绍了shuffle过程中mapper和reduce的每个过程,强烈推荐先读一下。 不过,上文没有写明一些实现的细节,比如:spill的过程,mapper生成文件的partition是怎么做的等等,相信有很多人跟我一样在看了上面的文章后还是有很多疑问,我也是带着疑问原创 2013-03-24 21:01:30 · 4172 阅读 · 3 评论 -
实时系统HBase读写优化--大量写入无障碍
在使用hbase过程中发现在写入hbase的数据量很大时,经常发生写不进去的情况。而我们基于hbase的应用是对实时性要求很高的,一旦hbase不能读写则会大大影响系统的使用。下面将记录hbase写优化的过程。1.禁止Major Compaction在hbase进行Major Compaction时,该region将合并所有的storefile,因此整个region都不可读,所有对原创 2013-03-11 18:14:00 · 19226 阅读 · 6 评论 -
hadoop 4.1.0 cdh4读文件源码分析
上篇文章分析了hadoop写文件的流程,既然明白了文件是怎么写入的,再来理解读就顺畅一些了。 同样的,本文主要探讨客户端的实现,同样的,我依然推荐读一下http://www.cnblogs.com/duguguiyu/archive/2009/02/22/1396034.html,读文件的大致流程如下:不论是文件读取,还是文件的写入,主控服务器扮演的都是中介的角色。客户端把自己的需原创 2013-02-16 23:40:32 · 2619 阅读 · 1 评论 -
Hadoop 2.1.0-cdh4写文件源码分析
本文将剖析写入hadoop的java接口是如何实现的写入文件的。本文不会重点剖析namenode和datanode段是如何处理,而是专注在客户端的处理上。 背景知识:简单介绍写文件client-namenode-datanode流程(单纯了解hadoop此文足矣。。。):http://www.cnblogs.com/duguguiyu/archive/2009/02/22/1396034.原创 2013-02-10 17:29:37 · 2837 阅读 · 1 评论 -
如何设置hadoop hbase的Log Appender
要想很好的监控hadoop集群的状态,hadoop打印的log是很重要的。我们的思路是使用部门研发的log appender将hadoop的数据append到我们自己的central logging数据库中(其实就是存在hbase中)。说起来简单,实际操作起来也花了一天多的时间,下面记录下整个过程。首先要明确hadoop使用的log机制。hadoop使用了slf4j,log原创 2013-02-06 20:02:15 · 5369 阅读 · 2 评论 -
hadoop 0.1.0版本namenode代码分析
在对hbase有了一点了解后最近开始学习hadoop的相关源码,首先看了下某高人的hadoop源码分析系列http://caibinbupt.iteye.com/blog/monthblog/2008-11,看了三十几篇停了,有些看不懂,虽然代码解释的比较细但类实在太多,想一下子理清思路比较难。果断使用学习hbase时的方法,把hadoop最原始的化石版本0.1.0搞来看看,本文将介绍nameno原创 2013-02-04 23:29:04 · 1195 阅读 · 0 评论 -
从MergeSort看HBase 二
接着前一篇 从MergeSort看HBase 一:http://blog.csdn.net/mrtitan/article/details/8457080 在hbase中scan是最核心的算法,从直接的读操作get,scan到一些hbase的大操作compact、split、flush都是使用各种各样的scanner实现的,可以说region的一切读操作都是scan。scan的实现可以参考原创 2013-01-15 23:22:17 · 1633 阅读 · 0 评论 -
如何使用mapred export import删除hbase表数据
背景:hbase的删除功能比较弱,只能单行删除,而且必须指定rowkey。遇到问题:今天遇到一个需求,用户导入了大量错误的数据,数据的rowkey开头都是110102,需要删除这些垃圾记录,用hbase shell删除实在不科学。解决方案:用hbase的mapreduce工具进行export和import,在export过程中filter掉不需要的数据。首先原创 2013-01-11 16:37:14 · 2659 阅读 · 0 评论 -
从MergeSort看HBase--一
最近在研究HBase,发现很多归并排序的影子,很有意思的是这个在数据结构教材里一笔带过的算法却在分布式计算领域经常出现。再一次证明了我们的教材也许已经很落伍了。。。为什么会用到归并排序纳?我们知道分布式系统中排序是基础,数据很容易在单台机器(或者节点、模块)中做到有序,但分布式环境需要在整个集群中达到有序。因此自然牵涉到把多个有序列合并为一个有序列的过程,这个过程就是mergesort登场的时原创 2013-01-01 13:39:54 · 1942 阅读 · 0 评论 -
HBase 0.92.1 Scan 源码详细分析
从这篇文章开始终于要讨论比较正常版本的hbase了---0.92.1~~ Scan是hbase提供的非常重要的功能之一,我们的hbase分析系列就从这儿开始吧。 首先,我们有一些background的知识需要了解:1.HBase是如何区分不同记录的,大家可以参考http://punishzhou.iteye.com/blog/1266341,讲的比较详细2.Region,原创 2012-12-12 23:36:45 · 4860 阅读 · 0 评论 -
HBase 0.1.0 Flush流程源码分析
这篇文章将会分析和总结Flush流程的实现。Flush是LSM-Tree重要的实现步骤,对应理解hbase非常关键。简单来说,flush就是把内存中的数据flush到磁盘上,那么具体是怎么实现的纳?首先,regionserver在适当的时机调用region.flushcache。步骤如下:lock.readLock().lock(); //原创 2012-12-04 22:11:11 · 1318 阅读 · 0 评论 -
HBase 0.1.0 Get流程源码分析
在debug region一文中http://blog.csdn.net/mrtitan/article/details/8209994已经说到Hbase中每个region都是个独立的个体,本文会分析一次get操作在region层面是如何实现的。HBase系统架构:client的一次get操作到了regionserver后,regionserver会根据rowkey的范围选择对应的re原创 2012-12-02 18:55:58 · 1526 阅读 · 0 评论 -
HBase 0.1.0 Put流程源码分析
put的过程相对比较简单,因为根据LSM-Tree的理论,写入操作会写入到内存中,然后再batch的写入磁盘。HBase的实现也是如此。首先,从客户端的batch操作中提取出所有的put操作并放在一个sortedmap中(localput):Text row = b.getRow(); long lockid = obtainRowLock(row); lon原创 2012-12-02 23:52:22 · 1225 阅读 · 0 评论 -
使用Springboot和Hystrix构建API Gateway
使用Hystrix构建API Gateway随着MicroService架构越来越深入人心,如何构建一个高性能,错误容忍的API Gateway成了一个很多人都遇到的问题。Netflix开源了Hystrix来帮助我们实现API Gateway。这里提供一个Springboot+Hystrix的例子: https://github.com/qmhu/SpringHystrixSample关于微服务可原创 2016-06-02 11:25:10 · 16063 阅读 · 0 评论