- 博客(152)
- 资源 (10)
- 收藏
- 关注
转载 总结一下排序算法
1. 概述排序算法是计算机技术中最基本的算法,许多复杂算法都会用到排序。尽管各种排序算法都已被封装成库函数供程序员使用,但了解排序算法的思想和原理,对于编写高质量的软件,显得非常重要。本文介绍了常见的排序算法,从算法思想,复杂度和使用场景等方面做了总结。2. 几个概念(1)排序稳定:如果两个数相同,对他们进行的排序结果为他们的相对顺序不变。例如A={1,2,1,2,1}这里排序
2013-04-06 14:45:20 3752 1
原创 RabbitMQ和kafka从几个角度简单的对比
业界对于消息的传递有多种方案和产品,本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比,在应用场景方面,RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。1)在架
2013-04-04 10:17:29 25909
原创 MapReduce中的cpu sys突然升到的抖动问题
最近在测试过程中,发现在做map reduce数据分析的过程中,cpu sys部分会偶然的升到,甚至到达50%,抖动的比较厉害。节点的磁盘的IO吞吐量比较大,每秒达到150M,大部分是tasktracker读取本地节点DFS的数据,默认情况下,读取数据是系统调用每次从硬盘上读取4K大小的数据到内核空间中,后由内核copy到应用程序空间,是什么导致内核部分消耗大部分的时间。经过大量的各方面的
2013-04-03 20:48:39 3269
原创 解决MapReduce过程中IO wait高的几个思路
最近在MapReduce的逻辑运算测试的时,发现单个节点的CPU的IO wait值比较高,CPU大量的消耗在等待IO操作上。单个节点的运算的数据量比较大,每秒的IO吞吐量将近200M,iotop监控了一下主要是消耗在tasktacker从datanode节点读取数据上。从以下几个角度上对这个问题进行优化。1、源数据压缩存储2、dfs.data.dir分多个目录存储3、io.fi
2013-03-30 20:19:32 2754
原创 HBase运维笔记系列
2013-02-22 11:47:06,794 ERROR [STDERR] (http-0.0.0.0-8080-26) 13/02/22 11:47:06 INFO client.HConnectionManager$HConnectionImplementation: This client just lost it's session with ZooKeeper, will automa
2013-03-30 20:03:48 10157
转载 Hadoop1.1.1参数文件说明
2 常用的端口配置2.1 HDFS端口参数描述默认配置文件例子值fs.default.name namenodenamenode RPC交互端口8020core-site.xmlhdfs
2013-03-23 08:36:41 1251
原创 HBase在split和major compact的一些非通常情况下的触发条件
HBase中的major compact功能中,参数hbase.hregion.majorcompaction已经设为0了,日志中发现还是会major compact。有3种方式,可以激发major compact1) 通过hbase shell命令 major_compact进行触发2) compact when file 'hbase.hstore.compaction.r
2013-03-10 17:51:25 11349 3
原创 FlumeNG1.3.1在Source Exec tail 文件方面的一个缺陷以及改进方式
在用FlumeNG1.3.1 Tail 一个文件收集日志到HDFS中时,发现原始日志文件最后几行数据总是不能写入到HDFS文件中,即使HDFS按照大小或者时间rollling成了一个新的文件。 HDFS在回滚一个新的文件中时,保留在HDFSEventSink中的数据(即使未达到一个包的大小)会写入到HDFS中,在HDFS的.hadoop fs -cat命令可以看到该数据。 经过分析
2013-03-08 10:55:02 2114
原创 hbase 手动split region的patch
在对Region进行手工split的过程中,出现以下异常./hbase org.apache.hadoop.hbase.util.RegionSplitter -r lsmp_lottery_presplit HexStringSplitException in thread "main" java.lang.IllegalArgumentException: Wrong FS:
2013-02-25 17:50:18 5433 1
原创 HBase的hbase.rpc.timeout参数引起的问题
在高并发压力测试时,发现对一个reginserver做scan操作的时,regionserver中偶尔会输出下面的错误:2013-02-21 09:50:33,328 WARN org.apache.hadoop.ipc.HBaseServer: IPC Server listener on 60020: readAndProcess threw exception java.io
2013-02-25 17:32:23 15162 1
原创 关系型数据库的主备的一致性问题
对于数据库的主备切换的一致性问题大致有以下几种方式:a、集群方式,如oracle的rack,缺点是比较复杂b、共享SAN存储方式,相关的数据文件和日志文件都放在共享存储上,优点是主备切换时数据保持一致,不会丢失,但由于备机有一段时间的拉起,会有短暂的不可用状态c、主备进行数据同步的方式,常见的是日志的同步,可以保障热备,实时性好,但是切换时,可能有部分数据没有同步过来,带来了数据的一致
2013-02-23 10:15:36 3327
原创 关于Hbase客户端和regionserver之间的单连接
利用Hbase的客户端进行Get或者scan操作时,在regionserver端用netstat -anp|grep 60020时,发现每一个Hbase客户端只有一个和该regionserver的连接,无论hbase client是否开启了多个线程进行并发操作。 后来翻了一下源码,果然是这样的。参见下面的源码截图,对同一个目的地的RegionServer来说,connection只有一
2013-02-17 17:45:27 5363
原创 扩展Flume按照Time和Size对日志进行hdfs归档
Flume的架构基本agent-->collect-->storage的架构,agent主要负责日志的产生,并把日志传给collector端,collect负责把agent发送的日志收集起来,发送给storage存储,storage负责的存储;其中agent和collect本身都是source,sink架构,所谓source、sink,类似生成者和消费者的架构,他们之间通过queue传输,解耦。
2013-01-20 11:21:52 3512
原创 回顾总结一下JVM(组成结构、GC、类加载)
JVM相关 1、组成结构 JVM由以下几个区域组成(堆与非堆,线程共享与独享,依赖JVM垃圾回收与手动释放) 堆(heap),动态内存,全局变量,无序 方法区(perm),类的元数据信息,运行时的常量池 虚拟机栈(VM stack),线程私有,局部变量表,存放基本数据类型和对象引用;每个方法在执行的时候,会同时创建一个栈帧用于存放局部变量表
2013-01-19 22:07:26 2285 2
原创 回顾总结一下JDK高并发的包(集合、多线程、锁)
1、java 高并发包所采用的几个机制(CAS,volatile,抽象队列同步) CAS(乐观操作),jdk5以前采用synchronized,对共享区域进行同步操作,synchronized是重的操作,在高并发情况下,会引起线程频繁切换;而CAS是一种乐观锁机制,compare and swap,不加锁,而是假设没有冲突去完成,若有冲突会重试(非阻塞)。compare&swap是原子操作
2013-01-19 20:32:24 8903
原创 xor算法在storm可靠性中的应用
1、先看一下数学中的异或 异或xor是一个数学运算符。它应用于逻辑运算。异或符号为“^”。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0异或0=0,1异或0=1,0异或1=1,1异或1=0(同为0,异为1),既然相同的对象XOR操作,结果是0,那么有这样一个公式,A xor B…xor B xor A = 0,其中
2013-01-19 15:00:17 5523 3
原创 对TextFile格式文件的lzo压缩建立index索引
hadoop中可以对文件进行压缩,可以采用gzip、lzo、snappy等压缩算法。对于lzo压缩,常用的有LzoCodec和lzopCodec,可以对sequenceFile和TextFile进行压缩,但是有一点,对TextFile压缩后,mapred对压缩后的文件默认是不能够进行split操作,需要对该lzo压缩文件进行index操作,生成lzo.index文件,map操作才可以进行spl
2013-01-19 14:00:52 7310 2
转载 单线程、事件驱动、异步非阻塞的nginx
nginx(发音"engine x")是俄罗斯软件工程师Igor Sysoev开发的免费开源web服务器软件。nginx于2004年发布,聚焦于高性能,高并发和低内存消耗问题。并且具有多种web服务器功能特性:负载均衡,缓存,访问控制,带宽控制,以及高效整合各种应用的能力,这些特性使nginx很适合于现代网站架构。目前,nginx已经是互联网上第二流行的开源web服务器软件。14.1 为什么高
2013-01-15 14:41:48 16889 1
原创 高性能的通讯库-zeroMQ的几个高性能特征
这两天研究了一下zeroMQ,号称史上最好的通讯库,比rabbitMQ快很多,基于c语言开发的,实时流处理sorm的task之间的通信就是用的zeroMQ。zeroMQ在使用模式上支持多种,有req-reply,publish-subscribe,pipe。 下图是zeroMQ的架构图简单说明一下,从上到下依次是网络、zeroMQ、用户的应用,相当于在应用层和网络层加了一个
2013-01-15 12:42:16 41548
原创 单线程非阻塞的NodeJS
NodeJS采用单线程非阻塞的架构,好处是少了多线程的开销,发起IO操作后,不阻塞操作,做其他的事情,该线程一直处于忙碌状态(占用CPU),当IO操作完成后,通知该线程(事件通知)。缺点,编程模式复杂,在多核模式下无法利用更多的核。webwoker的提出:一个Nodejs实例,在业务逻辑比较复杂的情况下,该线程成为瓶颈,所以才有webworker,一个Node进程就能很好的
2013-01-13 14:15:02 4772
原创 实时计算storm流程架构总结
hadoop一般用在离线的分析计算中,而storm区别于hadoop,用在实时的流式计算中,被广泛用来进行实时日志处理、实时统计、实时风控等场景,当然也可以用在对数据进行实时初步的加工,存储到分布式数据库中如HBase,便于后续的查询。 面对的大批量的数据的实时计算,storm实现了一个可扩展的、低延迟、可靠性和容错的分布式计算平台。 1、对象介绍
2013-01-13 13:22:28 14378 2
原创 梳理一下JVM GC Root对象有哪些
JVM对那些没有根引用的对象进行来及回收,也就是无法从根对象中追述的对象。JVM垃圾回收的根对象的范围有以下几种:1、栈中引用的对象,引用是在栈帧中的本地变量表中的,真正的对象在堆中2、方法区perm中的类静态属性引用的对象,以及常量引用的对象3、本地方法栈中JNI(Native方法)的引用的对象
2013-01-12 14:54:36 8818 1
原创 hive的查询注意事项以及优化总结
一、控制Hive中Map和reduce的数量Hive中的sql查询会生成执行计划,执行计划以MapReduce的方式执行,那么结合数据和集群的大小,map和reduce的数量就会影响到sql执行的效率。除了要控制数据量和Hive生成的Job的数量外,也要根据实际情况调节map和reduce的数量。1、 map的数量,通常情况下和split的大小有关系,之前写的一篇blog“map和re
2013-01-08 16:32:44 3730
原创 关于几种压缩算法以及hadoop和hbase中的压缩配置说明
Hadoop中常用的压缩算法有bzip2、gzip、lzo、snappy,其中lzo、snappy需要操作系统安装native库才可以支持下面这张表,是比较官方一点的统计,不同的场合用不同的压缩算法。bzip2和GZIP是比较消耗CPU的,压缩比最高,GZIP不能被分块并行的处理;Snappy和LZO差不多,稍微胜出一点,cpu消耗的比GZIP少。通常情况下,想在CPU和IO之间取得平衡的
2013-01-06 22:51:31 23978
原创 storm安装注意事项记录
笔者在安装storm的过程中,出现了一些错误1、安装zeroMQ时 ./configure的时候出现 cannot link with -luuid, install uuid-dev系统缺少相应的依赖包,可以用这个来安装,里面包括linux的一些util包,可以在这个中下载 2、storm执行文件时用python写的,启动./storm nimbus的时候,执行到co
2013-01-05 21:50:55 1666
原创 hadoop小文件的问题带来的问题和解决方案
hadoop最初主要是针对流式文件的,每个文件在NameNode中都会保存一份文件元数据,并且运行过程中,元数据都是加载到内存中的,有namenode内存的限制;其次mapreduce的时候,每个小文件占用一个slot,调度方面的开销比较大。hadoop自带了三种方案:hadoop archive,SequenceFile,CombineFileInputFormata、 hadoop a
2013-01-03 09:33:27 1639
转载 hadoop 作业调度器算法
Hadoop Job SchedulerHadoop的作业调度器,可以以插件的方式加载,常见的作业调度器有三种:默认调度算法FIFO计算能力调度算法Capacity Scheduler(Yahoo!开发)公平份额调度算法Fair Scheduler(Facebook开发)默认调度算法FIFO简介:最早的Hadoop Map/Reduce计算架构中,JobTracke
2013-01-03 09:24:42 1779
原创 HDFS的存储结构以及操作流程简单总结
一、NameNode数据结构1、物理结构${dfs.name.dir}/current/{VERSION,edits,fsimage,fstime}dfs.name.dir是一个目录列表,存储每个目录的镜像。VERSION文件是Java属性文件,包含运行HDFS的版本信息。edits,是编辑日志文件。当客户断执行写操作的时,NameNode首先会在编辑日志中写下记录,并在内存中保存
2013-01-02 12:03:55 5143
原创 从几个角度看hadoop相关参数优化
HDFS文件系统调优 1、系统角度 存储方式,NameNode采用raid1+0,DataNode采用磁盘组JBOD方式 在顺序读文件的场景中,比如mapreduce,可以调整文件系统预读缓存的大小。 文件挂载设置noaptime、nodiratime,提升文件系统的性能2、hdfs的参数优化
2012-12-31 11:29:15 1976 1
原创 简单分享开放平台的设计理念和思路
以前的一个电商开放平台,里面的设计思路和理念拿出来和大家分享一下该平台统一各大电商服务提供方的服务,进行编排后提供为开放的API为各个业务产品服务。在设计平台架构时,主要考虑以下几个因素:1、高并发和高吞吐量,我们采用分段式的架构,段与段之间采用同步非阻塞方式的通信方式,并且在http协议接入部分采用异步servlet方式。2、整个平台的可用性,这其中包括以下几个方面
2012-12-30 21:39:56 11451 1
转载 项目经理怎样处理技术见解不同导致的人员冲突?
自古以来,我们的价值观就不断强调:家和万事兴、以和为贵。但在软件开发项目中我们经常会遇到一个问题:冲突。冲突是软件项目开发的一种常态,无从回避,冲突影响的好坏取决于冲突管理的成效。因此,开发项目经理常被人们戏称为冲突经理。 在冲突管理中,一旦发现冲突,就要对问题进行研究,判断冲突的产生是否由项目任务、个人利益或个性等问题所引起,找出问题的潜在根源,然后针对实际情况提出具体的解决办法。
2012-12-30 17:06:21 2394
原创 IO模型介绍以及同步异步阻塞非阻塞的区别
先说一下几个单词。阻塞:用户进程访问数据时,如果未完成IO,等待IO操作完成或者进行系统调用来判断IO是否完成非阻塞:用户进程访问数据时,会马上返回一个状态值,无论是否完成同步:用户进程发起IO(就绪判断)后,轮询内核状态异步:用户进程发起IO后,可以做其他事情,等待内核通知 介绍一下IO模型 网络IO模型和文件IO模型是一样的,上图是IO的5种模型,包括阻塞IO、
2012-12-30 16:44:17 1793
原创 关于mysql innodb的监控
关于mysql 的监控,mysql提供了数据采集的命令,比如show status命令或者读取数据库informat_schema的GLOBAL_STATUS对象;也可以用一些现成的监控工具进行查询,目前用的比较多的innotop、mysqlreport、mtop、mytop,还有淘宝perl语言研发的orzdba。就监控的指标而言,有系统层面的,数据库层面的。1、系统层面包括系统的loa
2012-12-30 14:30:01 5950
原创 关于HFile的存储结构梳理以及快速定位rowkey
一、HFile结构介绍 为了支持数据的随机查询,HFile结构分为六个部分:1、数据块–保存表中的数据,每一个数据块由块头和一些keyValue(record)组成,key的值是严格按照顺序存储的。块大小默认为64K(由建表时创建cf时指定或者HColumnDescriptor.setBlockSize(size)),这一部分可以压缩存储。在查询数据时,是以数据块为单位从硬盘loa
2012-12-29 21:37:58 10851 2
原创 关于SolrCloud的索引分片和查询的可增强点
Solr4.0包含了分布式的sorl解决方案solrCloud,可以做sharding切分,每个sharding中节点支持选举算法(leader,replica),在sharding里面支持query的负载均衡。在集群启动时,就需要声明当shard、collection等信息,启动过程中把集群的状态信息维护在zookeeper节点里。集群中的任何一台server都可以响应客户端的请求,包括
2012-12-29 13:42:24 11815 4
原创 梳理一下流式处理、实时计算、Add-hoc、离线计算、实时查询等区别
流式处理、实时计算、Add-hoc、离线计算、实时查询 这几个概念在数据处理中经常提高,这里简单的梳理一下他们的区别。流处理、实时计算属于一类的,即计算在数据变化时,都是在数据的计算实时性要求比较高的场景,能够实时的响应结果,一般在秒级,Yahoo的S4,twiter的storm都属于流处理和实时计算一类的。Add-hoc和实时查询都计算在query时,实时查询是响应可能千变万化的结果,无
2012-12-28 22:23:44 11264 1
转载 解析从堆到优先队列的实现
优先队列,顾名思义,就是一种根据一定优先级存储和取出数据的队列。它可以说是队列和排序的完美结合体,不仅可以存储数据,还可以将这些数据按照我们设定的规则进行排序。先说说优先队列的实现吧。有一点需要澄清,很多人一直以为Priority Queue就是一个Priority Heap,这种说法当然是片面的。既然优先队列只是存储数据和排序的结合,那么根据我们学过的知识,可以列出以下的实现方法:无序数组、
2012-12-27 21:40:02 1207
原创 HBase Coprocessor Endpint运行机制
Observer包括MasterObserver,RegionObserver和WALObserver,就类似RDBMS里面的trigger,Observer能够让我们针对Hbase的各种事件(比如put操作、get操作、Region的split或者是move等等)hook我们的代码,可以让我们的代码在这些事情对应操作之前执行(pre*)还是之后执行(post*),需要注意的就是我们hook的代码
2012-12-25 21:41:04 1686
原创 Hive distribute by sorl by order by 的区别
distribute by:控制着在map端如何分区,按照什么字段进行分区,要注意均衡sort by:每个reduce按照sort by 字段进行排序,reduce的数量按照默认的数量来进行,当然可以指定。 最终可以进行归并排序得出结果。 适用于数据量比较大的排序场景。order by:reduce只有一个,在一个reduc
2012-12-25 12:39:51 6923
原创 实现自定义的UDF永久生效
UDF永久生效现在是只能修改源代码.不过可以变通一下处理也可以实现.在HIVE_HOME的bin目录下新建一个.hiverc的文件,把写好的udf的注册语句写在这里就可以类似HIVE内置的用法一样用原理是,在运行./hive命令时,同时会加载HIVE_HOME/bin/.hiverc and $HOME/.hiverc作为初始化所需要的文件 在.hiverc文件中加入以下内容:ad
2012-12-24 21:58:08 3323
TCP.IP.Sockets.in.Java.2nd.Edition
2010-04-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人