- 博客(280)
- 资源 (9)
- 收藏
- 关注
原创 Hadoop Bloom Filter 使用
1.Bloom Filter 默认的 BloomFilter filter =new BloomFilter(10,2,1); // 过滤器长度为10 ,用2哈希函数,MURMUR_HASH (1) Key key =new Key("hadoop".getBytes()); filter.add(key); Key hb = new Key("
2013-11-29 15:55:01 2604
转载 Bloom filter 2
1 Bloom filter 计算方法如需要判断一个元素是不是在一个集合中,我们通常做法是把所有元素保存下来,然后通过比较知道它是不是在集合内,链表、树都是基于这种思路,当集合内元素个数的变大,我们需要的空间和时间都线性变大,检索速度也越来越慢。 Bloom filter 采用的是哈希函数的方法,将一个元素映射到一个 m 长度的阵列上的一个点,当这个点是 1 时,那么这个元素在集合内,反之
2013-11-29 15:41:20 659
转载 Bloom Filter
Bloom Filter概念和原理焦萌 2007年1月27日 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter
2013-11-29 15:38:23 597
原创 MurmurHash
public int hash(byte[] data, int length, int seed) { int m = 0x5bd1e995; int r = 24; int h = seed ^ length; int len_4 = length >> 2; for (int i = 0; i int i_4 =
2013-11-29 15:20:24 932
原创 Jenkins hash
最早,Bob Jenkins提出了多个基于字符串通用Hash算法(搜Jenkins Hash就知道了),而Thomas Wang在Jenkins的基础上,针对固定整数输入做了相应的Hash算法。其64位版本的 Hash算法如下:uint64_t hash(uint64_t key) { key = (~key) + (key 21); // key = (key key = k
2013-11-29 15:17:10 5921
翻译 MR for Baum-Welch algorithm
The Baum-Welch algorithm is commonly used for training a Hidden Markov Model because of its superior numerical stability and its ability to guarantee the discovery of a locally maximum, Maximum Likeli
2013-11-27 21:30:54 1238
原创 MR PAGERANK思路
map( key: [url, pagerank], value: outlink_list ) for each outlink in outlink_list emit( key: outlink, value: pagerank/size(outlink_list) ) emit( key: url, value: outlink_list )reduc
2013-11-27 21:24:23 737
翻译 using MR to compute PageRank
In this post I explain how to compute PageRank using the MapReduce approach to parallelization. This gives us a way of computing PageRank that can in principle be automatically parallelized, and so po
2013-11-27 21:22:39 1035
原创 实现像百度一样的自动补全功能
import java.io.IOException;import java.io.Reader;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map; import org.ap
2013-11-27 21:19:25 884
实现像百度一样的自动补全功能
import java.io.IOException; import java.io.Reader; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache....
2013-11-27 20:28:03 118
转载 CRF资料
与最大熵模型相似,条件随机场(Conditional random fields,CRFs)是一种机器学习模型,在自然语言处理的许多领域(如词性标注、中文分词、命名实体识别等)都有比较好的应用效果。条件随机场最早由John D. Lafferty提出,其也是Brown90的作者之一,和贾里尼克相似,在离开IBM后他去了卡耐基梅隆大学继续搞学术研究,2001年以第一作者的身份发表了CRF的经典论文
2013-11-26 20:38:57 1486
转载 HBase Compaction
当 client 向 hregion 端 put() 数据时, HRegion 会判断当前的 memstore 的大小是否大于参数hbase.hregion.memstore.flush.size 值,如果大于,则执行 flushcache() 操作,将 hregion 上的 memstore 刷新到 store files 文件里。而在 flushcache 时,会先判断当前的 regi
2013-11-26 09:11:56 673
转载 HBase 协处理器实现二级索引
HBase在0.92之后引入了coprocessors,提供了一系列的钩子,让我们能够轻易实现访问控制和二级索引的特性。下面简单介绍下两种coprocessors,第一种是Observers,它实际类似于触发器,第二种是Endpoint,它类似与存储过程。由于这里只用到了Observers,所以只介绍Observers,想要更详细的介绍请查阅(https://blogs.apache.org/hb
2013-11-26 09:11:44 2466 1
转载 HBase 二级索引与Join
二级索引与索引Join是Online业务系统要求存储引擎提供的基本特性。RDBMS支持得比较好,NOSQL阵营也在摸索着符合自身特点的最佳解决方案。这篇文章会以HBase做为对象来探讨如何基于Hbase构建二级索引与实现索引join。文末同时会列出目前已知的包括0.19.3版secondary index,?ITHbase, Facebook和官方Coprocessor方案的介绍。理论目标
2013-11-26 09:11:16 1633
转载 HBase Muti-Master
为了保证HBase集群的高可靠性,HBase支持多Backup Master 设置。当Active Master挂掉后,Backup Master可以自动接管整个HBase的集群。 该配置极其简单: 在$HBASE_HOME/conf/ 目录下新增文件配置backup-masters,在其内添加要用做Backup Master的节点hostname。如下: 代码不换行代码换行[root
2013-11-26 09:10:23 999
转载 NOSQL schema创建原则
(1)数据规模Bigtable类数据库系统(HBase,Cassandra等)是为了解决海量数据规模的存储需要设计的。这里说的海量数据规模指的是单个表存储的数据量是在TB或者PB规模,单个表是由千亿行*千亿列这样的规模组成的。提到这个数据规模的问题,不得不说的就是现在在NoSQL市场中,最火的四种NoSQL系统依次是Mongodb,Redis,Cassandra,HBase。我们知道Cas
2013-11-26 09:10:05 2053
转载 HBase flush
flush触发方式1. Server端执行更新操作(put、delete、multi(MultiActionmulti)、(private)checkAndMutate、mutateRow (byte[] regionName, RowMutations rm))执行前后触发内存检查操作执行前MemStoreFlusher .reclaimMemStoreMemory,如果re
2013-11-26 09:09:44 1305
转载 阅读源码
编者按:原文作者Alan Skorkin是一名软件开发人员,他在博客中分享对软件开发相关的心得,其中有很多优秀的文章,本文是其中的另一篇。Alan认为:阅读优秀代码是提高开发人员修为的一种捷径。以下是全文。我突然想起来,很多程序员都讨厌阅读代码。来吧,承认吧! 每个人都喜欢编写代码,编代码是件趣事。 另一方面,阅读代码也不容易。 不仅不容易(编注:参见《微软资深软件工程师:
2013-11-26 09:09:31 667
转载 HBase行锁
1 行锁简介在事务特性方面,hbase只支持单row的事务,不能保证跨row(cross-row)的事务。hbase通过行锁来实现单row事务。客户端进行操作时,可以显式对某一个行加锁,但是大部分情况下是没有必要的,因为如果没有显式的加行锁,hbase在内部会默认的加行锁。为了描述方便,用户显式加的行锁简称为显式行锁。 源码1:客户端使用显式行锁的示例代码HTabl
2013-11-26 09:08:32 2048
转载 hadoop运维
在实际的生产环境运维一个Hadoop集群有一些必须要关注的事情。1、Namenode的高可靠性2、节点配置与管理3、Mapreduce的内存配置4、启用trash首要的是保证数据安全可靠,其次再去考虑存储效率、计算效率、运维效率的优化与提高,当你觉得Hadoop集群的性能太差太差的时候,其实是你对Hadoop的了解太少,Hadoop的效率没有被发挥出来。数据的可
2013-11-26 09:08:22 922
转载 HBase Master启动过程
master启动过程: -->首先初始化HMaster-->创建一个rpcServer,其中并启动-->启动一个Listener线程,功能是监听client的请求,将请求放入nio请求队列,逻辑如下:-->创建n个selector,和一个n个线程的readpool,n由"ipc.server.read.threadpool.size"决定,默认为10-->读取每个请求的头和
2013-11-26 09:08:09 2972
转载 bulk-load 装载HDFS数据到HBase
bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89.20100621/bulk-loads.html:hbase提供了现成的程序将hdfs上的文件导入hbase,即bulk-load方式。它包括两个步骤(也可以一次完成):1 将文件包装成
2013-11-26 09:07:57 814
转载 HBase开启LZO
hbase只支持对gzip的压缩,对lzo压缩支持不好。在io成为系统瓶颈的情况下,一般开启lzo压缩会提高系统的吞吐量。但这需要参考具体的应用场景,即是否值得进行压缩、压缩率是否足够等等。想要hbase支持lzo压缩,参照以下步骤:1 首先要让系统支持lzo动态库,安装lzo-2.00以上版本:http://www.oberhumer.com/opensource/lzo/downl
2013-11-26 09:07:46 982
转载 Hash函数
简介哈稀函数按照定义可以实现一个伪随机数生成器(PRNG),从这个角度可以得到一个公认的结论:哈希函数之间性能的比较可以通过比较其在伪随机生成方面的比较来衡量。一些常用的分析技术,例如泊松分布可用于分析不同的哈希函数对不同的数据的碰撞率(collision rate)。一般来说,对任意一类的数据存在一个理论上完美的哈希函数。这个完美的哈希函数定义是没有发生任何碰撞,这意味着没有出现
2013-11-25 12:42:26 971
转载 熵推导
信息论 信息是关于事物的运动状态和规律的认识,它可以脱离具体的事物而被摄取、传输、存贮、处理和变换。 信息论,就是用数理统计方法研究信息的基本性质以及度量方法,研究最佳解决信息的摄取、传输、存贮、处理和变换的一般规律的科学。它的成果将为人们广泛而有效地利用信息提供基本的技术方法和必要的理论基础。 信息论的研究范围分成三种不同类型: (1)狭义信息论是一门
2013-11-25 12:42:13 3320
转载 提高HBase写性能
以下为使用hbase一段时间的三个思考,由于在内存充足的情况下hbase能提供比较满意的读性能,因此写性能是思考的重点。希望读者提出不同意见讨论 1 autoflush=false的影响 无论是官方还是很多blog都提倡为了提高hbase的写入速度而在应用代码中设置autoflush=false,然后lz认为在在线应用中应该谨慎进行该设置。原因如下: a auto
2013-11-25 12:41:47 805
转载 HBase运维经验
http://www.qconbeijing.com/download/Nicolas.pdf重点看了下facebook做了哪些改进以及他们的运维经验,比较重要的有以下几点: 改进:1 加强了行级的ACID约束2 改善了数据的分布规则,可以配置hdfs的replicas所在节点3 改写了master的assign规则,利用zk来进行assign4 不用停机地重启clus
2013-11-25 12:41:38 1278
转载 HBase缓存的使用
hbase中的缓存分了两层:memstore和blockcache。 其中memstore供写使用,写请求会先写入memstore,regionserver会给每个region提供一个memstore,当memstore满64MB以后,会启动flush刷新到磁盘。当memstore的总大小超过限制时(heapsize * hbase.regionserver.global.mems
2013-11-25 12:41:27 3326
转载 HDFS APPEND性能测试
hbase在写入数据之前会先写hlog,hlog目前是sequencefile格式,采用append的方式往里追加数据。之前团队的同学测试关闭hlog会一定程序上提升写hbase的稳定性。而在我之前的想象中,hlog的写入速度应该是稳定的。于是写了个append程序专门测试hdfs的append性能。 代码如下:Java代码 FSDataOutputStre
2013-11-25 12:41:17 1829
转载 Hbase问题
Q: .meta.和root表是否要分裂?A: meta表和root表不会分裂,代码中有所判断。Q: 如果不分裂,那么都只有1个region?A: ...(查看代码后)A: meta和root表是要split的,.meta.和-root-不split是在0.20.6以前的版本,升级到0.89以后都会split了,只是不分裂的代码接口还保留着,实际调用
2013-11-25 12:41:01 625
转载 HBase中缓存的优先级
ava代码 // Instantiate priority buckets BlockBucket bucketSingle = new BlockBucket(bytesToFree, blockSize, singleSize()); BlockBucket bucketMulti = new BlockBucket(bytesToFree, blockSize,
2013-11-25 12:40:45 822
转载 HBase中创建索引
hbasene(https://github.com/akkumar/hbasene)是开源项目,在hbase存储上封装使用Lucene来创建索引,代码API非常简单,熟悉lucene的朋友可以很方便地创建。 以下为测试代码,完成读取一张hbase上记录url和用户id的表,对其创建索引并进行简单的基于url的索引的代码。当取到search的结果后,就可以拿到想要的数据了。由于分词后
2013-11-25 12:40:36 4460
转载 多Region下HBase写入问题
最近在集群上发现hbase写入性能受到较大下降,测试环境下没有该问题产生。而生产环境和测试环境的区别之一是生产环境的region数量远远多于测试环境,单台regionserver服务了约3500个region。 通过jstack工具检查到大半写入线程BLOCKED状态在"public synchronized void reclaimMemStoreMemory() {"这一行,这是在p
2013-11-25 12:40:27 789
转载 Zookeeper管理多个HBase集群
zookeeper是hbase集群的"协调器"。由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器。多个hbase集群共用zookeeper集群的方法是使用同一组ip,修改不同hbase集群的"zookeeper.znode.parent"属性,让它们使用不同的根目录。比如cluster1使用/hbase-c1,cluster2使
2013-11-25 12:40:16 1129
转载 disable table 失败的处理
相信每一个维护hbase集群的运维人员一定碰到过disable失败,陷入无穷的"Region has been PENDING_CLOSE for too long..."状态,此时没有什么好的办法处理。经常需要重启集群。 这个问题产生的原因非常讨厌,经过一段时间的分析和验证,得到了根本原因。要理解它,必须从disable的原理说起:disable线程是一个Disable
2013-11-25 12:40:06 1732
转载 region server 中的OOM原因
首先要清楚reginserver中内存是如何使用的。 reginserver中内存总体分成三部分:blocksize专供读使用的内存,memstore供读写使用的内存,其它内存。 其中前两者的大小在配置中分别通过hfile.block.cache.size以及hbase.regionserver.global.memstore.upperLimit来控制,两者的大小之和
2013-11-25 12:39:49 964
转载 HBase数据字典
数据字典用来存储了系统的元数据。HBase的元数据包括:用户表的定义、表的切分方案、分片的分布情况(即分片分布在哪个regionserver上)、分片对应的数据文件和日志文件。其中,分片和数据文件的映射关系是通过目录映射实现的,即不同的分片的数据文件存储在不同的目录中,其中目录的名称是分片的名称。【对比:在Hypertable中分片与数据文件的映射关系记录在表中】如图3-13所示。HBase使
2013-11-25 12:31:27 1414
转载 HBase丢失数据的故障和原因分析
hbase的稳定性是近期社区的重要关注点,毕竟稳定的系统才能被推广开来,这里有几次稳定性故障和大家分享。 第一次生产故障的现象及原因 现象:Java代码 1 hbase发现无法写入 2 通过hbck检测发现.META.表中出现空洞,具体log是:;Chain of regions in table ... is broken; edges do
2013-11-25 12:31:02 4971
转载 HBase多次加载-ROOT-和META的bug
执行以下case可以见到root或meta被加载两次:1 kill掉root和meta表所在的rs2 start该台rs3 立即再次kill掉这台rs4 立即再次start该台rs 原因: 当ROOT表和META表所在的server如果挂掉了,不管是重启这台rs还是等待它自然超时,master都会触发ServerShutdownHandler。此时如果这台ser
2013-11-25 12:30:50 698
转载 HBase写被block的分析
一个线上集群出现莫名奇妙不能写入数据的bug,log中不断打印如下信息:引用2011-11-09 07:35:45,911 INFO org.apache.hadoop.hbase.regionserver.HRegion: Blocking updates for 'IPC Server handler 32 on 60020' onregion xxx,333-23950000
2013-11-25 12:30:24 1327
jfreechart API
2010-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人