riak源码阅读手记 与Cassandra相比
riak源码阅读手记一 初出茅庐 项目入口
http://www.54chen.com/_linux_/riak-source.html
riak源码阅读手记二 左右开弓 启动
http://www.54chen.com/_linux_/riak-cource-code.html
riak源码阅读手记 运行安装
http://www.54chen.com/_linux_/riak-source-install-run.html
一些常用的指令:
http://wiki.basho.com/Command-Line-Tools.html#riak-admin
实现上:
1)虽然二者都是dynamo的实现,具体方法还是不一样的,riak更忠于dynamo的原文档,实现了所有文档提到的关键点。同时还增加了map reduce和links等功能。
2)Cassandra略去了一些文档里的关键点:向量时钟、按照key范围的大分区等。增加了一些方法如:范围查询、固定分区。
扩展:
1) riak提供了bin/riak join这样的命令来加入新的节点,基本完全按照dynamo文档所说的一样来实现了,从多个节点去获取原来的负载和数据回来,每个节点的压力都可以得到平衡。
2)相比之下,Cassandra集群的节点需要计算数据的一个范围。当加入节点时,Cassandra的策略是分出来相应分区上一半的范围去新节点。这点在一个Cassandra集群需要加节点时会很痛苦,可能会存在两个节点之间大规模的数据转移。
查询和分布:
1)riak有map reduce。
2)Cassandra可以接ha
54chen Twitter memo 2011-09-11
riak源码阅读手记 运行安装 http://t.co/L5ocH6k #
在享受流量冲击带来的兴奋之余,是不是应该考虑,是根据10%的用户建议去做损害100%用户体验的事情,还是让100%的用户可以平滑地享受整个操作过程。大学的报课系统你用过吧? #
54chen Twitter memo 2011-09-04 http://t.co/J7xsiSU #
riak源码阅读手记 运行安装
riak源码阅读手记一 初出茅庐 项目入口
http://www.54chen.com/_linux_/riak-source.html
riak源码阅读手记二 左右开弓 启动
http://www.54chen.com/_linux_/riak-cource-code.html
代码运行入口
riak-kv/ebin/riak_kv.app文件定义了otp标准项目的结构,一个不错的实例:http://www.iteye.com/topic/342819
{mod, {riak_kv_app, []}}一行定义了入口。打开riak_kv_app文件:
-export([start/2,stop/1]).
定义了两大个方法,start和stop。
先看start:
启动riak_kv及相关的server。
检查系统时间。
加入系统变量。
确保设置NWR的值和一些vclock的初始值。
看storage_backend是否启动。
在cluster_info中注册。
启动supervisor。
全部启动。
stop:application:stop。
跑一把试试:
A机:192.168.103.10
B机:192.168.97.48
C机:192.168.100.52
三个节点,已经装好erlang R13B04。
先在A机操作:
wget http://downloads.basho.com/riak/riak-0.14/riak-0.14.2.tar.gz
tar zxvf riak-0.14.2.tar.gz
cd riak-0.14.2
make rel
然后在rel/r
54chen Twitter memo 2011-09-04
淘宝分布式数据库系统OceanBase观后闲话小记 http://t.co/dn0qS7I #
今天是狂暴的一天,http://t.co/hTGXSWX http://t.co/iJT4yTd http://t.co/UG3Kv2Y 小米手机第一批工程机开秒了,各处都有倒计时。 #
54chen Twitter memo 2011-08-28 http://t.co/ODJthD5 #
淘宝分布式数据库系统OceanBase观后闲话小记
http://code.taobao.org/trac/OceanBase/wiki/intro
讲得还比较细。
数据模型:
oceanBase采用类似cassandra的tablet/sstable数据模型实现,简单说就是bigtable的数据模型。
系统目标:
其目标比较明确,是一个强CA类系统,P(分区能力)。目标是强一致性、高可用性,分区能力稍弱。从文档上看,他们并不担心的快速的数据增长量。
去中心化:
见图:
RootServer/UpdateServer是一个中心节点,这个有死翘翘的可能性(好吧,他们搞了一主一备)。
支持的操作:
基础的merge/join都可以,一般使用上是够用了。DDL DML的定义基本上是还需要发展的。另外如果开源出来了,广泛项目使用意义上,还需要支持UDF user defined function,实际上把mysql文档实现一遍就ok了。
继续观望,欢迎抛砖。向开源的项目致敬。
54chen Twitter memo 2011-08-28
riak源码阅读手记二 左右开弓 启动 http://t.co/G6kB76e #
riak源码阅读手记一 初出茅庐 项目入口 http://t.co/aA32hlp #
54chen Twitter memo 2011-08-21 http://t.co/9K4IoNr #
riak源码阅读手记二 左右开弓 启动
目标系统(target system)
OTP系统定义里有这么一个东西:
可以被一般的erl脚本启动的系统叫基础目标系统;
除此之外还可以做运行时代码替换的系统叫简单目标系统;
如果还支持日志输出到文件、自动定时启动的话就叫做内嵌目标系统。
启动目标系统的方式
通过erlang/OTP标准的reltool工具生成的目标系统,可以用多种方式灵活启动。
第一种:
os> /usr/local/erl-target/bin/erl
这只启动了一个基础目标系统。基本没什么具体功能。
第二种:
os> /usr/local/erl-target/bin/erl -boot /usr/local/erl-target/releases/FIRST/start
用-boot参数,这可以启动一个简单目标系统。releases/RELEASES文件可用来做热替换。
第三种:
bin/start
这个脚本会去调用 bin/run_erl ,最终调用 bin/start_erl启动。run_erl是一个提供运行时日志输出到文件的封装。还提供了简单的机制attach到一个erlang shell。
自定义behaviour
-spec behaviour_info(atom()) -> 'undefined' | [{atom(), arity()}].
behaviour_info(callbacks) ->
[{start,2}, % (Partition, Config)
{stop,1}, % (State)
{get,2},
riak源码阅读手记一 初出茅庐 项目入口
简介
basho(相扑)是一家美国的技术公司,专营数据存储和管理软件,11年6月30日获得了750万美元的融资。basho将riak开源,通过收取riak的维护和管理界面软件的使用费用来赚钱,和resin的公司类似。
今天主要研究的是,basho旗下的riak:一个类dynamo系统的kv存储。riak使用了erlang进行开发,将代码精简到极致。
rebar
riak的代码使用了一个叫做rebar(钢筋)的erlang构建工具,使用起来真的很方便,其使用方法建议参考这篇文章:http://www.linezing.com/blog/?p=347。每个项目下,都有一个叫做rebar.config的文件,里面用erlang语法记录了这个项目需要的目录、环境、版本、以及依赖的包在github上的位置。真的很方便。riak项目中,rebar和reltool被大量使用。reltool使用方法参见 http://erlangdisplay.iteye.com/blog/508944
riak的总控工程:https://github.com/basho/riak。
看rebar.config定义的依赖部分:
{deps, [
{cluster_info, "1.1.*", {git, "git://github.com/basho/cluster_info", {branch, "master"}}}, %% 这个模块提供了一个松散易扩展的导出集群节点状态的办法。可以收集的信息包括:时间、所有的erlang进程的静态统计、网络连接情况、cpu和内存、大队列进程、内部内存调
54chen Twitter memo 2011-08-21
basho的产能:23个代码提供者,46个项目。这就是erlang的产能。 #
今天挺多人上不了gtalk,神马情况 #
Rebar是一款Erlang的构建工具,使用它可以方便的编译、测试erlang程序、内联驱动和打包Erlang发行版本。 http://t.co/jzC5m5k #
艳阳高照,小米手机于今天正式发布。http://xiaomi.com #
记hadoop故障一例:BlockAlreadyExistsException http://t.co/C1K4DZi #
54chen Twitter memo 2011-08-14 http://t.co/tQPFCNF #
记hadoop故障一例:BlockAlreadyExistsException
hive版本:0.7.0 hadoop版本:0.20.2
在线上跑了一个季度了,基本上没什么问题,今天突然出了问题。
在hive执行时留下的蛛丝马迹:
Failed with exception org.apache.hadoop.hdfs.server.namenode.NotReplicatedYetException: Not replicated yet:/tmp/hive-root/hive_2011-08-15_00-31-02_332_247809173824307798/-ext-10000/access_bucket-2011-08-14_00004
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1257)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422)
at sun.reflect.GeneratedMethodAccessor2037.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Met
54chen(陈臻),大负载构架挑战者,不折不扣的blogger,曾经还是业余老湿,梦想把技术变成科学,现在奋斗在无线互联网创业公司。
EX:
人人网分布式研究人员
雅虎、淘宝搜索技术人员
金山抠腚人员
暂居北京,情绪稳定。
曾用代号有:cc0cc、零蛋。
EX:
人人网分布式研究人员
雅虎、淘宝搜索技术人员
金山抠腚人员
暂居北京,情绪稳定。
曾用代号有:cc0cc、零蛋。
SEARCH
Tag
Comments
- wendell: 初学,不知道load的文件怎么来的, ...
- nodexy: 看起来好适合铁道部啊 哈哈 个人...
- robin: 陈兄,我要买小米手机,帮我搞一个...
- 54chen: 您能提供下zip包的名字、configure参数...
- yaodong: nginx/1.0.10 刚刚测试 body_max_count 这个...
- paying: 老兄给我一份好吗?476356282@qq.co...
- 54chen: 感谢测试,已经fixed且push到gi...
- yaodong: 谢谢 辛苦啦, 我会及时关注 如果有...
- 54chen: 结果:1.0.10的参数检查严格了,今天...
- 54chen: 1.0.9下测试通过,今天我试试1.0.10版...




