自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(19)
  • 资源 (4)
  • 收藏
  • 关注

原创 Fourinone2.0对分布式文件的简化操作

Fourinone2.0里通过FttpAdapter和FileAdapter实现文件io的支持。其中,FttpAdapter提供对远程文件的操作,FileAdapter提供对本地文件的操作,两者api和使用相似,这里主要说明FttpAdapter:FttpAdapter提供了对分布式文件的便利操作, 将集群中所有机器的硬盘资源利用起来,通过统一的fttp文件路径访问,并且windows和l...

2012-05-30 14:17:08 344

操作分布式文件之八:如何批量并行读写远程文件和事务补偿处理

FileBatch类提供了一系列对批量并行读写操作支持(包括对FttpAdapter和FileAdapter),它跟并行读写的区别是不需要检查结果,会等到所有并行读写任务全部完成才返回,并在发生异常时提供事务补偿支持。 1、批量并行读:public Result<byte[]>[] readAllBatch(TryByteReadAdapter[] fras)实现对多个Fttp...

2012-05-30 13:51:23 115

操作分布式文件之七:如何并行读写远程文件

FttpAdapter是通过FttpReadAdapter的tryReadAll方法进行并行读FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");Result<byte[]> rs = fa.getFttpReader().tryReadAll(); 调用tryReadAll会立即返回一...

2012-05-30 13:37:39 133

原创 操作分布式文件之六:如何解析远程文件

假设通过FttpAdapter已经读取到远程文件中一部分数据,如下:FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");FttpReadAdapter reader = fa.getFttpReader();byte[] bts = reader.readAll();上面得到一个byte数组,那么如何解...

2012-05-30 11:55:36 84

原创 Fourinone 分布式框架 2.0 正式版发布

Fourinone2.0提供了一个4合1分布式框架和简单易用的编程api,实现对多台计算机cpu,内存,硬盘的统一利用,从而获取到强大计算能力去解决复杂问题。Fourinone框架提供了一系列并行计算模式(农民工/包工头/职介绍/手工仓库)用于利用多机多核cpu的计算能力;提供完整的分布式缓存和小型缓存用于利用多机内存能力;提供像操作本地文件一样操作远程文件(访问,并行读写,拆分,排它,复制,解析

2012-05-29 15:49:46 931

原创 Fourinone2.0对分布式文件的简化操作

Fourinone2.0里通过FttpAdapter和FileAdapter实现文件io的支持。其中,FttpAdapter提供对远程文件的操作,FileAdapter提供对本地文件的操作,两者api和使用相似,这里主要说明FttpAdapter:FttpAdapter提供了对分布式文件的便利操作, 将集群中所有机器的硬盘资源利用起来,通过统一的fttp文件路径访问,如:windows:f

2012-05-29 15:45:45 647

原创 操作分布式文件之八:如何批量并行读写远程文件和事务补偿处理

FileBatch类提供了一系列对批量并行读写操作支持(包括对FttpAdapter和FileAdapter),它跟并行读写的区别是不需要检查结果,会等到所有并行读写任务全部完成才返回,并在发生异常时提供事务补偿支持。1、批量并行读:public Result[] readAllBatch(TryByteReadAdapter[] fras)实现对多个FttpReadAdapter任务

2012-05-29 15:35:15 894

原创 操作分布式文件之七:如何并行读写远程文件

FttpAdapter是通过FttpReadAdapter的tryReadAll方法进行并行读FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");Result rs = fa.getFttpReader().tryReadAll();调用tryReadAll会立即返回一个Result,但是不能马

2012-05-29 15:34:18 795

原创 操作分布式文件之六:如何解析远程文件

假设通过FttpAdapter已经读取到远程文件中一部分数据,如下:FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");FttpReadAdapter reader = fa.getFttpReader();byte[] bts = reader.readAll();上面得到一个byte数组

2012-05-29 15:33:24 374

原创 操作分布式文件之五:如何读写远程文件

FttpAdapter是通过FttpReadAdapter来直接读取远程文件内容FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");FttpReadAdapter reader = fa.getFttpReader();byte[] bts = reader.readAll();上面是读取整

2012-05-29 15:32:14 506

原创 操作分布式文件之四:如何进行集群内文件复制和并行复制

集群文件复制是经常面临的需求,比如备份容灾,文件迁移,同步数据等等FttpAdapter提供了简单高效的文件复制方法,支持远程文件的集群内复制FttpAdapter fromfile = new FttpAdapter("fttp://10.232.20.151/home/log/a.log");FttpAdapter tofile = fromfile.copyTo("fttp://

2012-05-29 15:30:26 689

原创 操作分布式文件之三:如何访问和操作远程文件

FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/qianfeng.py/fttp/tmp/1.log");上面实例化一个FttpAdapter类,并输入一个fttp路径,可以是一个目录路径,也可以是个文件路径FttpAdapter类提供了一系列访问远程文件的方法:createDirectory和createFile

2012-05-29 15:29:38 526

原创 操作分布式文件之二:如何访问集群文件根目录

启动FttpAdapter后,可以使用它的api进行相关操作:FttpAdapter.fttpRoots()是一个静态方法,可以得到集群文件系统根目录,它返回一个String数组,通常是ip字符对应每台计算机。listRoots()方法可以得到每台计算机上的硬盘目录,比如:FttpAdapter fa = new FttpAdapter("fttp://"+fttproots[i]);

2012-05-29 15:28:43 1002

原创 操作分布式文件之一:如何搭建配置FttpAdapter环境

FttpAdapter的使用很简单,在每台计算机上启动一个FttpServer即可,另外需要启动一个ParkServer负责协同。ParkServer也可以和其中一个FttpServer放在相同计算机上1、启动ParkServerDemo(它的IP端口已经在配置文件的PARK部分的SERVERS指定)2、每台计算机启动FttpServer,需要指定该计算机的ip为输入参数启动好后,然后

2012-05-29 15:27:05 727

操作分布式文件之五:如何读写远程文件

FttpAdapter是通过FttpReadAdapter来直接读取远程文件内容FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");FttpReadAdapter reader = fa.getFttpReader();byte[] bts = reader.readAll();上面是读取整个文件的...

2012-05-29 15:02:09 254

操作分布式文件之四:如何进行集群内文件复制和并行复制

集群文件复制是经常面临的需求,比如备份容灾,文件迁移,同步数据等等FttpAdapter提供了简单高效的文件复制方法,支持远程文件的集群内复制FttpAdapter fromfile = new FttpAdapter("fttp://10.232.20.151/home/log/a.log");FttpAdapter tofile = fromfile.copyTo("fttp://10....

2012-05-29 14:56:29 230

操作分布式文件之三:如何访问和操作远程文件

FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/qianfeng.py/fttp/tmp/1.log");上面实例化一个FttpAdapter类,并输入一个fttp路径,可以是一个目录路径,也可以是个文件路径FttpAdapter类提供了一系列访问远程文件的方法:createDirectory和createFile方法分别...

2012-05-29 14:49:31 152

操作分布式文件之二:如何访问集群文件根目录

启动成功FttpServer后,可以使用FttpAdapter的api进行相关操作:FttpAdapter.fttpRoots()是一个静态方法,可以得到集群文件系统根目录,它返回一个String数组,通常是ip字符对应每台计算机。 listRoots()方法可以得到每台计算机上的硬盘目录,比如: FttpAdapter fa = new FttpAdapter("fttp://"+fttp...

2012-05-29 14:43:41 191

原创 操作分布式文件之一:如何搭建配置FttpAdapter环境

FttpAdapter的使用很简单,在每台计算机上启动一个FttpServer即可,另外需要启动一个ParkServer负责协同。ParkServer也可以和其中一个FttpServer放在相同计算机上1、启动ParkServerDemo(它的IP端口已经在配置文件的PARK部分的SERVERS指定)2、每台计算机启动FttpServer,需要指定该计算机的ip为输入参数启动好...

2012-05-29 14:40:18 130

fourinone架构原理

fourinone实现了对多台计算机的cpt,内存,硬盘资源的统一利用 该ppt包括了fourinon背景,架构,原理等丰富图文说明. 开发包和demo源码下载地址: http://www.skycn.com/soft/68321.html

2012-09-19

Fourinone分布式计算框架性能、压力、容灾测试报告

Fourinone在去年11月在淘宝内部通过了压测,上亿排序和wordcount等经典指标均优于hadoop,这是一份长达10多页的详细测试报告

2012-02-27

Fourinone分布式计算框架

FourInOne(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我也看了老外写的其他开源框架,也对分布式计算进行了长时间的思考,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想解决问题的初衷:我们仅仅是想写个程序把几台甚至更多的机器一起用起来计算,把更多的cpu和内存利用上,来解决我们数量大和计算复杂的问题,当然这个过程中要考虑到分布式的协同和故障处理。如果仅仅是为了实现这个简单的初衷,为什么一切会那么复杂,我觉的自己可以写一个更简单的东西,它不需要过度设计,只需要看上去更酷一点,更小巧一点,功能更强一点。于是我将自己对分布式的理解融入到这个框架中,考虑到底层实现技术的相似性,我将Hadoop,Zookeeper,MQ,分布式缓存四大主要的分布式计算功能合为一个框架内,对复杂的分布式计算应用进行了大量简化和归纳。 首先,对分布式协同方面,它实现了Zookeeper所有的功能,并且做了很多改进,包括简化Zookeeper的树型结构,用domain/node两层结构取代,简化Watch回调多线程等待编程模型,用更直观的容易保证业务逻辑完整性的内容变化事件以及状态轮循取代,Zookeeper只能存储信息不大于1M的内容,FourInOne超过1M的内容会以内存隐射文件存储,增强了它的存储功能,简化了Zookeeper的ACL权限功能,用更为程序员熟悉rw风格取代,简化了Zookeeper的临时节点和序列节点等类型,取代为在创建节点时是否指定保持心跳,心跳断掉时节点会自动删除。FourInOne是高可用的,没有单点问题,可以有任意多个复本,它的复制不是定时而是基于内容变更复制,有更高的性能,FourInOne实现了领导者选举算法(但不是Paxos),在领导者服务器宕机情况下,会自动不延时的将请求切换到备份服务器上,选举出新的领导者进行服务,这个过程中,心跳节点仍然能保持健壮的稳定性,迅速跟新的领导者保持心跳连接。基于FourInOne可以轻松实现分布式配置信息,集群管理,故障节点检测,分布式锁,以及淘宝configserver等等协同功能。 其次, FourInOne可以提供完整的分布式缓存功能。如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上百万的并发读写吞吐量,会超出单台服务器的承受力,FourInOne提供了fa?ade的解决方案去解决大集群的分布式缓存,利用硬件负载均衡路由到一组fa?ade服务器上,fa?ade可以自动为缓存内容生成key,并根据key准确找到散落在背后的缓存集群的具体哪台服务器,当缓存服务器的容量到达限制时,可以自由扩容,不需要成倍扩容,因为fa?ade的算法会登记服务器扩容时间版本,并将key智能的跟这个时间匹配,这样在扩容后还能准确找到之前分配到的服务器。另外,基于FourInOne可以轻松实现web应用的session功能,只需要将生成的key写入客户端cookie即可。 FourInOne对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它不像hadoop的中间计算结果依赖于hdfs,它使用不同于map/reduce的全新设计模式解决问题。FourInOne有“包工头”,“农民工”,“手工仓库”的几个核心概念。“农民工”为一个计算节点,可以部署在多个机器,它由开发者自由实现,计算时,“农民工”到“手工仓库”获取输入资源,再将计算结果放回“手工仓库”返回给“包工头”。“包工头”负责承包一个复杂项目的一部分,可以理解为一个分配任务和调度程序,它由开发者自己实现,开发者可以自由控制调度过程,比如按照“农民工”的数量将源数据切分成多少份,然后远程分配给“农民工”节点进行计算处理,它处理完的中间结果数据不限制保存在hdfs里,而可以自由控制保存在分布式缓存、数据库、分布式文件里。如果需要结果数据的合并,可以新建立一个“包工头”的任务分配进行完成。多个“包工头”之间进行责任链式处理。总的来说,是将大数据的复杂分布式计算,设计为一个链式的多“包工头”环节去处理,每个环节包括利用多台“农民工”机器进行并行计算,无论是拆分计算任务还是合并结果,都可以设计为一个单独的“包工头”环节。这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且链式的每个环节也方便进行监控过程。 FourInOne也可以当成简单的mq来使用,将domain视为mq队

2011-08-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除