<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>格物致知 &#187; 分布式计算</title>
	<atom:link href="http://leeing.org/category/distribute-computing/feed/" rel="self" type="application/rss+xml" />
	<link>http://leeing.org</link>
	<description>keep Thinking</description>
	<lastBuildDate>Wed, 14 Mar 2012 06:47:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Hadoop平台优化综述 (2)</title>
		<link>http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-2/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-2/#comments</comments>
		<pubDate>Thu, 12 May 2011 02:45:03 +0000</pubDate>
		<dc:creator>leeing</dc:creator>
				<category><![CDATA[hadoop]]></category>
		<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-2/</guid>
		<description><![CDATA[4.&#160;&#160;&#160;&#160; 从系统实现角度进行优化 4.1&#160;&#160;&#160; 在可移植性和性能之间进行权衡 论文[16]主要针对HDFS进行了优化，它分析了HDFS性能低下的两个原因：调度延迟和可移植性假设。 （1） 调度延迟 Hadoop采用的是动态调度算法，即：当某个tasktracker上出现空slot时，它会通过HEARBEAT（默认时间间隔为3s，当集群变大时，会适当调大）告诉jobtracker，之后jobtracker采用某种调度策略从待选task中选择一个，再通过HEARBEAT告诉tasktracker。从整个过程看，HDFS在获取下一个task之前，一直处于等待状态，这造成了资源利用率不高。此外，由于tasktracker获取新task后，其数据读取过程是完全串行化的，即：tasktracker获取task后，依次连接namenode，连接datanode并读取数据，处理数据。在此过程中，当tasktracker连接namenode和datanode时，HDFS仍在处于等待状态。 为了解决调度延迟问题，可以考虑的解决方案有：重叠I/O和CPU阶段（pipelining），task预取（task prefetching），数据预取（data prefetching）等 （2）可移植性假设 为了增加Hadoop的可移植性，它采用java语言编写，这实际上也潜在的造成了HDFS低效。Java尽管可以让Hadoop的可移植性增强，但是它屏蔽了底层文件系统，这使它没法利用一些底层的API对数据存储和读写进行优化。首先，在共享集群环境下，大量并发读写会增加随机寻道，这大大降低读写效率；另外，并发写会增加磁盘碎片，这将增加读取代价（HDFS适合文件顺序读取）。 为了解决该问题，可以考虑的解决方案有：修改tasktracker上的线程模型，现在Hadoop上的采用的模型是one thread per client，即每个client连接由一个线程处理（包括接受请求，处理请求，返回结果）；修改之后，可将线程分成两组，一组用于处理client通信（Client Thread），一组用于存取数据（Disk Threads，可采用one thread per disk）。 4.2&#160;&#160;&#160; Prefetching与preshuffling 论文[7]提出了两种优化策略，分别为Prefetching和preshuffling。 (1) PreFetching preFetching包括Block-intra prefetching和Block-inter prefetching： Block-intra Prefetching对block内部数据处理方式进行优化。采用的策略是以双向处理（bi-directional processing）方式提升效率，即一端进行计算，一端预取将要用到的数据（同步机制）。 需解决两个问题，一是计算和预取同步。借用进度条（processing bar）的概念，进度条监控两端的进度，当同步将被打破时，调用一个信号。二是确定合适的预取率。通过实验发现，预取数据量并不是越多越好。采用重复实验的方法确定预取数据率。 Block-inter Prefetching在block层面预取数据。当某个task正在处理数据块A1时，预测器预测它接下来要处理的数据块，假设是A2，A3，A4,则将这几个数据块读到task所在的rack上，这样加快了task接下来数据读取速度。 (2) PreShuffling 数据被map task处理之前，由预测器判断每条记录将要被哪个reduce task处理，将这些数据交由靠近该reduce task的节点上的map task处理。 主页：http://incubator.apache.org/projects/hama.html 4.3&#160;&#160;&#160; Five Factors 论文[8]分析了5个影响Hadoop性能的因素，分别为计算模型，I/O模型，数据解析，索引和调度，同时针对这5个因素提高了相应的提高性能的方法，最后实验证明，通过这些方法可以将Hadoop性能提高2.5到3.5倍。 （1） 计算模型 在Hadoop中，map task产生的中间结果经过sort-merge策略处理后交给reduce task。而这种处理策略（指sort-merge）不能够定制，这对于有些应用而言（有些应用程序可能不需要排序处理），性能不佳。此外，即使是需要排序归并处理的，sort-merge也并不是最好的策略。 本文实现了Fingerprinting [...]


Related posts:<ol><li><a href='http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-1/' rel='bookmark' title='Permanent Link: Hadoop平台优化综述 (1)'>Hadoop平台优化综述 (1)</a></li>
<li><a href='http://leeing.org/2011/02/24/java-%e5%a4%9a%e7%ba%bf%e7%a8%8b%ef%bc%9a%e6%8d%95%e6%8d%89%e7%ba%bf%e7%a8%8b%e4%b8%ad%e9%80%83%e9%80%b8%e7%9a%84%e5%bc%82%e5%b8%b8/' rel='bookmark' title='Permanent Link: Java 多线程：捕捉线程中逃逸的异常'>Java 多线程：捕捉线程中逃逸的异常</a></li>
<li><a href='http://leeing.org/2011/02/25/ubuntu-10-10-%e5%ae%89%e8%a3%85-hadoop-cdh-beta4/' rel='bookmark' title='Permanent Link: Ubuntu 10.10 安装 Hadoop (CDH beta4)'>Ubuntu 10.10 安装 Hadoop (CDH beta4)</a></li>
</ol>]]></description>
		<wfw:commentRss>http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hadoop平台优化综述 (1)</title>
		<link>http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-1/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-1/#comments</comments>
		<pubDate>Thu, 12 May 2011 02:35:43 +0000</pubDate>
		<dc:creator>leeing</dc:creator>
				<category><![CDATA[hadoop]]></category>
		<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-1/</guid>
		<description><![CDATA[1.&#160;&#160;&#160;&#160; 概述 随着企业要处理的数据量越来越大，MapReduce思想越来越受到重视。Hadoop是MapReduce的一个开源实现，由于其良好的扩展性和容错性，已得到越来越广泛的应用。Hadoop作为一个基础数据处理平台，虽然其应用价值已得到大家认可，但仍存在很多问题，以下是主要几个： （1）&#160;&#160;&#160;&#160; Namenode/jobtracker单点故障。 Hadoop采用的是master/slaves架构，该架构管理起来比较简单，但存在致命的单点故障和空间容量不足等缺点，这已经严重影响了Hadoop的可扩展性。 （2）&#160;&#160;&#160;&#160; HDFS小文件问题。在HDFS中，任何block，文件或者目录在内存中均以对象的形式存储，每个对象约占150byte，如果有1000 0000个小文件，每个文件占用一个block，则namenode需要2G空间。如果存储1亿个文件，则namenode需要20G空间。这样namenode内存容量严重制约了集群的扩展。 （3）&#160;&#160;&#160;&#160; jobtracker同时进行监控和调度，负载过大。为了解决该问题，yahoo已经开始着手设计下一代Hadoop MapReduce（见参考资料1）。他们的主要思路是将监控和调度分离，独立出一个专门的组件进行监控，而jobtracker只负责总体调度，至于局部调度，交给作业所在的client。 （4）&#160;&#160;&#160;&#160; 数据处理性能。 很多实验表明，其处理性能有很大的提升空间。Hadoop类似于数据库，可能需要专门的优化工程师根据实际的应用需要对Hadoop进行调优，有人称之为“Hadoop Performance Optimization” (HPO)。 为了提高其数据性能，很多人开始优化Hadoop。总结看来，对于Hadoop，当前主要有几个优化思路： （1）&#160; 从应用程序角度进行优化。由于mapreduce是迭代逐行解析数据文件的，怎样在迭代的情况下，编写高效率的应用程序，是一种优化思路。 （2）&#160; 对Hadoop参数进行调优。当前hadoop系统有190多个配置参数，怎样调整这些参数，使hadoop作业运行尽可能的快，也是一种优化思路。 （3） 从系统实现角度进行优化。这种优化难度是最大的，它是从hadoop实现机制角度，发现当前Hadoop设计和实现上的缺点，然后进行源码级地修改。该方法虽难度大，但往往效果明显。 以上三种思路出发点均是提高hadoop应用程序的效率。实际上，随着社会的发展，绿色环保观念也越来越多地融入了企业，因而很多人开始研究Green Hadoop，即怎样让Hadoop完成相应数据处理任务的同时，使用最少的能源（见参考资料[14][15]）。 本文主要介绍了当前学术界的一些优化思路，有人试图从Hadoop自动配置角度对Hadoop进行优化，但更多的是从系统实现角度进行优化，概括其优化点和实验效果如下： （1）&#160;&#160; 论文[6]试图从参数自动调优角度对Hadoop进行优化，论文只给出了可能的解决方案，并未给出实现，因而效果不可知。但它给出了一种Hadoop优化的新思路，即怎样对其190多个配置参数进行自动调整，使应用程序执行效率最高。 （2）&#160; 论文[7]提出prefetching和preshuffling机制，在不同负载不同规模集群下测试，效率提升了约73%。 （3）&#160; 论文[8]研究了影响Hadoop效率的五个因素，并通过提出相应的解决方案，使Hadoop效率提高了2.5~3.5倍。 （4）&#160; 论文[9]为Hadoop提供了一种索引机制– Trojan Index，同时提出了一种高效的join算法– Trojan Join，实验表明，效率比Hadoop和HadoopDB高很多。 除了学术界的优化，工业界也在不断进行优化以适应自己公司的产品需要，主要有： （1）Baidu公司。baidu对Hadoop中关键组件使用C++进行了重写（包括map, shuffler和reducer等），经他们内部测试（5 nodes，40GB data），效率提升了约20%（见参考资料[4]）。 （2）淘宝。淘宝针对自己集群特点（作业小，slot多，作业之间有依赖，集群共享，有些作业有时效性），对jobtracker和namenode进行了优化，据其官方博客称，其jobtracker有较大性能提升，且namenode吞吐量提升了8+倍（见参考资料[5]）。但其具体优化方法，未公开。 2.&#160;&#160;&#160;&#160; 从应用程序角度进行优化 （1） 避免不必要的reduce任务 如果要处理的数据是排序且已经分区的，或者对于一份数据, 需要多次处理, 可以先排序分区；然后自定义InputSplit, 将单个分区作为单个mapred的输入；在map中处理数据, Reducer设置为空。 [...]


Related posts:<ol><li><a href='http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-2/' rel='bookmark' title='Permanent Link: Hadoop平台优化综述 (2)'>Hadoop平台优化综述 (2)</a></li>
<li><a href='http://leeing.org/2011/02/25/ubuntu-10-10-%e5%ae%89%e8%a3%85-hadoop-cdh-beta4/' rel='bookmark' title='Permanent Link: Ubuntu 10.10 安装 Hadoop (CDH beta4)'>Ubuntu 10.10 安装 Hadoop (CDH beta4)</a></li>
</ol>]]></description>
		<wfw:commentRss>http://leeing.org/2011/05/12/hadoop%e5%b9%b3%e5%8f%b0%e4%bc%98%e5%8c%96%e7%bb%bc%e8%bf%b0-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.10 安装 Hadoop (CDH beta4)</title>
		<link>http://leeing.org/2011/02/25/ubuntu-10-10-%e5%ae%89%e8%a3%85-hadoop-cdh-beta4/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://leeing.org/2011/02/25/ubuntu-10-10-%e5%ae%89%e8%a3%85-hadoop-cdh-beta4/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 07:34:41 +0000</pubDate>
		<dc:creator>leeing</dc:creator>
				<category><![CDATA[hadoop]]></category>
		<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://leeing.org/2011/02/25/ubuntu-10-10-%e5%ae%89%e8%a3%85-hadoop-cdh-beta4/</guid>
		<description><![CDATA[2月22日，Cloudera 发布了 Cloudera’s Distribution for Apache Hadoop version 3 beta 4- CDH3b4，这个版本将是 CDH3 正式版发布前的最后一个beta版本，正式版即将公布。从官方通告来看，它归并了很多Yahoo!&#160; 贡献的代码（Hadoop 0.20.100 分支），据称减少了NameNode的内存使用，并提高了MapReduce的调度吞吐量，支持更多的RPC服务器。除此之外，其内部组件的版本也得到了相应的提升： HBase 0.90.1, including much improved stability and operability. Hive 0.7.0rc0, including the beginnings of authorization support, support for multiple databases, and many other new features. Pig 0.8.0, including many new features like scalar types, custom partitioners, and improved [...]


Related posts:<ol><li><a href='http://leeing.org/2010/04/13/install-r-in-ubuntu-karmic/' rel='bookmark' title='Permanent Link: Ubuntu 9.10 安装 R'>Ubuntu 9.10 安装 R</a></li>
<li><a href='http://leeing.org/2010/04/09/install-svn-apache-in-ubuntu-9-10/' rel='bookmark' title='Permanent Link: Ubuntu 配置 SVN 服务器'>Ubuntu 配置 SVN 服务器</a></li>
<li><a href='http://leeing.org/2010/04/07/install-ibus-in-ubuntu-9-10/' rel='bookmark' title='Permanent Link: Ubuntu 安装 iBus'>Ubuntu 安装 iBus</a></li>
</ol>]]></description>
		<wfw:commentRss>http://leeing.org/2011/02/25/ubuntu-10-10-%e5%ae%89%e8%a3%85-hadoop-cdh-beta4/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hadoop的配置类 Configuration</title>
		<link>http://leeing.org/2010/10/20/hadoop-configuration-class/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://leeing.org/2010/10/20/hadoop-configuration-class/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 11:17:19 +0000</pubDate>
		<dc:creator>leeing</dc:creator>
				<category><![CDATA[hadoop]]></category>
		<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://leeing.org/?p=687</guid>
		<description><![CDATA[Hadoop的配置类是由资源指定的，资源可以由一个String或Path来指定： String：在classpath中寻找 path: 直接从本地文件系统中查找 我们可以通过addResource()方法为Configuration添加资源。 值得注意的是，Hadoop在默认情况下在classpath中按次序指定读取以下两个文件： core-default.xml: Hadoop的只读属性 core-site.xml: 某个给定hadoop的site-specific的配置。 配置参数可以指定为final，这样的话后续载入的资源就不能改变这个值，例如： &#60;property&#62; &#60;name&#62;dfs.client.buffer.dir&#60;/name&#62; &#60;value&#62;/tmp/hadoop/dfs/client&#60;/value&#62; &#60;final&#62;true&#60;/final&#62; &#60;/property&#62; 一般来说，管理员会在core-site.xml中指定参数为final，这样客户端就不能再改变它。   关于变量扩展 首先要对字符串值进行变量扩展，可用的属性有： 在配置中定义的其它属性 System.getProperties()中的属性。 例如，如果一个配置资源包含下面的属性定义： &#60;property&#62;  &#60;name&#62;basedir&#60;/name&#62;  &#60;value&#62;/user/${user.name}&#60;/value&#62; &#60;/property&#62; &#60;property&#62;  &#60;name&#62;tempdir&#60;/name&#62;  &#60;value&#62;${basedir}/tmp&#60;/value&#62; &#60;/property&#62; 当conf.get(“tempdir”)被调用时，${basedir}会解析为配置文件中的其它属性，而${user.name}则会从系统属性中读取。但是需要注意的是，尽管配置属性时可以用系统属性来定义，但是通过Configuration API 是不能直接读取这些系统属性的。 No related posts.


No related posts.]]></description>
		<wfw:commentRss>http://leeing.org/2010/10/20/hadoop-configuration-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PlanetLab</title>
		<link>http://leeing.org/2009/12/31/planetlab/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://leeing.org/2009/12/31/planetlab/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 12:54:44 +0000</pubDate>
		<dc:creator>leeing</dc:creator>
				<category><![CDATA[P2P]]></category>
		<category><![CDATA[分布式计算]]></category>
		<category><![CDATA[计算机网络]]></category>

		<guid isPermaLink="false">http://leeing.org/?p=57</guid>
		<description><![CDATA[         估计明年主要工作都集中在P2P-CDN的仿真器上，之前做过一些调研，是关于PlanetLab的，而国内关注的人极少，只有少数一些大学的实验室有过相关的应用，而且由于Cernet作为一个整体被除名，中国的使用人数应当大减了。就实验室的项目来说，原本我以为是要设计一个P2P-CDN的混合系统，现在已经变更为设计一个P2P-CDN的模拟器，所以PlanetLab是不可能得到应用，不过这里的一些信息可能对需要它的人有用。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8211;华丽丽的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;          PlanetLab是一个全球性的研究网络，用于新型网络服务的开发。自从2003年起，超过1,000个来自顶级学术机构和业界实验室在PlanetLab上开发了新技术包括：分布式存储、网络印射、P2P系统、DHT（分布式哈希表）和查询处理。并且值得关注的是在这个平台上，P2P分布式计算的项目很多，甚至是基于P2P的CDN实现和部署。  http://www.planet-lab.org/          截止至2009年12月，PlanetLab目前拥有1063个节点和491个站点，很多世界一流大学和行业研究实验室成为PlanetLab计划的联盟成员，其中包括AT&#38;T实验室、剑桥大学、法国电信、HP、Google、NEC实验室、哈佛大学、普林斯顿大学和加州大学伯克利分校连同中国华为集团、以及Internet2机构。2009年5月，PlanetLab中心升级至4.3版本，可以支持新的节点类型（如无线节点），同时加入一些新的GUI特性。           PlanetLab的主要目标之一是用作重叠网络的一个测试床。研究组能够请求一个PlanetLab分片，其中他们能够试验各种全球规模的服务，包括文件共享和网络内置存储、内容分发网络、路由和组播重叠网、QoS重叠网、可扩展的对象定位、可扩展的事件传播、异常检测机制和网络测量工具。目前有数百个活跃的研究项目运行于PlanetLab之上。          对研究人员而言使用PlanetLab的好处是：可以在真实世界条件下大规模试验新服务，因为节点广泛分布于Internet，是一个由遍布世界各地的服务器组成的网络，能够观察并对网络行为做出反应；从位于许多数据源和数据终点的邻近范围而受益；从分布于多个管理的边界而受益。          PlanetLab是一个大规模互联网服务的测试床，在其上更多的狭窄定义的虚拟测试床能够被部署）。网络研究人员能够使用这项基础设施来试验对于Internet协议簇的修改和扩展。除了支持短期试验外，PlanetLab也设计用来支持长期运行的服务，这些服务支持一个用户基础（用户群）。即PlanetLab不但是一个测试床，也是一个部署平台，支持一个应用的无缝迁移，从早期原型，通过多次设计迭代，最后转变为一项持续演进的成熟服务。           2004 年12月27日中国教育和科研计算机网(CERNET)宣布，CERNET已加入PlanetLab，首先在中国20个城市的25所大学( 包括清华，北大，北航，北邮 )中设立50个 PlanetLab节点，这使得CERNET成为亚洲第一个地区性PlanetLab研究中心，但是在2009年6月1日，PlanetLab重新考虑了CERNET地位，指出PlanetLab接受的成员是研究机构/大学，而不是“国家组织”如CERNET，因此要求所有CERNET地址的中国大学重新申请为独立成员。个人不能直接参与到PlanetLab中，必须是PlanetLab的成员。截止到写这篇文章为止，国内也仅有少数的大学通过审批，更多的则是处于pending状态，更多被除名的大学则没有重新提交过申请。           建立在PlanetLab之上的一些成功案例，在这里主要是针对P2P-CDN系统来说明的： CoralCDN 基于P2P的CDN网络：www.coralcdn.org/ CoralCDN是一个免费的P2P内容分发网络，由世界范围内的web代理和域名服务器组成，它允许用户在之上建立一个高性能大需求的web网站。它于2004年的3月，在PlanetLab上进行测试。可以免费地下载CoralCDN的源代码，源代码是由C++完成的，超过一万行。 CoDeeN：A Content Distribution Network for PlanetLab 主页：http://codeen.cs.princeton.edu/ CoDeeN是由普林斯顿大学开发的学术性的CDN网络实验平台，且这个CDN网络由众多的PlanetLab节点组成，当前很多缓存服务器部署在PlanetLab的节点之上，这些缓存服务器同时作为request redirectors和server surrogates，它们相互合作提供了一个快速而健壮的web内容分发服务。 同时，它还包括以下的子项目： CoBlitz, a scalable Web-based distribution service for large files. CoDeploy, an efficient synchronization tool for PlanetLab slices. CoDNS, a fast and reliable name [...]


No related posts.]]></description>
		<wfw:commentRss>http://leeing.org/2009/12/31/planetlab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

