<?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>New IT Farmer</title>
	<atom:link href="http://blog.newitfarmer.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.newitfarmer.com</link>
	<description>Java,Architecture,Web,NLP,ML,Cloud,Hadoop,NoSQL,Big Data,Analytics</description>
	<lastBuildDate>Fri, 24 May 2013 15:06:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>[repost ]Hadoop Family and Ecosystem</title>
		<link>http://blog.newitfarmer.com/big_data/hadoop/11618/repost-hadoop-family-and-ecosystem#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-hadoop-family-and-ecosystem</link>
		<comments>http://blog.newitfarmer.com/big_data/hadoop/11618/repost-hadoop-family-and-ecosystem#comments</comments>
		<pubDate>Fri, 24 May 2013 15:06:05 +0000</pubDate>
		<dc:creator>newitfarmer</dc:creator>
				<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[Ecosystem]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11618</guid>
		<description><![CDATA[original: http://www.slideshare.net/tcloudcomputing-tw/hadoop-family-and-ecosystem-15693655 Hadoop Family and Ecosystem from tcloudcomputing-tw]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/big_data/hadoop/11618/repost-hadoop-family-and-ecosystem/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]基于glusterfs和gearman的离线任务运算分布式化方案介绍</title>
		<link>http://blog.newitfarmer.com/architecture/scalability/11615/repost-%e5%9f%ba%e4%ba%8eglusterfs%e5%92%8cgearman%e7%9a%84%e7%a6%bb%e7%ba%bf%e4%bb%bb%e5%8a%a1%e8%bf%90%e7%ae%97%e5%88%86%e5%b8%83%e5%bc%8f%e5%8c%96%e6%96%b9%e6%a1%88%e4%bb%8b%e7%bb%8d#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-%25e5%259f%25ba%25e4%25ba%258eglusterfs%25e5%2592%258cgearman%25e7%259a%2584%25e7%25a6%25bb%25e7%25ba%25bf%25e4%25bb%25bb%25e5%258a%25a1%25e8%25bf%2590%25e7%25ae%2597%25e5%2588%2586%25e5%25b8%2583%25e5%25bc%258f%25e5%258c%2596%25e6%2596%25b9%25e6%25a1%2588%25e4%25bb%258b%25e7%25bb%258d</link>
		<comments>http://blog.newitfarmer.com/architecture/scalability/11615/repost-%e5%9f%ba%e4%ba%8eglusterfs%e5%92%8cgearman%e7%9a%84%e7%a6%bb%e7%ba%bf%e4%bb%bb%e5%8a%a1%e8%bf%90%e7%ae%97%e5%88%86%e5%b8%83%e5%bc%8f%e5%8c%96%e6%96%b9%e6%a1%88%e4%bb%8b%e7%bb%8d#comments</comments>
		<pubDate>Fri, 24 May 2013 03:03:33 +0000</pubDate>
		<dc:creator>newitfarmer</dc:creator>
				<category><![CDATA[Arch-Scalability]]></category>
		<category><![CDATA[Gearman]]></category>
		<category><![CDATA[GlusterFS]]></category>
		<category><![CDATA[分布式]]></category>
		<category><![CDATA[离线任务运算]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11615</guid>
		<description><![CDATA[original:http://stblog.baidu-tech.com/?p=1887 web站点服务中，我们除了存在面向用户的服务功能外，往往也存在大量的后台离线的相关计算任务，如对前端的异步操作数据队列进行定期处理，对数据库中的数据进行汇总挖掘，监控，转储，对中间数据的进一步运算处理等等……一个web服务站点的背后，往往存在大量对应的后端处理任务的功能模块，用于支撑正常的业务功能系统。 在一个web站点的初始阶段，我们可能只需要有一台服务器，容纳部署所有的业务功能，包括了面向用户的前端web服务功能，数据存储，后端离线处理业务功能。随着站点的业务功能越来越多，用户访问数的增加以及数据量的增长，单台服务器的处理能力往往就面临瓶颈。这个时候简单的处理就是将前端web服务功能，数据库和后端业务模块分开部署在不同的机器上，但是可能过随着站点规模的逐渐庞大，单个服务器也无法支撑前端web服务，数据库服务或者后端离线业务功能。Web前端服务，数据库服务相对是通用的技术服务，相关业务都大同小异，其分布式化在业界有相对很成熟和典型的架构模式解决方案，但是不同系统的后端离线业务功能可能千差外别五花八门,不同开发者开发出来的功能架构也各不相同，本文介绍一种低代价的web站点离线任务分布式改造方案，其使用了glusterfs分布式文件系统以及gearman分布式运算框架。 我们知道，相关离线运算要能进行分布式化运算，做到单次执行在任意一台机器上执行都可以，其首先的要求就是程序依赖输入输出数据的非本地，我们要实现运算的分布式化，就必须实现所有存储数据的中心化存储以及分布式化。 &#160; 一 存储的中心化和分布式化 我们知道一个web站点的业务功能必然要使用各种数据，需要存放各种数据，基本上是以关系型数据库，nosql数据服务，session数据，cache数据，原始的服务器文件数据存储。对于关系型数据库，nosql数据库，其本身就是中心化的数据存储，其分布式化也有成熟的解决方案,对于站点session，相关cache数据，也有成熟的memcached等利用而进行中心化存储，以及进行分布式的扩展。对于大多数后台离线业务功能来说，往往是开发人员逐渐开发堆积而来，这些功能程序往往会存在大量对本地文件的直接读写，如果改造使用其他存储方式，工作量巨大而且风险大，这些数据的中心化存储改造往往成了解决数据存储中心化的聚焦点，而且所幸，业界有大量成熟的分布式文件存储系统，能够帮我们解决本地文件存储的中心化和分布式化存储。我们介绍一种使用glusterfs进行对本地文件存储的分布式化处理方案。 分布式文件系统（Distributed File System）是指文件系统管理的物理存储资源不一定直接连接在本地节点上，而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模 式。一个典型的网络可能包括多个供多用户访问的服务器。另外，对等特性允许一些系统扮演客户机和服务器的双重角色。例如，用户可以“发表”一个允许其他客 户机访问的目录，一旦被访问，这个目录对客户机来说就象使用本地驱动器一样。 GlusterFS是 一个高层次的分布式文件系统解决方案。通过增加一个逻辑层，对上层使用者掩盖了下面的实现，使用者不用了解也不需知道，文件的存储形式、分布。 内部实现是整合了许多存储块（server） 通过Infiniband RDMA或者 Tcp/Ip方 式互联的一个并行的网络文件系统，这样的许多存储块可以通过许多廉价的x86主 机，通过网络搭建起来。 其相对于传统NAS 、SAN、Raid的 优点就是： 1.容量可以按比例的扩展，且性能却不会因此而降 低。 2.廉价且使用简单，完全抽象在已有的文件系统之上。 3.扩展和容错设计的比较合理，复杂度较低。扩展使用translator方 式，扩展调度使用scheduling接口，容错交给了本地的文件系统来处理。 4.适应性强，部署方便，对环境依赖低，使用，调试和维护便利。 支持主流的linux系统发行版，包括 fc，ubuntu，debian，suse等， 并已有若干成功应用。 对于一个站点的后端离线功能的文件存储来说，我们既希望能将这些文件数据存储中心化，又希望能够兼容已有的代码，基于这两种考虑，我们可以按照如下的方案图来进行本地文件迁移到glusterfs文件系统: &#160; 这样，我们就即能实现文件存储的分布式化，又能兼容已有业务程序，做到无缝迁移。 二运算任务分布式化 当我们的业务程序依赖的存储和数据都中心化，而不依赖于本地存储的时候，我们的运算任务就可以在任何一台部署环境和代码运算服务器上运行，我们唯一缺少的就是一个任务的队列调度处理模块。我们介绍一种基于gearman的分布式运算框架。 Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。 一个Gearman请求的处理过程涉及三个角色：Client -&#62; Job -&#62; Worker。 Client：请求的发起者，可以是 C，PHP，Perl，MySQL UDF 等等。 Job：请求的调度者，用来负责协调把 Client 发出的请求转发给合适的 Work。 Worker：请求的处理者，可以是 C，PHP，Perl 等等。 因为 Client，Worker 并不限制用一样的语言，所以有利于多语言多系统之间的集成。甚至我们通过增加更多的 <a href='http://blog.newitfarmer.com/architecture/scalability/11615/repost-%e5%9f%ba%e4%ba%8eglusterfs%e5%92%8cgearman%e7%9a%84%e7%a6%bb%e7%ba%bf%e4%bb%bb%e5%8a%a1%e8%bf%90%e7%ae%97%e5%88%86%e5%b8%83%e5%bc%8f%e5%8c%96%e6%96%b9%e6%a1%88%e4%bb%8b%e7%bb%8d' class='excerpt-more'>[...]</a>]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/architecture/scalability/11615/repost-%e5%9f%ba%e4%ba%8eglusterfs%e5%92%8cgearman%e7%9a%84%e7%a6%bb%e7%ba%bf%e4%bb%bb%e5%8a%a1%e8%bf%90%e7%ae%97%e5%88%86%e5%b8%83%e5%bc%8f%e5%8c%96%e6%96%b9%e6%a1%88%e4%bb%8b%e7%bb%8d/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]Storm分布式实时流计算框架相关技术总结</title>
		<link>http://blog.newitfarmer.com/anls/storm/11612/repost-storm%e5%88%86%e5%b8%83%e5%bc%8f%e5%ae%9e%e6%97%b6%e6%b5%81%e8%ae%a1%e7%ae%97%e6%a1%86%e6%9e%b6%e7%9b%b8%e5%85%b3%e6%8a%80%e6%9c%af%e6%80%bb%e7%bb%93#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-storm%25e5%2588%2586%25e5%25b8%2583%25e5%25bc%258f%25e5%25ae%259e%25e6%2597%25b6%25e6%25b5%2581%25e8%25ae%25a1%25e7%25ae%2597%25e6%25a1%2586%25e6%259e%25b6%25e7%259b%25b8%25e5%2585%25b3%25e6%258a%2580%25e6%259c%25af%25e6%2580%25bb%25e7%25bb%2593</link>
		<comments>http://blog.newitfarmer.com/anls/storm/11612/repost-storm%e5%88%86%e5%b8%83%e5%bc%8f%e5%ae%9e%e6%97%b6%e6%b5%81%e8%ae%a1%e7%ae%97%e6%a1%86%e6%9e%b6%e7%9b%b8%e5%85%b3%e6%8a%80%e6%9c%af%e6%80%bb%e7%bb%93#comments</comments>
		<pubDate>Fri, 24 May 2013 02:33:57 +0000</pubDate>
		<dc:creator>newitfarmer</dc:creator>
				<category><![CDATA[Storm]]></category>
		<category><![CDATA[分布式实时流计算]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11612</guid>
		<description><![CDATA[original:http://www.cr173.com/html/18637_1.html Storm作为一个开源的分布式实时流计算框架，其内部实现使用了一些常用的技术，这里是对这些技术及其在Storm中作用的概括介绍。以此为基础，后续再深入了解Storm的内部实现细节。 1. Zookeeper集群 Zookeeper是一个针对大型分布式系统的可靠协调服务系统，其采用类似Unix文件系统树形层次结构的数据模型（如：/zoo/a，/zoo/b），节点内可存储少量数据（&#60;1M，当节点存储大数据量时，实际应用中可能出现同步问题）。 Zookeepr的高可靠性服务是通过配置Zookeeper集群实现的，官方建议Zookeeper集群至少包含3个节点，每个节点上存储一份数据，主节点挂掉后可以重新选取一个节点作为主节点。只要保证集群内有一半以上的节点存活，集群就可对外提供服务。 Zookeeper支持的操作类型有： （1）创建树节点znode； （2）删除树节点znode； （3）读取树节点znode的内容和其子节点的内容； （4）当节点内容发生变化或子节点增删时触发消息通知更新消息； （5）支持瞬时节点（EPHEMERAL），创建节点的进程退出后节点自动被删除。 Storm中使用Zookeeper主要用于Storm集群各节点的分布式协调工作，具体功能如下： （1）存储客户端提供的topology任务信息，nimbus负责将任务分配信息写入Zookeeper，supervisor从Zookeeper上读取任务分配信息； （2）存储supervisor和worker的心跳（包括它们的状态），使得nimbus可以监控整个集群的状态， 从而重启一些挂掉的worker； （3）存储整个集群的所有状态信息和配置信息。 关于Storm在Zookeeper的详细目录结构，可参考这里。 2. Thrift服务框架 Thrift是一个跨语言的可扩展的服务框架，它通过一个中间语言(IDL，接口定义语言)来定义RPC的接口和数据类型，然后通过一个编译器生成RPC客户端和服务器通信的无缝跨编程语言。 Storm中Thrift的应用场景： （1）客户端向nimbus提交topology任务； （2）supervisor从nimbus下载topology任务（代码和序列化文件）； （3）storm ui从nimbus获取topology运行的统计信息。 3. ZeroMQ消息队列 ZeroMQ是一个基于消息的嵌入式网络编程库，可作为并发框架连接多个应用程序，支持N-to-N的连接，多种工作模式（Request-reply，Publish-subscribe，Pipeline等），支持多种语言，ZeroMQ使得编写高性能网络应用程序极为简单。 Storm中ZeroMQ的应用场景：Spout与Bolt、Bolt与Bolt之间tuple消息的传输。 4. Java序列化 Java序列化技术可以实现将Java对象保存为二进制文件，而反序列化过程则可以在另一个Java进程中将此二进制文件恢复为Java对象，其缺点在于不能很好的解决版本变化。 Storm中Java序列化的应用场景： （1）客户端提交topology任务后，Storm将topology任务序列化并发送给nimbus； （2）supervisor从Zookeeper取得任务信息后，从nimbus下载序列化文件和jar包，启动worker进程并反序列化得到提交任务时的topology对象。 5. 总结 以上只是对Storm中所使用到的Zookeeper集群、Thrift服务框架、ZeroMQ消息队列、Java序列化技术及其在Storm中的应用情况的简单介绍，后续再进一步结合Storm的源码进行深入分析。以上内容，如果不对之处，欢迎大家指正。]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/anls/storm/11612/repost-storm%e5%88%86%e5%b8%83%e5%bc%8f%e5%ae%9e%e6%97%b6%e6%b5%81%e8%ae%a1%e7%ae%97%e6%a1%86%e6%9e%b6%e7%9b%b8%e5%85%b3%e6%8a%80%e6%9c%af%e6%80%bb%e7%bb%93/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]MapReduce: Typhoon云计算平台上的分布式计算框架</title>
		<link>http://blog.newitfarmer.com/big_data/hadoop/11609/repost-mapreduce-typhoon%e4%ba%91%e8%ae%a1%e7%ae%97%e5%b9%b3%e5%8f%b0%e4%b8%8a%e7%9a%84%e5%88%86%e5%b8%83%e5%bc%8f%e8%ae%a1%e7%ae%97%e6%a1%86%e6%9e%b6#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-mapreduce-typhoon%25e4%25ba%2591%25e8%25ae%25a1%25e7%25ae%2597%25e5%25b9%25b3%25e5%258f%25b0%25e4%25b8%258a%25e7%259a%2584%25e5%2588%2586%25e5%25b8%2583%25e5%25bc%258f%25e8%25ae%25a1%25e7%25ae%2597%25e6%25a1%2586%25e6%259e%25b6</link>
		<comments>http://blog.newitfarmer.com/big_data/hadoop/11609/repost-mapreduce-typhoon%e4%ba%91%e8%ae%a1%e7%ae%97%e5%b9%b3%e5%8f%b0%e4%b8%8a%e7%9a%84%e5%88%86%e5%b8%83%e5%bc%8f%e8%ae%a1%e7%ae%97%e6%a1%86%e6%9e%b6#comments</comments>
		<pubDate>Fri, 24 May 2013 02:25:07 +0000</pubDate>
		<dc:creator>newitfarmer</dc:creator>
				<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[Map/Reduce]]></category>
		<category><![CDATA[Typhoon]]></category>
		<category><![CDATA[分布式计算]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11609</guid>
		<description><![CDATA[original:http://djt.qq.com/article/view/328 摘要 MapReduce计算框架作为腾讯Typhoon云计算平台的核心模块，已经广泛应用在广告、网页搜索等各种大数据处理中。本文主要介绍MapReduce计算框架的设计思想以及各个模块；并介绍框架的特点以及各种应用案例。 1 背景 存储和处理TB级以上的大数据日益成为当前公司各主要业务部门的重要问题。对数据存储系统的高可靠性以及对数据处理的日益增加的及时性也使得公司对高效处理系统的需求与日俱增。为此，Typhoon（台风）云计算平台应运而生。 Typhoon（台风）是由基础架构部开发的集分布式存储和分布式计算于一体的云计算平台。它由提供高可靠性的分布式文件系统XFS、分布式半结构化存储系统XCube，分布式计算框架MapReduce，以及机群调度系统Torca, 认证组件Taas等组件构成。与Hadoop不同，Typhoon平台早在09年设计之初就将集群管理，数据存储，和数据计算分离，在软件栈上实现松耦合的方式来实现。这意味着Typhoon平台可以有效结合不同的存储和计算模块，并利用Torca资源调度来取得更好的利用率和执行效率。Typhoon平台天生集成了XFS, XCube等存储系统，与此配套的MapReduce计算框架能充分利用这些系统所提供的特性发挥最大性能。 作为核心组件之一的MapReduce计算框架，提供给用户易于编写运行在大型分布式集群环境下的应用程序，并通过Torca调度系统运行。与当前流行的Hadoop提供的计算框架不同，Typhoon平台的MapReduce计算框架是通过一组编程连接库（library）来实现，而不是通过提供服务（service）来实现的。应用程序经过编译连接后直接变成可运行在分布式集群环境下的二进制文件。此外，由于以编程链接库的方式来设计，第三方系统很容易将MapReduce作为基础来构建分布式数据处理平台，例如目前广泛应用在结构化日志处理的Dragger系统就是典型的例子。 下面将具体介绍MapReduce计算框架（简称MapReduce框架）的设计与实现细节。 2 Mapreduce计算框架的设计 2.1设计思想 MapReduce框架设计思想来源于传统单机系统中的多线程处理模型，它是这种模型在分布式操作系统(Torca)上的实践。 在单机系统中，程序通过调用多线程API启动多个工作线程，工作线程从任务队列获取任务进行处理（如图1所示）。在Typhoon系统中，基于MapReduce框架实现的应用程序会被Torca调度到分布式集群上，并以一个Master和一组Worker相互协作的方式运行。Master承担了任务管理和调度的职责；而这组Worker则像单机中的多个线程一样承担了计算处理的职责；而类似于单机环境下的存储设备（如磁盘文件系统和数据库）则对应于Typhoon平台中的XFS和XCube（如图2所示）。 &#60;ignore_js_op&#62; Figure 1 单机多线程模型 &#160; &#60;ignore_js_op&#62; Figure 2 台风MapReduce框架模型 从上图2可以看出，基于MapReduce框架的应用程序由三个逻辑模块组成： Controller客户端：用于提交应用程序、显示应用程序的执行进度以及返回执行过程中各种状态息； Master节点：负责对应用任务进行划分和调度，处理失败、超时等错误问题，同时也承担web页面的监控器的功能； Worker工作节点：负责执行由Master节点分配的各种计算任务。 后面会简单介绍各个模块。 2.2 框架特点 Typhoon平台上MapReduce框架有如下的特点： 1.  作业之间独立，Master各自管理独立的任务和计算节点，无耦合。 2.  用户可以独立升级各自的MapReduce库进行特性更新，不受其他用户的影响，集群中可以有多个版本的MapReduce同时存在。 3.  用户作业所需的资源可以各自按需设置，更有效地利用集群资源。 4.  强大的作业实时展示功能，有助于用户分析作业运行状况。 5.  利用Torca提供的进程级的容错机制，简化实现模型。 6.  内嵌包括Text，RecordIO和SSTable，XCube等多种源的数据处理，满足绝大部分业务需求。用户可以扩展输入输出类型。 3 模块介绍 Controller Controller相当于作业的客户端。首先，它负责校验用户作业（Job）描述的完整性以及配置的合理性，验证作业指定的Mapper和Reduce类是否有注册等。在校验成功后，Controller向Torca启动一个进程，并将其角色指定为Master。Master进程启动后，Controller向Master发起RPC调用进行任务提交。之后，Controller周期请求Master获得作业的状态进度等信息，在终端上进行展示。 Master Master启动后，会等待接收Controller提交的作业描述。对接收到的作业描述，进行输入切分，将文件或XCube表划分成一个个的任务（Task）。之后根据任务的情况启动特定数据Worker进行计算。Worker会通过RPC通信与Master保持通信，并返回处理结果或者获取新的task。当整个作业结束后，Masrer会通过RPC反馈给Controller，并自行退出。 Worker Master所切分的Task会分为：Map类Task和Reduce类Task 。 对于Map类Task，Worker首先按输入描述读取XFS文件或XCube表，并使用应用程序注册的Mapper类对每一条数据记录进行处理。当Map任务完成后，它的输出会注册在Worker内的子模块Shuffle Server，为下一步的Reduce任务提供Shuffle服务。 对于Reduce类Task，Worker会先从Master获取已完成的Map任务列表，并到完成这些任务的Worker拉取本Reduce对应的数据分片（Shard）数据。当集齐全部Map的指定分片数据后，Worker会使用用户注册的Reducer类进行处理，并输出结果。 Monitor Monitor是Master中的一个子模块，它提供本作业的状态展示功能，包括展示作业的整体信息，Worker状态信息，以及各个子任务的运行信息等(如图3)。这里以作业整体信息页面为例，从上向下依次有作业的数据量预估和时间信息；接着是MapReduce任务的进度信息；之后有作业中用户注册的各类计数器历史统计。其中，各种用户自定义的计数器对于分析用户作业的运行情况有极大的帮助。 &#60;ignore_js_op&#62; &#160; <a href='http://blog.newitfarmer.com/big_data/hadoop/11609/repost-mapreduce-typhoon%e4%ba%91%e8%ae%a1%e7%ae%97%e5%b9%b3%e5%8f%b0%e4%b8%8a%e7%9a%84%e5%88%86%e5%b8%83%e5%bc%8f%e8%ae%a1%e7%ae%97%e6%a1%86%e6%9e%b6' class='excerpt-more'>[...]</a>]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/big_data/hadoop/11609/repost-mapreduce-typhoon%e4%ba%91%e8%ae%a1%e7%ae%97%e5%b9%b3%e5%8f%b0%e4%b8%8a%e7%9a%84%e5%88%86%e5%b8%83%e5%bc%8f%e8%ae%a1%e7%ae%97%e6%a1%86%e6%9e%b6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]Gearman分布式远程过程处理框架</title>
		<link>http://blog.newitfarmer.com/devops/gearman/11607/repost-gearman%e5%88%86%e5%b8%83%e5%bc%8f%e8%bf%9c%e7%a8%8b%e8%bf%87%e7%a8%8b%e5%a4%84%e7%90%86%e6%a1%86%e6%9e%b6#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-gearman%25e5%2588%2586%25e5%25b8%2583%25e5%25bc%258f%25e8%25bf%259c%25e7%25a8%258b%25e8%25bf%2587%25e7%25a8%258b%25e5%25a4%2584%25e7%2590%2586%25e6%25a1%2586%25e6%259e%25b6</link>
		<comments>http://blog.newitfarmer.com/devops/gearman/11607/repost-gearman%e5%88%86%e5%b8%83%e5%bc%8f%e8%bf%9c%e7%a8%8b%e8%bf%87%e7%a8%8b%e5%a4%84%e7%90%86%e6%a1%86%e6%9e%b6#comments</comments>
		<pubDate>Fri, 24 May 2013 02:23:19 +0000</pubDate>
		<dc:creator>newitfarmer</dc:creator>
				<category><![CDATA[Gearman]]></category>
		<category><![CDATA[异步]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11607</guid>
		<description><![CDATA[original:http://www.ccvita.com/419.html 对于绝大多数发展中等的web 2.0网站来说，LAMP结构已经不能满足现在的需要了，新的架构组合是GLAMMP,G=Gearman(分布式远程过程处理)，M=Memcached(高性能的分布式的内存对象缓存系统)。 简单的说Gearman是PHP实现异步处理利器，当然不仅仅是PHP实现异步处理的手段。 Gearman简介 Gearman是 Brad Fitzpatrick 的一个作品，用 Perl 写的任务调度程序，提供一个服务器端和多种语言的客户端接口，包括 C/Perl/Python/Ruby 等，在 client library 本身就支持一定程度的高可靠度。 Gearman系统用来把工作委派给其他机器，分布式的调用更适合做某项工作的机器，并发的做某项工作，在多个调用间做负载均衡，或用来在调用其它语言的函数。 &#160; Gearman的高级特性 在一个 Web 应用程序内可能有许多地方都会用到 Gearman。可以导入大量数据、发送许多电子邮件、编码视频文件、挖据数据并构建一个中央日志设施 — 所有这些均不会影响站点的体验和响应性。可以并行地处理数据。而且，由于 Gearman 协议是独立于语言和平台的，所以您可以在解决方案中混合编程语言。比如，可以用 PHP 编写一个 producer，用 C、Ruby 或其他任何支持 Gearman 库的语言编写 worker。 一个连接客户机和 worker 的 Gearman 网络实际上可以使用任何您能想象得到的结构。很多配置能够运行多个代理并将 worker 分配到许多机器上。负载均衡是隐式的：每个可操作的可用 worker（可能是每个 worker 主机具有多个 worker）从队列中拉出作业。一个作业能够同步或异步运行并具有优先级。 Gearman 的最新版本已经将系统特性扩展到了包含持久的作业队列和用一个新协议来通过 HTTP 提交工作请求。对于前者，Gearman 工作队列保存在内存并在一个关系型数据库内存有备份。这样一来，如果 Gearman 守护程序故障，它就可以在重启后重新创建这个工作队列。另一个最新的改良通过一个 memcached 集群增加队列持久性。memcached <a href='http://blog.newitfarmer.com/devops/gearman/11607/repost-gearman%e5%88%86%e5%b8%83%e5%bc%8f%e8%bf%9c%e7%a8%8b%e8%bf%87%e7%a8%8b%e5%a4%84%e7%90%86%e6%a1%86%e6%9e%b6' class='excerpt-more'>[...]</a>]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/devops/gearman/11607/repost-gearman%e5%88%86%e5%b8%83%e5%bc%8f%e8%bf%9c%e7%a8%8b%e8%bf%87%e7%a8%8b%e5%a4%84%e7%90%86%e6%a1%86%e6%9e%b6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]用Gearman进行分布式任务处理（一）</title>
		<link>http://blog.newitfarmer.com/devops/gearman/11603/repost-%e7%94%a8gearman%e8%bf%9b%e8%a1%8c%e5%88%86%e5%b8%83%e5%bc%8f%e4%bb%bb%e5%8a%a1%e5%a4%84%e7%90%86%ef%bc%88%e4%b8%80%ef%bc%89#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-%25e7%2594%25a8gearman%25e8%25bf%259b%25e8%25a1%258c%25e5%2588%2586%25e5%25b8%2583%25e5%25bc%258f%25e4%25bb%25bb%25e5%258a%25a1%25e5%25a4%2584%25e7%2590%2586%25ef%25bc%2588%25e4%25b8%2580%25ef%25bc%2589</link>
		<comments>http://blog.newitfarmer.com/devops/gearman/11603/repost-%e7%94%a8gearman%e8%bf%9b%e8%a1%8c%e5%88%86%e5%b8%83%e5%bc%8f%e4%bb%bb%e5%8a%a1%e5%a4%84%e7%90%86%ef%bc%88%e4%b8%80%ef%bc%89#comments</comments>
		<pubDate>Fri, 24 May 2013 02:19:12 +0000</pubDate>
		<dc:creator>newitfarmer</dc:creator>
				<category><![CDATA[Gearman]]></category>
		<category><![CDATA[分布式任务]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11603</guid>
		<description><![CDATA[original: http://www.kongch.com/2010/04/gearman-how-to/ Gearman是一款开源的通用的分布式任务分发框架，自己本身不做任何实际的工作。它可以将一个个的任务分发给其他的物理机器或者进程，以达到工作的并行运行和LB。 有人说Gearman是分布式 计算框架其实是不太准确的，因为相较于Hadoop而言，Gearman更偏重于任务的分发而不是执行。Gearman扮演的角色更像是一系列分布式进程 的神经系统。 &#160; Gearman概述 看到Gearman的名字，最容易想到的是gear-man（齿轮男），但实际上它是Manager这个单词的一个anagram。官方 的解释是它就像manger一样光派发任务自己却不干活:)这也说明了它是一个任务派发框架，而不是一个计算框架。 It is called Gearman because it is an anagram for Manager. Gearman, like a manager, distributes the worker to be done but does not actually do any itself. Gearman出生于2005年，当时被LiveJournal.com用来做图片resize，纯perl实现。后来Brain Aker在2008年用C重写,接下来同时各种各样语言版本的client和worker也都逐一被贡献。目前的使用也很广泛： Digg: 45+servers, 400k jobs/day Yahoo: 60+ servers, 6M jobs/day Xing.com 金山逍遥网：http://blog.s135.com/dips/ 我们VideoSharing的WorkerPool  同时它也是MogileFS的核心组件。 详细的项目信息可参见其主页：http://launchpad.net/gearman Gearman中的角色 Gearman框架中一共有三个角色： Client： <a href='http://blog.newitfarmer.com/devops/gearman/11603/repost-%e7%94%a8gearman%e8%bf%9b%e8%a1%8c%e5%88%86%e5%b8%83%e5%bc%8f%e4%bb%bb%e5%8a%a1%e5%a4%84%e7%90%86%ef%bc%88%e4%b8%80%ef%bc%89' class='excerpt-more'>[...]</a>]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/devops/gearman/11603/repost-%e7%94%a8gearman%e8%bf%9b%e8%a1%8c%e5%88%86%e5%b8%83%e5%bc%8f%e4%bb%bb%e5%8a%a1%e5%a4%84%e7%90%86%ef%bc%88%e4%b8%80%ef%bc%89/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]ZooKeeper典型应用场景一览</title>
		<link>http://blog.newitfarmer.com/middleware/zookeeper-middleware/11600/repost-zookeeper%e5%85%b8%e5%9e%8b%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af%e4%b8%80%e8%a7%88#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-zookeeper%25e5%2585%25b8%25e5%259e%258b%25e5%25ba%2594%25e7%2594%25a8%25e5%259c%25ba%25e6%2599%25af%25e4%25b8%2580%25e8%25a7%2588</link>
		<comments>http://blog.newitfarmer.com/middleware/zookeeper-middleware/11600/repost-zookeeper%e5%85%b8%e5%9e%8b%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af%e4%b8%80%e8%a7%88#comments</comments>
		<pubDate>Fri, 24 May 2013 01:57:20 +0000</pubDate>
		<dc:creator>newitfarmer</dc:creator>
				<category><![CDATA[Zookeeper]]></category>
		<category><![CDATA[ZooKeeper]]></category>
		<category><![CDATA[应用场景]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11600</guid>
		<description><![CDATA[original:http://rdc.taobao.com/team/jm/archives/1232 查看PDF版本 ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现，使该框架保证了分布式环境中数据的强一致性，也正是基于这样的特性，使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍，本文将结合作者身边的项目例子，系统地对ZK的应用场景进行一个分门归类的介绍。 值得注意的是，ZK并非天生就是为这些应用场景设计的，都是后来众多开发者根据其框架的特性，利用其提供的一系列API接口（或者称为原语集），摸索出来的典型使用方法。因此，也非常欢迎读者分享你在ZK使用上的奇技淫巧。 ZooKeeper典型应用场景一览 数据发布与订阅（配置中心） 发布与订阅模型，即所谓的配置中心，顾名思义就是发布者将数据发布到ZK节点上，供订阅者动态获取数据，实现配置信息的集中式管理和动态更新。例如全局的配置信息，服务式服务框架的服务地址列表等就非常适合使用。 应用中用到的一些配置信息放到ZK上进行集中管理。这类场景通常是这样：应用在启动的时候会主动来获取一次配置，同时，在节点上注册一个Watcher，这样一来，以后每次配置有更新的时候，都会实时通知到订阅的客户端，从来达到获取最新配置信息的目的。 分布式搜索服务中，索引的元信息和服务器集群机器的节点状态存放在ZK的一些指定节点，供各个客户端订阅使用。 分布式日志收集系统。这个系统的核心工作是收集分布在不同机器的日志。收集器通常是按照应用来分配收集任务单元，因此需要在ZK上创建一个以应用名作为path的节点P，并将这个应用的所有机器ip，以子节点的形式注册到节点P上，这样一来就能够实现机器变动的时候，能够实时通知到收集器调整任务分配。 系统中有些信息需要动态获取，并且还会存在人工手动去修改这个信息的发问。通常是暴露出接口，例如JMX接口，来获取一些运行时的信息。引入ZK之后，就不用自己实现一套方案了，只要将这些信息存放到指定的ZK节点上即可。 注意：在上面提到的应用场景中，有个默认前提是：数据量很小，但是数据更新可能会比较快的场景。 负载均衡 这里说的负载均衡是指软负载均衡。在分布式环境中，为了保证高可用性，通常同一个应用或同一个服务的提供方都会部署多份，达到对等服务。而消费者就须要在这些对等的服务器中选择一个来执行相关的业务逻辑，其中比较典型的是消息中间件中的生产者，消费者负载均衡。 消息中间件中发布者和订阅者的负载均衡，linkedin开源的KafkaMQ和阿里开源的metaq都是通过zookeeper来做到生产者、消费者的负载均衡。这里以metaq为例如讲下： 生产者负载均衡：metaq发送消息的时候，生产者在发送消息的时候必须选择一台broker上的一个分区来发送消息，因此metaq在运行过程中，会把所有broker和对应的分区信息全部注册到ZK指定节点上，默认的策略是一个依次轮询的过程，生产者在通过ZK获取分区列表之后，会按照brokerId和partition的顺序排列组织成一个有序的分区列表，发送的时候按照从头到尾循环往复的方式选择一个分区来发送消息。&#160; 消费负载均衡： 在消费过程中，一个消费者会消费一个或多个分区中的消息，但是一个分区只会由一个消费者来消费。MetaQ的消费策略是： 每个分区针对同一个group只挂载一个消费者。 如果同一个group的消费者数目大于分区数目，则多出来的消费者将不参与消费。 如果同一个group的消费者数目小于分区数目，则有部分消费者需要额外承担消费任务。 在某个消费者故障或者重启等情况下，其他消费者会感知到这一变化（通过 zookeeper watch消费者列表），然后重新进行负载均衡，保证所有的分区都有消费者进行消费。 命名服务(Naming Service) 命名服务也是分布式系统中比较常见的一类场景。在分布式系统中，通过使用命名服务，客户端应用能够根据指定名字来获取资源或服务的地址，提供者等信息。被命名的实体通常可以是集群中的机器，提供的服务地址，远程对象等等——这些我们都可以统称他们为名字（Name）。其中较为常见的就是一些分布式服务框架中的服务地址列表。通过调用ZK提供的创建节点的API，能够很容易创建一个全局唯一的path，这个path就可以作为一个名称。 阿里巴巴集团开源的分布式服务框架Dubbo中使用ZooKeeper来作为其命名服务，维护全局的服务地址列表，点击这里查看Dubbo开源项目。在Dubbo实现中：&#160; 服务提供者在启动的时候，向ZK上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址，这个操作就完成了服务的发布。 服务消费者启动的时候，订阅/dubbo/${serviceName}/providers目录下的提供者URL地址， 并向/dubbo/${serviceName} /consumers目录下写入自己的URL地址。 注意，所有向ZK上注册的地址都是临时节点，这样就能够保证服务提供者和消费者能够自动感应资源的变化。 另外，Dubbo还有针对服务粒度的监控，方法是订阅/dubbo/${serviceName}目录下所有提供者和消费者的信息。 分布式通知/协调 ZooKeeper中特有watcher注册与异步通知机制，能够很好的实现分布式环境下不同系统之间的通知与协调，实现对数据变更的实时处理。使用方法通常是不同系统都对ZK上同一个znode进行注册，监听znode的变化（包括znode本身内容及子节点的），其中一个系统update了znode，那么另一个系统能够收到通知，并作出相应处理 另一种心跳检测机制：检测系统和被检测系统之间并不直接关联起来，而是通过zk上某个节点关联，大大减少系统耦合。 另一种系统调度模式：某系统有控制台和推送系统两部分组成，控制台的职责是控制推送系统进行相应的推送工作。管理人员在控制台作的一些操作，实际上是修改了ZK上某些节点的状态，而ZK就把这些变化通知给他们注册Watcher的客户端，即推送系统，于是，作出相应的推送任务。 另一种工作汇报模式：一些类似于任务分发系统，子任务启动后，到zk来注册一个临时节点，并且定时将自己的进度进行汇报（将进度写回这个临时节点），这样任务管理者就能够实时知道任务进度。 总之，使用zookeeper来进行分布式通知和协调能够大大降低系统之间的耦合 集群管理与Master选举 集群机器监控：这通常用于那种对集群中机器状态，机器在线率有较高要求的场景，能够快速对集群中机器变化作出响应。这样的场景中，往往有一个监控系统，实时检测集群机器是否存活。过去的做法通常是：监控系统通过某种手段（比如ping）定时检测每个机器，或者每个机器自己定时向监控系统汇报“我还活着”。 这种做法可行，但是存在两个比较明显的问题： 集群中机器有变动的时候，牵连修改的东西比较多。 有一定的延时。 利用ZooKeeper有两个特性，就可以实时另一种集群机器存活性监控系统： 客户端在节点 x 上注册一个Watcher，那么如果 x?的子节点变化了，会通知该客户端。 创建EPHEMERAL类型的节点，一旦客户端和服务器的会话结束或过期，那么该节点就会消失。 例如，监控系统在 /clusterServers 节点上注册一个Watcher，以后每动态加机器，那么就往 /clusterServers <a href='http://blog.newitfarmer.com/middleware/zookeeper-middleware/11600/repost-zookeeper%e5%85%b8%e5%9e%8b%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af%e4%b8%80%e8%a7%88' class='excerpt-more'>[...]</a>]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/middleware/zookeeper-middleware/11600/repost-zookeeper%e5%85%b8%e5%9e%8b%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af%e4%b8%80%e8%a7%88/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]盘点开发者须知的25个免费数据可视化工具</title>
		<link>http://blog.newitfarmer.com/anls/data-visualization/11597/repost-%e7%9b%98%e7%82%b9%e5%bc%80%e5%8f%91%e8%80%85%e9%a1%bb%e7%9f%a5%e7%9a%8425%e4%b8%aa%e5%85%8d%e8%b4%b9%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%b7%a5%e5%85%b7#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-%25e7%259b%2598%25e7%2582%25b9%25e5%25bc%2580%25e5%258f%2591%25e8%2580%2585%25e9%25a1%25bb%25e7%259f%25a5%25e7%259a%258425%25e4%25b8%25aa%25e5%2585%258d%25e8%25b4%25b9%25e6%2595%25b0%25e6%258d%25ae%25e5%258f%25af%25e8%25a7%2586%25e5%258c%2596%25e5%25b7%25a5%25e5%2585%25b7</link>
		<comments>http://blog.newitfarmer.com/anls/data-visualization/11597/repost-%e7%9b%98%e7%82%b9%e5%bc%80%e5%8f%91%e8%80%85%e9%a1%bb%e7%9f%a5%e7%9a%8425%e4%b8%aa%e5%85%8d%e8%b4%b9%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%b7%a5%e5%85%b7#comments</comments>
		<pubDate>Thu, 23 May 2013 13:48:50 +0000</pubDate>
		<dc:creator>farmer</dc:creator>
				<category><![CDATA[Data-Visualization]]></category>
		<category><![CDATA[可视化工具]]></category>
		<category><![CDATA[数据可视化]]></category>
		<category><![CDATA[数据可视化工具]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11597</guid>
		<description><![CDATA[original:http://www.php100.com/html/itnews/it/2013/0511/13455.html 如果你还没意识到许多工具可以帮助你完成这项工作，数据可视化可能会成为一个非常头痛的问题。数据可视化的宗旨是借助图形化手段，让人们更容易的去理解数据。数据可视化工具类型包括地图、图表、图片等，同样在互联网上也存在许多数据可视化工具，但是Ali Qayyum认为没有比将要列举的这25个免费数据可视化工具来的更有效率。其中包括了使用多年的老伙计，也包括了面世不久的新贵。其中有些应用正尝试着扩宽我们处理数据可视化的途径，也有一些本质上非常正统及准确；而有一些尝试形象化重要的人文因素，比如爱、高兴、期望及失败。下面就一览25个最好的免费可视化工具： 25.  Wrangler &#160; &#160;   Wrangler是一个用于数据清理和转换的数据可视化工具，可以减少用户在格式化上花费的时间，用于更紧密的数据分析。Wrangler为数据处理做了针对性的加速，用以更快和更准确的读操作。 24.  Open Refine &#160; &#160;   Open Refine是个用于零散数据分类及处理的数据可视化工具，将其整理并转化为另一种格式，然后在网络上传输。同样还有人使用Open Refine去连接数据库。 23.  Tabula &#160; &#160;   Tabula是为开发者和数据报表人员设计，用以分析Adobe Acrobat PDF类型文件里的数据表格，这个免费的可视化程序简化了数据分析里多数人都厌烦的复杂流程。 22.  NVD3 &#160; &#160;   NVD3服务于d3.js的数据可视化工具，无副作用情况下为d3.js建立可重复使用的图表和图表组件，同时NVD3还让d3.js更加的人性化及易于使用。 21.  Maps &#160; &#160;   Maps是个非常独特的数据可视化工具，它可以为建立一个2D世界地图，并且可以根据用户的意愿截取任意一点的视图。这个工具可以用于地理、天文和物理研究。 20.  Wolfram Alpha &#160; &#160;   这个工具给普通网民提供一个独特且根本的途径去获取知识和答案，它并不是普通的网络搜索引擎，让你提出问题并立即获得一个网站列表；Wolfram Alpha会使用一组动态指令对这些网页内容进行计算，指令来源于内部庞大的数据、算法和方法库，最后返回的则是结果内容。 19.  Chart.js &#160; &#160;   Chart.js自夸他们做好了建立准确和有效图表的一切事宜，这个工具使用了一个画布元素，同时它会使用一个单独的DOM节点。对比那些竞争对手来说，它将拥有更广泛的兼容性以及更少的内存占用。 18.  Processing.js &#160; <a href='http://blog.newitfarmer.com/anls/data-visualization/11597/repost-%e7%9b%98%e7%82%b9%e5%bc%80%e5%8f%91%e8%80%85%e9%a1%bb%e7%9f%a5%e7%9a%8425%e4%b8%aa%e5%85%8d%e8%b4%b9%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%b7%a5%e5%85%b7' class='excerpt-more'>[...]</a>]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/anls/data-visualization/11597/repost-%e7%9b%98%e7%82%b9%e5%bc%80%e5%8f%91%e8%80%85%e9%a1%bb%e7%9f%a5%e7%9a%8425%e4%b8%aa%e5%85%8d%e8%b4%b9%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%b7%a5%e5%85%b7/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]【20大数据可视化工具分享】</title>
		<link>http://blog.newitfarmer.com/anls/data-visualization/11593/repost-%e3%80%9020%e5%a4%a7%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%b7%a5%e5%85%b7%e5%88%86%e4%ba%ab%e3%80%91#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-%25e3%2580%259020%25e5%25a4%25a7%25e6%2595%25b0%25e6%258d%25ae%25e5%258f%25af%25e8%25a7%2586%25e5%258c%2596%25e5%25b7%25a5%25e5%2585%25b7%25e5%2588%2586%25e4%25ba%25ab%25e3%2580%2591</link>
		<comments>http://blog.newitfarmer.com/anls/data-visualization/11593/repost-%e3%80%9020%e5%a4%a7%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%b7%a5%e5%85%b7%e5%88%86%e4%ba%ab%e3%80%91#comments</comments>
		<pubDate>Thu, 23 May 2013 13:44:45 +0000</pubDate>
		<dc:creator>farmer</dc:creator>
				<category><![CDATA[Data-Visualization]]></category>
		<category><![CDATA[可视化工具]]></category>
		<category><![CDATA[数据可视化]]></category>
		<category><![CDATA[数据可视化工具]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11593</guid>
		<description><![CDATA[【20大数据可视化工具分享】如今学习应用数据可视化的渠道有很多，你可以跟踪一些专家博客，但更重要的一点是实践、实操。以下是Netmagzine列举的二十大数据可视化工具，无论你是准备制作简单的图表还是复杂的图谱或者信息图，这些工具都能满足你的需要。更加美妙的是，这些工具大多免费。 如今学习应用数据可视化的渠道有很多，你可以跟踪一些专家博客，但更重要的一点是实践/实操，你必须对目前可用的数据可视化工具有个大致了解。以下是Netmagzine列举的二十大数据可视化工具，无论你是准备制作简单的图表还是复杂的图谱或者信息图，这些工具都能满足你的需要。更加美妙的是，这些工具大多免费。 　　第一部分：入门级工具 　　1.Excel Excel的图形化功能并不强大，但Excel是分析数据的理想工具，上图是Excel生成的热力地图 作为一个入门级工具，Excel是快速分析数据的理想工具，也能创建供内部使用的数据图，但是Excel在颜色、线条和样式上可选择的范围有限，这也意味着用Excel很难制作出能符合专业出版物和网站需要的数据图。但是作为一个高效的内部沟通工具，Excel应当是你百宝箱中必备的工具之一。 　　2.CSV/JSON CSV(逗号分隔值)和JSON（JavaScript对象注释）虽然并不是真正的可视化工具，但却是常见的数据格式。你必须理解他们的结构，并懂得如何从这些文件中导入或者导出数据。以下将要介绍的所有数据可视化工具都支持CSV、JSON中至少一种格式。 　　第二部分：在线数据可视化工具 　3.Google Chart API GoogleChartAPI工具集中取消了静态图片功能，目前只提供动态图表工具。能够在所有支持SVG\Canvas和VML的浏览器中使用，但是GoogleChart的一个大问题是：图表在客户端生成，这意味着那些不支持JavaScript的设备将无法使用，此外也无法离线使用或者将结果另存其他格式，之前的静态图片就不存在这个问题。尽管存在上述问题，不可否认的是GoogleChartAPI的功能异常丰富，如果没有特别的定制化需要，或者对Google视觉风格的抵触，那么你大可以从GoogleChart开始。 　　4.Flot Flot是一个优秀的线框图表库，支持所有支持canvas的浏览器（目前主流的浏览器如火狐、IE、Chrome等都支持）。 　　5.Rapha Rapha?l是创建图表和图形的JavaScript库，与其他库最大的不同是输出格式仅限SVG和VML。SVG是矢量格式，在任何分辨率下的显示效果都很好。 　　6.D3 D3（DataDrivenDocuments）是支持SVG渲染的另一种JavaScript库。但是D3能够提供大量线性图和条形图之外的复杂图表样式，例如Voronoi图、树形图、圆形集群和单词云等。虽然D3能够提供非常花哨的互动图表，但你在选择数据可视化工具时，需要牢记的一点是：知道在何时保持简洁。 　　7.Visual.ly 如果你需要制作信息图而不仅仅是数据可视化，目前也有大把的工具可用。Visual.ly就是最流行的一个选择。虽然Visual.ly的主要定位是：&#8221;信息图设计师的在线集市&#8221;，但是也提供了大量信息图模板。虽然功能还有很多限制，但是Visual.ly绝对是个能激发你灵感的地方。 　　第三部分：互动图形用户界面（GUI）控制 如果数据可视化的互动性强大到可以作为GUI界面会怎样？随着在线数据可视化的发展，按钮、下拉列表和滑块都在进化成更加复杂的界面元素，例如能够调整数据范围的互动图形元素，推拉这些图形元素时输入参数和输出结果数据会同步改变，在这种情况下，图形控制和内容已经合为一体。以下这些工具能够帮你实现这些功能： 　　8.Crossfilter 当我们为方便客户浏览数据开发出更加复杂的工具时，我们已经能够创建出既是图表，又是互动图形用户界面的小程序。JavaScript库Crossfilter就是这样的工具。 Crossfilter应用：当你调整一个图表中的输入范围时，其他关联图表的数据也会随之改变。 　　9.Tangle JavaScript库Tangle进一步模糊了内容与控制之间的界限。在下图这个应用实例中，Tangle生成了一个负载的互动方程，读者可以调整输入值获得相应数据。 　　第四部分：地图工具 地图生成是web上最困难的任务之一。GoogleMaps的出现完全颠覆了过去人们对在线地图功能的认识。而Google发布的MapsAPI则让所有的开发者都能在自己的网站中植入地图功能。 近年来，在线地图的市场成熟了很多，如果你需要在数据可视化项目中植入定制化的地图方案，目前市场上已经有很多选择，但是知道在何时选择何种地图方案则成了一个很关键的业务决策。地图方案看上去功能都很强大，但是切忌：&#8221;有了一把锤子，看什么都像钉子。&#8221; 10.Modest Maps 　　顾名思义，ModestMaps是一个很小的地图库，只有10KB大小，是目前最小的可用地图库。这似乎意味着ModestMaps只提供一些基本的地图功能，但是不要被这一点迷惑了。在一些扩展库的配合下，例如Wax，ModestMaps立刻会变成一个强大的地图工具。 　　11.Leaflet CloudMade团队为大家带来了Leaflet，这是另外一个小型化的地图框架，通过小型化和轻量化来满足移动网页的需要。Leaflet和ModestMaps都是开源项目，有强大的社区支持，是在网站中整合地图应用的理想选择。 　　12.PolyMaps Polymaps是另外一个地图库，但主要面向数据可视化用户。Polymaps在地图风格化方面有独到之处，类似CSS样式表的选择器，是不可错过的好东西。 　13.OpenLayers OpenLayers可能是所有地图库中可靠性最高的一个。虽然文档注释并不完善，且学习曲线非常陡峭，但是对于一些特定的任务来说，OpenLayers无可匹敌。例如能够提供一些其他地图库都没有的特殊工具。 　　14.Kartog raph Kartograph的标记线是对地图绘制的重新思考，我们都已经习惯了莫卡托投影（Mercatorprojection），但是Kartograph为我们带来了更多的选择。如果你不需要调用全球数据，而仅仅是生成某一区域的地图，那么Kartogaph将使你脱颖而出。 　　15.CartoDB CartoDB是一个不可错过的网站。你可以用CartoDB很轻易就把表格数据和地图关联起来，这方面CartoDB是最优秀的选择。例如，你可以输入CSV通讯地址文件，CartDB能将地址字符串自动转化成经度/维度数据并在地图上标记出来。目前CartoDB支持免费生成五张地图数据表，更多使用需要支付月费。 　Charting Fonts （随着iPad3等高清移动设备的普及）web开发的一个最新趋势是将符号字体与字体整合（把符号变成字体），创建出漂亮的矢量化图标。在这些新型字体中，例如FFChartwell和Chartjunk是专门用来显示图表和图形的。他们与OpenType碰到的问题一样，就是不能被所有的浏览器支持，但是不久的未来这些矢量字体将是数据可视化工作中需要考虑到的因素。 　　第五部分：进阶工具 　　如果你准备用数据可视化做一些&#8221;严肃&#8221;的工作，那么你可能不会对在线可视化工具或者web小程序有太大兴趣，你需要的是桌面应用和编程环境。 　　16.Processing Processing是数据可视化的招牌工具。你只需要编写一些简单的代码，然后编译成Java。目前还有一个Processing.js项目，可以让网站在没有JavaApplets的情况下更容易地使用Processing。由于端口支持Objective-C，你也可以在iOS上使用Processing。虽然Processing是一个桌面应用，但也可以在几乎所有平台上运行，此外经过数年发展，Processing社区目前已近拥有大量实例和代码。 　　17.NodeBox NodeBox是OSX上创建二维图形和可视化的应用程序。你需要了解Python程序，NodeBox与Processing类似，但是没有Processing的互动功能。 　　第六部分：专家级工具 <a href='http://blog.newitfarmer.com/anls/data-visualization/11593/repost-%e3%80%9020%e5%a4%a7%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%b7%a5%e5%85%b7%e5%88%86%e4%ba%ab%e3%80%91' class='excerpt-more'>[...]</a>]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/anls/data-visualization/11593/repost-%e3%80%9020%e5%a4%a7%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%b7%a5%e5%85%b7%e5%88%86%e4%ba%ab%e3%80%91/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[repost ]八个数据可视化制作工具推荐</title>
		<link>http://blog.newitfarmer.com/anls/data-visualization/11589/repost-%e5%85%ab%e4%b8%aa%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%88%b6%e4%bd%9c%e5%b7%a5%e5%85%b7%e6%8e%a8%e8%8d%90#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=repost-%25e5%2585%25ab%25e4%25b8%25aa%25e6%2595%25b0%25e6%258d%25ae%25e5%258f%25af%25e8%25a7%2586%25e5%258c%2596%25e5%2588%25b6%25e4%25bd%259c%25e5%25b7%25a5%25e5%2585%25b7%25e6%258e%25a8%25e8%258d%2590</link>
		<comments>http://blog.newitfarmer.com/anls/data-visualization/11589/repost-%e5%85%ab%e4%b8%aa%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%88%b6%e4%bd%9c%e5%b7%a5%e5%85%b7%e6%8e%a8%e8%8d%90#comments</comments>
		<pubDate>Thu, 23 May 2013 13:40:15 +0000</pubDate>
		<dc:creator>farmer</dc:creator>
				<category><![CDATA[Data-Visualization]]></category>

		<guid isPermaLink="false">http://blog.newitfarmer.com/?p=11589</guid>
		<description><![CDATA[八个数据可视化制作工具推荐：①BirdEye：http://t.cn/zOEMqYo ②Flex：http://t.cn/zOEIsXK③Axiis：http://t.cn/arhSa ④JSCharts：http://t.cn/74IYE ⑤Google Chart API：http://t.cn/zOEMf72⑥DojoX Data：http://t.cn/zOEMiIJ ⑦Dundas ：http://t.cn/zOEM6F4；⑧Degrafa：http://t.cn/zOEMaBz &#160; /@数据化管理: 感谢补充：@laolu ⑨d3.jshttp://t.cn/zORLHx0 还有下面的Axiis网址有误 应该是 http://t.cn/anAgpT；@杨义同学 还有一个最常见也非常好用的：⑩Highcharts：http://t.cn/hJFQt。]]></description>
		<wfw:commentRss>http://blog.newitfarmer.com/anls/data-visualization/11589/repost-%e5%85%ab%e4%b8%aa%e6%95%b0%e6%8d%ae%e5%8f%af%e8%a7%86%e5%8c%96%e5%88%b6%e4%bd%9c%e5%b7%a5%e5%85%b7%e6%8e%a8%e8%8d%90/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
