- 博客(42)
- 资源 (2)
- 收藏
- 关注
原创 java nio
Java中nio有3个核心概念:channel,buffer,selector,在网络nio中,把channel的事件注册到selector,当网络就绪后进行读写操作,channel之间通过buffer传递数据。 Channel 一共有4种通道: FileChannel SocketChannel 基于TCP...
2015-01-23 16:44:55
220
原创 HFile格式说明(转)
原文地址:http://my.oschina.net/zhengyang841117/blog/188723 在这里主要分析一下HFile V2的各个组成部分的一些细节,重点分析了HFile V2的多级索引的机制,接下去有时间的话会分析源码中对HFile的读写扫描操作。HFile和流程:如下图,HFile的组成分成四部分,分别是Scanned Block(数据block)、...
2014-12-08 21:07:10
1032
原创 OpenTSDB的设计之道(转)
原文地址:http://san-yun.iteye.com/blog/1993519 OpenTSDB是一个架构在Hbase系统之上的实时监控信息收集和展示平台。它在海量数据的压力下,仍然保证了存储的效率,那么它背后有什么值得借鉴的地方呢?1)使用AsyncHbase而非HBase自带的HTable。使用线程安全、非阻塞、异步、多线程并发的HBase API,在高并发和高吞吐时...
2014-12-05 23:51:43
283
原创 CDN回源率高导致机房出口带宽翻倍
前几天感恩节,发现公司机房出口带宽增长1倍,经过排查发现是提供图书下载的服务器输出流量大增,查看源码,定位到问题: 走CDN的下载接口中带有机型、渠道、版本等参数,而这些参数的组合场景可达到百万级,从而导致大量的请求穿透,而感恩节的运营策略是重点推精品书,每天会有免费,而一本精品书可以达到几十M大小,对于一本精品书可能就会有n多请求回源到程序机房,严重浪费机房带宽,1年的损失相当大(至...
2014-11-29 17:03:10
580
原创 hbase数据备份或者容灾方案
HBase的数据备份或者容灾方案有这几种:Distcp,CopyTable,Export/Import,Snapshot,Replication,以下分别介绍(以下描述的内容均是基于0.94.20版本)。 一、Distcp 在使用distcp命令copy hdfs文件的方式实现备份时,需要禁用备份表确保copy时该表没有数据写入,对于在线服务的hbase集群,该方式不可...
2014-11-11 18:38:40
384
原创 停止RegionServer服务的大致逻辑
hbase-daemon.sh中停止RS的脚本如下:if [ -f $pid ]; then # kill -0 == see if the PID exists if kill -0 `cat $pid` > /dev/null 2>&1; then //判断进程是否存在 echo -n stopping $com...
2014-11-07 15:53:28
480
原创 linux的oom killer导致memcached服务下线
公司部分项目是用python实现的,由于python的内存泄露问题,每两天凌晨均会重启一次python服务,有一次在业务高峰期,python服务的内存大增,导致操作系统的free memory低于/proc/sys/vm/min_free_kbytes设置的值,触发了linux的oom killer,由于在该python服务器上部署有memcached服务,在oom killer的算法下...
2014-11-06 15:58:38
281
原创 通过日志实现简单的服务监控与快速问题定位
生产系统出的问题中,请求响应慢是很常见的问题,如何快速定位慢的源头非常重要,通过对之前遇到的问题总结,发现一般都是依赖服务慢或者出现线程阻塞导致,对于这两种问题简单有效的定位方法如下: 1、打印超过阀值的依赖服务访问时长到日志,通过日志定位 2、使用java的jstack命令查看java线程是否阻塞 其中简单介绍一下如何利用日志定位问题: 对每个...
2014-11-06 14:48:11
565
原创 架构设计要点总结
根据以往经验总结一下架构设计的要点,记录下来,以后定期修整并添加新的感悟:1. 了解需求,对现有需求,未来可能的需求均要了解,需求变化很正常,从架构层面做到开闭原则,以便可持续发展,如何做到,比如osgi这种插件化思想,小内核,新功能新插件,还比如一些设计模式:适配器模式2. 分而治之,比如:按照高内聚低耦合的思路对系统进行垂直拆分,便于对子系统进行精细化的制定设计,并且屏蔽系统演变一...
2014-10-22 13:50:29
371
原创 生产环境遇到的rabbitmq队列堆积原因分析和解决方案
在8月5、6、7连续三天晚上10点出现充值相关几个消息堆积的问题,经过分析发现主要问题是充值项目对mq的使用存在一些不合理的地方,当mq负载高时会出现堆积现象。具体原因如下: 1、采用的消息模式是get模式,而不是高效的deliver模式,经过在新搭建的mq服务器测试发现,get模式:5000条/秒便会出现严重堆积, deliver模式:20000条/秒不会堆积,如果按照充值...
2014-09-22 19:07:17
8216
2
原创 hbase之RPC详解
Hbase的RPC主要由HBaseRPC、RpcEngine、HBaseClient、HBaseServer、VersionedProtocol 5个概念组成。1、HBaseRPC是hbase RPC的实现类,核心方法:1)、RpcEngine getProtocolEngine():返回RpcEngine对象2)、<T extends VersionedProtocol&g...
2014-09-21 01:31:37
1627
原创 android启动模式android:launchMode(转)
在android里,有4种activity的启动模式,分别为:“standard” (默认)“singleTop”“singleTask”“singleInstance” 它们主要有如下不同: 1. 如何决定所属task“standard”和”singleTop”的activity的目标task,和收到的Intent的发送者在同一个task内,除非intent...
2014-09-05 10:49:21
141
原创 Activity 的属性之android:screenOrientation(转)
Activity在屏幕当中显示的方向。属性值可以是下表中列出的一个值: "unspecified"默认值,由系统来选择方向。它的使用策略,以及由于选择时特定的上下文环境,可能会因为设备的差异而不同。"user"使用用户当前首选的方向。"behind"使用Activity堆栈中与该Activity之下的那个Activity的相同的方向。"landsc...
2014-09-05 10:29:39
147
原创 Android Permission大全(转)
android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded)...
2014-09-04 17:33:34
164
原创 redis采用tcmalloc导致无法释放内存的问题
redis使用tcmalloc管理内存,当删除了redis的key后,通过redis的info命令查看内存使用情况,发现内存并没有释放,但是采用默认的jemalloc就不会有这个问题以下是采用tcmalloc后删除key前和删除key后通过info看到的内存情况: 删除key前: used_memory:13051400used_memory_human:12.45M...
2014-08-05 12:22:47
999
原创 迁移namenode
由于hbase集群的namenode所在机柜需要尽快让出,因此需迁移namenode,旧nn的ip是0.238,新的ip是0.249,249服务器是之前老hbase集群的一个数据节点,由于基于hbase的应用的写入操作均是先写redis队列,再异步写hbase,并且我在停止hbase集群服务时不会停止zookeeper(zk停止服务后,client端重试机制会导致一个请求超过几十秒的等待...
2014-07-01 18:39:10
353
原创 导致Hbase挂掉的场景
异常导致的退出会通过接口Abortable定义的abort()方法实现,Abortable实现类如下: 由以上类图可以看出HBaseAdmin的abort由于是client的访问,因此终止服务只需抛出异常即可,HConnection也是用于client,因此只需关闭连接,如果是zk的异常会在后续的使用中重新连接zk而不用关闭连接,其中重点的是HMaster、HRegionServer和Zoo...
2014-05-20 21:24:24
652
原创 处理master不断assign未成功分配region的问题
在hbase-0.94.0的版本删除表后可能不会删除干净,导致在META表中遗留有region的信息(hdfs中的文件路径会被删除),在hbase重启后,会导致无法分配region的问题,不被分配的region会保存到zk的unassigned目录下,并且hbase的assgin线程会不断的尝试进行分配,并在master的监控页面的最下方显示出来,不断的尝试会导致占用集群的链接数,并且日志会...
2014-05-18 13:23:20
401
原创 hbase client访问的超时时间、重试次数、重试间隔时间的配置
超时时间、重试次数、重试时间间隔的配置也比较重要,因为默认的配置的值都较大,如果出现hbase集群或者RegionServer以及ZK关掉,则对应用程序是灾难性的,超时和重新等会迅速占满web容器的链接,导致web容器停止服务,关于socket的超时时间,有两种:1:建立连接的超时时间;2:读数据的超时时间。可以配置如下几个参数:1. hbase.rpc.timeout:rpc的...
2014-05-17 23:28:41
1294
原创 hbase性能调优
一、服务端调优 1、参数配置 1)、hbase.regionserver.handler.count:该设置决定了处理RPC的线程数量,默认值是10,通常可以调大,比如:150,当请求内容很大(上MB,比如大的put、使用缓存的scans)的时候,如果该值设置过大则会占用过多的内存,导致频繁的GC,或者出现OutOfMemory,因此该值不是越大越好。 2)、hbase...
2014-05-17 23:10:55
1187
原创 Split Region详细解读
//HRegionServer类的splitRegion方法,该方法封装了手动split的实现逻辑public void splitRegion(HRegionInfo regionInfo, byte[] splitPoint) throws NotServingRegionException, IOException { region.flushcache();...
2014-05-17 22:50:59
835
原创 线程池引起的jvm内存过大问题
之前的一个hbase表结构和rowkey规划不合理,我重新设计了一个新的hbase表,需要把旧表的数据写入到新表中,采用的方案是一个region一个region的倒数据,这样旧表的读是scan顺序读,新表的写是随机写,整体速度相对较快。 读采用单线程,写采用线程池(Executors.newFixedThreadPool()),改进scan查询速度的caching配置设置为...
2014-04-22 15:02:33
1955
原创 hdfs之checkpoint
前提说明:研究的hadoop版本1.0.3checkpoint的触发条件:默认1小时进行一次merge;edits的文件大小超过大致64M以上两个条件,满足任意一个即可,每隔5分钟进行一次条件检查。 checkpoit流程:在SNN(secondary namenode)服务器上检查fs.checkpoint.dir fs.checkpoint.edit...
2014-03-24 23:00:44
359
原创 hbase 整体介绍
转一篇hbase整体介绍的文章,写的比较好: hbase是bigtable的开源山寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与had...
2014-02-26 10:25:10
107
原创 获取hive日志,停止hive
获取hive日志比较麻烦,通常的做法是执行shell命令获取日志,但是这样有一些问题,比如:输出的结果需要程序解析等,可以改进hive,采用jdbc的方式执行hive sql,并且把输出到控制台的日志保存到redis,其中kill job的命令日志用不同的key缓存到redis,如此可很方便获取查询结果、日志、kill命令。 具体实现方式如下: 修改hive-exec-...
2014-02-18 16:14:14
573
原创 如何制作ppt
字体:采用微软雅黑 除了图片外,不使用外部的图形,比如:viso,这样可以避免有观看者没有安装viso,或者安装的viso版本与制作者的版本有出入导致显示的问题 制作ppt前统一样式 ppt可以多用比较亮丽的颜色 先把ppt要反映的内容通过文字描述出来,形成成熟思路后,再转换成图形,并修饰最关键的一点就是要弄清楚听众都有谁,以及重点听众的ppt喜好。...
2014-01-02 09:12:15
432
原创 关于分页中总记录数的处理
在分页查询时通常需要显示总记录数,虽然只是一个数字,但是由于可能会全表统计,因此对查询的性能影响至关重要,现对其进行总结: 1、每次查询均select count,该方式数据的准确性最高,但是每次count,性能最低; 2、在会话期间只进行一次select count,然后缓存,该方式数据可能不准确,即可能漏数据导致部分新增数据无法被浏览到,但是可以避免后续访问的count操作...
2014-01-01 22:08:21
789
原创 软件国际化与本地化
所谓软件国际化,意指:软件输出的信息会自动适应不同的语言环境,也即软件支持本地化。 需要国际化的信息包括: 1、输出到client端的信息 java程序输出的信息,比如:一个ajax请求返回的数据;javascript文件中需要展现给用户的信息,比如:提示信息;其它客户端技术需要展现给用户的信息,比如:Flex。 2、输出到服务器端的信息日志信息(如果...
2014-01-01 21:50:11
678
原创 JavaScript编码规范
博文说明:该博文是从我之前写的JavaScript编码规范文档中copy出来,copy后,文本样式有所变化,可直接下载word的附件。 JavaScript编码规范 2011年11月 规范基本信息表: 规范简称:Ja...
2014-01-01 21:25:06
155
原创 jprofiler的使用
概述:JProfiler是用于分析J2EE软件性能瓶颈并能准确定位到Java类或者方法有效解决性能问题的主流工具,它通常需要与性能测试工具如:LoadRunner配合使用,因为往往只有当系统处于压力状态下才能反映出性能问题。 分析内存: 系统的内存消耗过多往往有以下几种原因:频繁创建Java对象,如:数据库查询时,没分页,导致查出表中所有记录;存在大对象,如:读...
2014-01-01 20:04:35
330
原创 hbase官方文档中文版
hbase有一个官方的中文参考手册,学习hbase前最好先浏览一下以便对hbase有一个整体的了解,连接地址:http://abloz.com/hbase/book.html
2014-01-01 19:43:21
178
原创 hbase读数据之client
前言:研究的HBase版本是0.94.12,贴出的源代码可能是经过我删减或者加工过的(简化篇幅,更易读) 以Scan查询为例介绍数据查询时HBase client端的实现 public static void main(String[] args) {scan("product", "f", "", 2); //从product表查询2条记录}p...
2013-12-24 22:59:56
306
原创 impala条件查询问题
使用impala查询hbase时,如果是“=”条件查询,如果不添加is not null条件,则会把该列没有值的记录也查询出来(空字符串不会),比如: Select * from user where name=’xiao wang’,该语句会查询出name等于xiao wang和null的数据。 Select * from user where name=’xiao wa...
2013-12-24 13:37:11
1253
原创 spring mvc+mybatis+easyui
很长时间没有自己搭建项目框架了,最近要做一个数据开放的项目,由我搭建项目框架,发现现在spring已经做得很棒了,采用注解和基础包方式大量简化代码和配置量,把程序员从枯燥的低level代码中解放出来,更加关注业务逻辑的实现。 附件是我搭建的框架和demo例子。 该框架关键信息如下: 1、采用spring+spring mvc+mybatis+easyui 2、采用m...
2013-12-19 14:06:22
108
原创 自己实现的基于jquery的UI组件库
在上一家单位做软件开发平台(2012年前的事了),一做就是近5年时间,在离开的最后一段时间,中心觉得应该做一个自己的jquery UI组件库,但是团队中没有NX的JS高人,要招一个合适的做过JS UI组件库的同学实在太难,似乎我的JS水平比他们略高一些,加上我比较好学,喜欢专研技术,不怕苦(自己夸一下自己-:)),因此这个重担就落在我的头上了。 由于之前对js、html、css...
2013-12-18 01:00:01
577
原创 hbase锁机制
博文说明:1、研究版本hbase0.94.12;2、贴出的源代码可能会有删减,只保留关键的代码。 hbase的锁是采用jdk的ReentrantReadWriteLock类实现 一、HRegion有两种锁:lock、updatesLock,这两种锁均是ReentrantReadWriteLock类的实例,基本上所有的region操作均需要获取lock的read共享锁,在...
2013-12-02 10:58:03
982
原创 由商品页的设计与实现说起
这是对我1年前设计与开发的商品详情页的总结,主要从性能、可用性和可维护性三个方面进行。 一、性能优化 从整体架构、程序内部和运行环境三个层面进行性能优化。1. 架构保障 由于现阶段商品数量处于千万级,并且结合商品的增长速度分析,以静态化方案为主即可满足未来一定时间的发展,具体静态化方案如下:提前生成商品页的HTML文件存储到NGINX所在的服务器,当C...
2013-11-30 19:56:53
234
原创 hbase写数据过程
博文说明:1、研究版本hbase0.94.12;2、贴出的源代码可能会有删减,只保留关键的代码 从client和server两个方面探讨hbase的写数据过程。一、client端 1、写数据API 写数据主要是HTable的单条写和批量写两个API,源码如下://单条写APIpublic void put(final Put put) throws ...
2013-11-29 00:10:57
129
原创 看懂-ROOT-表和.META.表
前提说明:本文章研究的hbase版本是0.94.12。. -ROOT-表和.META.表是hbase的元数据表,在-ROOT-表中保存有.META.表的相关信息,在.META.表中保存有业务表的region相关信息,在client端访问具体的业务表的region时需要先通过-ROOT-表找到.META.表,再通过.META.表找到region的位置,即这两个表主要解决了...
2013-11-28 14:12:47
792
flash_as3_programming.pdf
2010-12-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人