Tachyon是一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存在tachyon里的文件。把Tachyon是架构在最底层的分布式文件存储和上层的各种计算框架之间的一种中间件。主要职责是将那些不需要落地到DFS里的文件,落地到分布式内存文件系统中,来达到共享内存,从而提高效率。同时可以减少内存冗余,GC时间等。
&ltimg src="https://pic3.zhimg.com/690affef49779f6c32d06c568e81f446_b.png" data-rawwidth="810" data-rawheight="311" class="origin_image zh-lightbox-thumb" width="810" data-original="https://pic3.zhimg.com/690affef49779f6c32d06c568e81f446_r.png"&gt
Tachyon架构
Tachyon的架构是传统的Master—slave架构,这里和Hadoop类似,TachyonMaster里WorkflowManager是 Master进程,因为是为了防止单点问题,通过Zookeeper做了HA,可以部署多台Standby Master。Slave是由Worker Daemon和Ramdisk构成。这里个人理解只有Worker Daemon是基于JVM的,Ramdisk是一个off heap memory。Master和Worker直接的通讯协议是Thrift。
下图来自Tachyon的作者Haoyuan Li:
&ltimg src="https://pic4.zhimg.com/97eeeaf23b4cc3d9e96376a0191dcdc3_b.png" data-rawwidth="854" data-rawheight="571" class="origin_image zh-lightbox-thumb" width="854" data-original="https://pic4.zhimg.com/97eeeaf23b4cc3d9e96376a0191dcdc3_r.png"&gt
三、Fault Tolerant
Tachyon是一个分布式文件存储系统,但是如果Tachyon里的容错机制是怎么样的呢?
Tachyon使用血统这个我们在Spark里的RDD里已经很熟悉了,这里也有血统这一概念。会使用血统,通过异步的向Tachyon的底层文件系统做Checkpoint。
当我们向Tachyon里面写入文件的时候,Tachyon会在后台异步的把这个文件给checkpoint到它的底层存储,比如HDFS,S3.. etc...
这里用到了一个Edge的算法,来决定checkpoint的顺序。
比较好的策略是每次当前一个checkpoint完成之后,就会checkpoint一个最新生成的文件。当然想Hadoop,Hive这样的中间文件,需要删除的,是不需要checkpoint的。
下图来自Tachyon的作者Haoyuan Li:
&ltimg src="https://pic1.zhimg.com/741e6361a168cfb8a9f3193678d27f4c_b.png" data-rawwidth="822" data-rawheight="609" class="origin_image zh-lightbox-thumb" width="822" data-original="https://pic1.zhimg.com/741e6361a168cfb8a9f3193678d27f4c_r.png"&gt
关于重新计算时,资源的分配策略:
目前Tachyon支持2种资源分配策略:
1、优先级的资源分配策略
2、公平调度的分配策略
&ltimg src="https://pic2.zhimg.com/92d8d5e7261f81e8089fc69a62023421_b.png" data-rawwidth="940" data-rawheight="621" class="origin_image zh-lightbox-thumb" width="940" data-original="https://pic2.zhimg.com/92d8d5e7261f81e8089fc69a62023421_r.png"&gt
四、总结
Tachyon是一个基于内存的分布式文件系统,通常位于分布式存储系统和计算框架直接,可以在不同框架内共享内存,同时可以减少内存冗余和基于Jvm内存计算框架的GC时间。
Tachyon也有类似RDD的血统概念,input文件和output文件都是会有血统关系,这样来达到容错。并且Tachyon也利用血统关系,异步的做checkpoint,文件丢失情况下,也能利用两种资源分配策略来优先计算丢失掉的资源。
选了10个最强大、最易用的CMS,向大家做一个简要介绍。Alfresco是一个开源的企业网站内容管理系统,它提供了文档管理、多人协作、记录管理、知识管理网页内容和图像管理等功能。它使用Spring、 Hibernate、 Lucene 和JSF等最新java技术构建了模块化的系统架构。
Alfresco官方网站:http://www.alfresco.com/
中文教程:http://blog.csdn.net/alfresco/
DotCMS是一个开源的企业级内容管理系统,它融入了电子商 务、个性化设置、客户关系管理工具等功能,它可以方便的建立基于各种关系的数据结构和数据库,它可以使用模板快速创建页面,并且提供了一个强大的所见即所 得(WYSIWYG)编辑器。用户可以使用加载外部模块的功能快速的建立Ajax应用、搜索、MP3播放器、幻灯片和相册等功能。
DotCMS官方网站http://dotcms.org/
中文安装教程http://www.javaeye.com/wiki/topic/277794
Magnolia是一个老牌的java内容管理系统,目前已经发布了第四版。它的独特之处在于可以定制内容模型,以返回数组形式来搞定各种不确定的 功能。它遵循W3C标准并且在搜索引擎优化上有许多优势。同时它支持java内容仓库( java content repositories , JCR) 的API。
Magnolia官方网站http://www.magnolia-cms.com/home.html
OpenCms
它提供了一套建立和维护网站的方便的工具。在内容建设方面,它拥有一个易于使用的界面和所见即所得编辑器,在网页生成上它使用了一个先进的页面模板。
OpenCMS官方网站http://www.opencms.org/opencms/en/index.html
中文网站http://www.opencms.cn/
Blandware AtLeap是一个多语种的免费Java内容管理系统,它包含了全文搜索引擎,可以算是一个能让你方便的编写应用的网站框架。
Atleap官方网站https://atleap.dev.java.net/
Fedora是“Flexible Extensible Digital Object Repository Architecture”的缩写,并不是Linux发行版Fedora,是一个数字资源管理系统,它可以创建很多类型的数字图书馆、资料库、档案馆系统 等。
Fedora官方网站http://www.fedora-commons.org/
Apache LenyaOpenEdit是一个开源的内容管理系统,它旨在建设基于在线数字资产的多媒体网站。它提供在线编辑,动态布局,拼写检查,用户管理器,文件管理器,版本控制和通知工具。同时包含企业级的插件,如电子商务,内容管理,博客,活动日程表,社交网络工具等。
OpenEdit官方网站http://www.openedit.org/
这是一个开源的 Java/XML 内容管理系统,提供了版本控制、多站点管理、调度、搜索、所见即所得编辑以及工作流程等功能。Apache Lyenya使用基于模块的Cocoom开源程序框架。
Apache Lyenya官方网站http://lenya.apache.org/
参考资料: http://www.adminbang.com/Webbiz/Exp/20091002-79842.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)