十道海量数据处理面试题与十个方法大总结(转)
http://wukunliang.blog.163.com/blog/static/17766547220104233140858/ 第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个
cassandra版本变更列表
https://svn.apache.org/repos/asf/cassandra/tags/cassandra-0.8.4/CHANGES.txt0.7.4 * add nodetool join command (CASSANDRA-2160) * fix secondary indexes on pre-existing or streamed data (CASSANDRA-2244) * initialize endpoint in gossiper earlier (CASSANDRA-2228) * add ability to write to Cassandra from Pig (CASSANDRA-1828) * add rpc_[min|max]_threads (CASSANDRA-2176) * add CL.TWO, CL.THREE (CASSANDRA-2013) * avoid exporting an un-requested row in sstable2json, when exporting a key that does not e
cassandra升级版本选择
本文档假想cassandra版本升级问题,预设使用cassandra增量备份特性的需求,考虑升级最终版本的选择。过程:一、解决此需求至少需要回答的三个问题二、对比升级到0.8.0和0.7.4对当前系统的影响三、给出最终结论一、需要回答的三个问题1.为什么要升级到0.8.0?会带来那些好处?2.升级到0.8.0是否会带来潜在的问题?3.升级到0.7.4是否就已经能够满足需求?二、升级到0.8.0和0.7.4对当前系统的影响升级到0.8.0是否能够满足当前对增量备份的需求,并带来额外的带来风险,后续版本有没有发布0.8版本的bug1. 0.8.0与0.7.1及以后版本节点间通信的协
单元测试之模拟对象技术
模拟对象技术(打桩)在实际项目中,开发人员自己的代码往往需要和其他的代码模块或系统进行交互,但在测试的过程中,这些需要被调用的真实对象常常很难被实例化,或 者这些对象在某些情况下无法被用来测试,例如,真实对象的行为无法预测,真实对象的行为难以触发,或者真实对象的运行速度很慢。这时候,就需要使用模拟对 象技术(Mock),利用一个模拟对象来模拟我们的代码所依赖的真实对象,来帮助完成测试,提高测试覆盖率,从而提高代码质量。模拟对象技术利用了在面向 接口的编程中,由于代码直接对接口进行调用,所以代码并不知道引用
一些敏捷开发词汇汇总
敏捷词汇:迭代(Iteration):在Scrum中叫做"sprint"客户(Customer):在Scrum中叫做"product owner"教练(Coach):相当于Scrum Master or team lead,尽管有时候项目经理也充当这个角色;每日立会(Standup meetings):每天的项目状态交流会议,在Scrum中叫做“daily scrums”;回顾(retrospectives)故事列表(story-board)QIR,就是快速原型Quick Prototype迭代Iterator重构RefactorAgile DevelopmentAgile ModelingExtreme Programming (XP)ScrumFeature Driven Development (FDD)Test Driven Development
code art
PART ONE============= public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("GBK"); HttpSession session = request.getSession(); String sid = session.getId(); CartMap cm = CartMap.getCartMap(); if (cm.carts.containsKey(sid)) { Cart cart = cm.carts.get(sid); session.setAttribute("cart", cart); response.sendRedirect("Cart.jsp"); } else { response.sendRedirect(&quo
JAVA代码查错 PART ONE
/***<最近恶补java,发现很多语法的问题只有通过范例才能有更深的认识>*<所以搜集一些java的题目,汇编一下(PART ONE),希望能到10篇后能做个总结>**/JAVA代码查错1.abstract class Name { private String name;public abstract boolean isStupidName(String name) { }}大侠们,这有何错误?答案: 错。abstract method必须以分号结尾,且不带花括号。2.public class Something { void doSomething () { private String s = "";int l = s.length();}}有错吗?答案: 错。局部变量前不能放置任何访问修饰符 (private,pu
note tips
编码实践数据结构性能可靠性tips:NIO -多线程 +连接池技术设计模式marshallers annotation-based frameworkSpring[@more@]
yaml (YAML Ain't Markup Language)
YAML:YAML Ain't Markup LanguageYAML是一种直观的能够被电脑识别的的数据数据序列化格式YAML实现简单,解析成本很低,易于同脚本语言交互,YAML特别适合在脚本语言中使用,YAML做配置文件也不错,CASSANDRA就是使用cassandra.yaml作为参数配置文件。目前已有多种语言的YAML解析器。[@more@]
使用YCSB工具工具进行cassandra性能测试
ant安装:export JAVA_HOME=/usr/java/jdk1.6.0_25/export ANT_HOME=/home/wangm/apache-ant-1.8.2export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATHYCSB安装:antant dbcompile-cassadra-0.7java -cp build/ycsb.jar:db/hbase/lib/* com.yahoo.ycsb.Client -p columnfamily=f1 -db com.yahoo.ycsb.db.HBaseClient -P workloads/workloada -threads 50 -load Core workload package propertiesThe property files used with the core workload generator can specify values for the following properties:fieldcount: the number of fields
cassandra多节点集群环境测试
cassandra多节点集群环境测试:一、测试环境描述:1.硬件环境cpu:VM@1.6GHzdisk:20G Mem:1G2.软件环境OS:suse 11 2.6.9-89.0.19.ELsmp,x86 jdk 1.6.0casandra:0.8.0client:hector3.配置参数:3.1.JVM参数:JVM_OPTS3.2.cassandra配置参数ReplicationFactor:3NODES:318Partitioner:RandomPartitionerConsistencyLevel:灵活指定InitialToken:I*2^127/N (共N个节点,第i个节点的token)ColumnType=Standardcolumn size:(key+value=500B)column count:30Billions二、性能测试1.数据读测试1.1CPU1.2Memory1.3I/O1.4Network2.数据写测试1.1CP
cassandra tombstone导致写数据丢失问题征解
问题描述:1.casssandra中数据结构:ColumnFamily->Column->key-value(key,value,timestamp)2.cassandra使用timestamp来判断数据的新旧。3.cassandra删除column是通过写一个新column来实现的,这个column是tombstone。4.如果添加一个tombstone到cassandra中删除一个column后,在tombstone还未被清除前,再次写入一个时间戳更小的相同column,此时会导致这次的写入成功但用户查询不到该次写入的column。clue--------------------------------how can i get a tombstone’s timestamp?I understand that tombstones are internal impl
阅读《Tomcat 系统架构与设计模式》
大致阅读的了一遍,有很多内容还没有涉及到,只能留一个大致的印象,以后不断扩展,再来看这样的文章可能又有新的收获。http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/[@more@]
cassandra get set同步问题
import quicktime.std.clocks.Clock;import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;import me.prettyprint.cassandra.serializers.StringSerializer;import me.prettyprint.cassandra.service.CassandraHostConfigurator;import me.prettyprint.hector.api.Cluster;import me.prettyprint.hector.api.Keyspace;import me.prettyprint.hector.api.beans.HColumn;import me.prettyprint.hector.api.factory.HFactory;import me.prettyprint.hector.api.mutation.Mutator;import me.prettyprint.hector.api.query.ColumnQuery;impor
简单的hector连接casssandra测试
import me.prettyprint.cassandra.serializers.StringSerializer;import me.prettyprint.cassandra.service.CassandraHostConfigurator;import me.prettyprint.hector.api.Cluster;import me.prettyprint.hector.api.Keyspace;import me.prettyprint.hector.api.factory.HFactory;import me.prettyprint.hector.api.mutation.Mutator;public class ExampleClient { public static void main(String[] args) throws IllegalStateException,Exception { CassandraHostConfigurator cassandraHostConfigurator=new CassandraHostConfigura
cassandra&hector版本问题
cassandra,hector版本兼容问题cassandra自身的兼容问题:cassandra0.6->cassandra0.7 节点间数据通信的方式发生了变化,从0.6升级到0.7必须经过整个集群重启。cassandra0.7->cassandra0.8 可以进行无损升级,只需要进行滚动升级即可,每次停一个节点升级,不影响整个集群对外提供服务。cassandra与hector的兼容问题:hector无法预知未来cassandra的变更,所以不保证前向兼容,通常对上一个版本保持后向兼容。hector的版本模式如:0.6.0-90.6.0表示cassandra的版本-9表示hector的版本一般cassandra发布版本后,hector随后发布新版本,
response from oracle
[@more@]
MerkleTree在数据校验上的应用
Anti-Entropy如何通过对比MerkleTree来发现节点数据的一致?比较恢复的最细粒度是?MerkleTree又称HashTree,因为它的节点保存的都是hash值,叶子节点保存的是文件块,分片,或者cassandra中row key的hash值等,非叶子节点保存的是子节点值的hash,即hash的hash。通过比较树根的hash可以快速的确认当前tree映射的数据有没有发生变化,并可以在log(N)时间内快速的定位是那部分发生了变化。这样看来MerkleTree是很强大的,在cassandra中就是通过MerkleTree对比来进行多个节点上同一个range的多个副本数据的一致性检查,从而进行readrepair一致
广东移动经营分析系统指标数据(摘自严飞雪报告)
广东移动经营分析系统的数据仓库情况介绍:03 底开始建设到现在,50 T -100T 的数据仓库,节点数 32 个ETL 入库每天 20亿条记录数据库系统容量 100 T ETL 系统为 20 T硬件状况 200 T 的阵列,IBM P595 系列主机 OLTP 交易,数据的增长(7000万用户,每天清单30亿)[@more@]
分布式数据库重要技术概念小记
《源码解析:http://blog.csdn.net/FireCoder/article/details/5700982》http://io.typepad.com/glossary.html#gls-consistencylevel垂直扩展 vs. 水平扩展(Sharding)Feature-based shard or functional segmentationKey-based shardingLookup table CAP理论ConsistencyAvailabilityPartition Tolerance两阶段提交GossipGossip算法又称为疫情传播算法随机选择节点同步状态,在有限步内便可达到所有节点视图一致。消息的类型:PushPullPush-PullBloom FilterBloom Filter 通过连续的哈希函数映射Key到位数组因为不同Key之间存在Hash碰撞,所