- 浏览: 133556 次
博客专栏
-
基于Fourinone实现...
浏览量:58451
最新评论
-
tx6731:
同问2楼问题,一直没有输出result,除非加sleep
<一>基于Fourinone实现分布式计算上手指南和demo -
妞给爷小个:
<一>基于Fourinone实现分布式计算上手指南和demo -
Mac_J:
楼主和我的想法几乎一模一样
Fourinone架构原理ppt -
chinshishoo:
开始学习分布式,找到这个4in1,立马放弃hadoop,had ...
CoolHash数据库引擎压测对比报告 -
fourinone:
lovingshu 写道 ,看了相关的,觉得coolhash确 ...
CoolHash数据库的产品宣言(Fourinone4.0版)
文章列表
前言:
无论什么样的并行计算方式,其终极目的都是为了有效利用多机多核的计算能力,并能灵活满足各种需求。相对于传统基于单机编写的运行程序,如果使用该方式改写为多机并行程序,能够充分利用多机多核cpu的资源,使得运行效率得到大幅度提升,那么这是一个好的靠谱的并行计算方式,反之,又难使用又难直接看出并行计算优势,还要耗费大量学习成本,那就不是一个好的方式。
由于并行计算在互联网应用的业务场景都比较复杂,如海量数据商品搜索、广告点击算法、用户行为挖掘,关联推荐模型等等,如果以真实场景举例,初学者很容易被业务本身的复杂度绕晕了头。因此,我们需要一个通俗易懂的例子来直接看到并行计算的优势。
数字排列组合 ...
分布式协同是分布式应用中不可缺少的,通常担任协调者的角色,或者说是将多机协同的职责从分布式应用中独立出来,以减少系统的耦合性和增强扩充性。Apache的Zookeeper, google的Chubby都是分布式协同的实现者。fourinone实际上可以单独当做Zookeeper用,它使用最少的代码实现了Zookeeper的所有功能,并且力图做到功能更强但是使用更简洁。
一、实现原理
fourinone对分布式协同的实现, 是通过建立一个domain,node两层结构的节点信息去完成,domain可以是分类或者包,node可以是具体属性,domain和node都是自己根据需求设计命名,比如可以将 ...
本ppt完整介绍了大数据的背景、机遇和挑战,并且相关的落地技术和业界状况,为大数据的研究提供全面的参考
又到一年校招时,阿里集团虽然今年休养生息,缩紧招聘,但是现在继续开放校招,不过只招a类学生,也就是重点学校的最优学生(面试官认为),以往多半是研究生居多,本科生录用比率减少,但是编程逻辑思维好的学生仍然是不多的,这 ...
在分布式计算上手demo,分布式计算sayhello,分布式计算完整demo中,
对于工人(worker)、工头(ctor),parkserver在多台计算机上的部署和配置:
每台计算机放置实现类,fourinone.jar,config.xml文件即可,parkserver的ip配置要保持一致(也可 ...
假设你已经看过分布式计算上手demo指南,对fourinone基本的分布式并行计算方式有了初步了解。
本demo演示了工头和几个工人之间互相sayhello的简单例子,从而了解到集群计算节点之间互相交互,以及工头批量处理和工人互相传递数据(多用于合并)的功能。
HelloCtor:是一个工头实现,它实现giveTask接口,它首先通过getWaitingWorkers获取到一个线上工人的集合,然后通过doTaskBatch进行批量任务处理,这里工头向每个工人说句“hello”打招呼。doTaskBatch有两个参数,分别是工人集合和任务,该方法会等到每个工人都执行完该任务才返回,因此使用do ...
对于一个分布式计算的应用,如果不需要自动部署,将工头工人程序文件分别部署到相应机器运行即可,不需要过多配置。
fourinone2.0可以支持自动化class和jar包部署,class和jar包只需放在工头机器上, 各工人机器会自动获取并执行,兼容操作系统,不需要进行安全密钥复杂配置.
假设有一个分布式计算job,包括三个程序文件:
JobCtor:包工头实现
JobWorker:农民工实现
JobHelp:工人帮助类
如果需要自动部署,可以将上面三个class文件都放置在工头机器上,并在工头实现里指定工人实现类
在JobCtor里通过下面代码设置:
wks[0].setWorker(ne ...
淘宝Fourinone2.0提供了一个4合1分布式框架和简单易用的编程api,实现对多台计算机cpu,内存,硬盘的统一利用,从而获取到强大计算能力去解决复杂问题。Fourinone框架提供了一系列并行计算模式(农民工/包工头/职介绍/手工仓库 ...
Fourinone2.0里通过FttpAdapter和FileAdapter实现文件io的支持。其中,FttpAdapter提供对远程文件的操作,FileAdapter提供对本地文件的操作,两者api和使用相似,这里主要说明FttpAdapter:
FttpAdapter提供了对分布式文件的便利操作, 将集群中所 ...
FileBatch类提供了一系列对批量并行读写操作支持(包括对FttpAdapter和FileAdapter),它跟并行读写的区别是不需要检查结果,会等到所有并行读写任务全部完成才返回,并在发生异常时提供事务补偿支持。
1、批量并行读:public R ...
FttpAdapter是通过FttpReadAdapter的tryReadAll方法进行并行读FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");Result<byte[]> rs = fa.getFttpReader().tryReadAll();
调用tryReadAll会立即返回一个Result<byte[]>,但是不能马上获取到 ...
假设通过FttpAdapter已经读取到远程文件中一部分数据,如下:FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");FttpReadAdapter reader = fa.getFttpReader();byte[] bts = reader.readAll();
上面得到一个byte数组,那么如何解析它呢,可以通过byte初始化得到一个ByteReadParserByteReadParser brp = FileAdapter.getByteReadParser(bts);
...
FttpAdapter是通过FttpReadAdapter来直接读取远程文件内容
FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log");FttpReadAdapter reader = fa.getFttpReader();byte[] bts = reader.readAll();
上面是读取整个文件的内容,如果文件内容很大,每次只读取一部分内容,需要指定FttpReadAdapter的读取范围:FttpReadAdapter reader = fa.getFttpReader(5 ...
集群文件复制是经常面临的需求,比如备份容灾,文件迁移,同步数据等等
FttpAdapter提供了简单高效的文件复制方法,支持远程文件的集群内复制FttpAdapter fromfile = new FttpAdapter("fttp://10.232.20.151/home/log/a.log");FttpAdapter tofile = fromfile.copyTo("fttp://10.232.20.154/home/log/a.log",FileAdapter.m(1));
上面代码代表将a.log文件复制到其他机器并得到相应的文件对象这里的 ...
FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/qianfeng.py/fttp/tmp/1.log");上面实例化一个FttpAdapter类,并输入一个fttp路径,可以是一个目录路径,也可以是个文件路径
FttpAdapter类提供了一系列访问远程文件的方法:createDirectory和createFile方法分别创建目录和文件
rename方法进行重命名,比如将fa的文件名重命名为2.log:fa.rename("2.log")rename方法返回一个新的Fttp ...