互联网常见 Open API 文档资源

所谓的开放API(OpenAPI)是服务型网站 常见的一种应用,网站的服务商将自己的网站服务封装成一系列API(Application Programming  Interface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,所开放的API就被称作OpenAPI(开放 API)。
网站提供开放平台的API后,可以吸引一些第三方的开发人员在该平台上开发商业应用,平台提供商可以获得更多的流量与市场份 额,第三方开发者不需要庞大的硬件与技术投资就可以轻松快捷的创业,从而达到双赢的目的,开放API是大平台发展、共享的途径,让开发者开发一个有价值应 用,付出的成本更少,成功的机会更多。今天,OpenAPI作为互联网在线服务的发展基础,已经成为越来越多互联网企业发展服务的必然选择。下面我就列举 一些常见网站服务的Open API文档资源索引。
SNS类网站API
Facebook – http://developers.facebook.com/
人人网开放平台 – http://dev.renren.com/
51.com开放平台 – http://developers.51.com/
MySpace开发者平台 – http://developer.myspace.cn/
Opensocial – http://wiki.opensocial.org/
Google Gadgets 小工具 API 开发人员指南 – http://www.google.com/intl/zh-TW/apis/gadgets/docs-home.html
Gadgets API 开发人员指南 – http://code.google.com/intl/zh-CN/apis/gadgets/docs/dev_guide.html
Gadgets API – http://code.google.com/intl/zh-CN/apis/gadgets/
电子商务类
Amazon API – http://aws.amazon.com/
eBay  API – http://developer.ebay.com/
淘宝开放平台 – http://www.taobao.com/theme/tao_source/
微博API
Twitter API – http://apiwiki.twitter.com/Twitter-API-Documentation
Status.Net(Laconica) API – http://status.net/wiki/Twitter-compatible_API
新浪微博开发者平台 – http://open.t.sina.com.cn
注:需要授权的开发者才能访问,其API调用格式类似Twitter,但需要一个API Key用于认证管理。
搜狐博客开放平台 –  http://ow.blog.sohu.com/
Follow5 API – http://www.follow5.com/f5/jsp/other/api/api.jsp
嘀咕API – http://code.google.com/p/digu-api/wiki/DiguApi
做啥API – http://code.google.com/p/zuosa-api/wiki/ZuosaApiDoc
人间网API – http://renjian.com/api.html
9911微博API – http://www.9911.com/api.php
Google Maps API
Google Maps API Developer  Guide – http://code.google.com/intl/en/apis/maps/documentation/
Google Maps API Tutorial – http://econym.org.uk/gmap/extensions.htm
GMaps Utility Library – http://code.google.com/p/gmaps-utility-library-dev/wiki/Libraries
GMaps Utility Examples – http://gmaps-utility-library.googlecode.com/svn/trunk/labeledmarker/release/examples/
Saving User-Added Form Data – http://code.google.com/intl/zh-CN/apis/maps/articles/phpsqlinfo.html
Firefox类
Mozilla 开发者中心的扩展开发专题 – https://developer.mozilla.org/en/Extensions
XUL 1.0 规范 – http://www-archive.mozilla.org/projects/xul/xul.html
更多地了解这种基于 XML 的用户界面语言,它可以构建各种富跨平台应用程序。
Mozilla Development  Center 的 XUL 教程 – http://developer.mozilla.org/en/docs/XUL_Tutorial
Getting started with extension development 编写一个最简单的Firefox扩展 – http://kb.mozillazine.org/Getting_started_with_extension_development
Setting up extension development environment – http://developer.mozilla.org/en/docs/Setting_up_extension_development_environment
实战 Firefox 扩展开发 – http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/
使用 XUL 实现浏览器扩展 (1) – http://www.ibm.com/developerworks/cn/web/wa-xul1/
使用 XUL 实现浏览器扩展 (2) – http://www.ibm.com/developerworks/cn/web/wa-xul2/
应用类
豆瓣API – http://www.douban.com/service/apidoc/
Flickr API – http://www.flickr.com/services/api/
Last.fm API – http://www.last.fm/api
Box.net API – http://developers.box.net/
Delicious API – http://delicious.com/help/api
API统计 – http://www.programmableweb.com/apis
转载自月光博客 [ http://www.williamlong.info/ ]

使用OAuth进行认证和授权的过程

用户访问客户端的网站,想操作用户存放在服务提供方的资源。
客户端向服务提供方请求一个临时令牌。
服务提供方验证客户端的身份后,授予一个临时令牌。
客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给服务提供方。
用户在服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。
授权成功后,服务提供方引导用户返回客户端的网页。
客户端根据临时令牌从服务提供方那里获取访问令牌。
服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。
客户端使用获取的访问令牌访问存放在服务提供方上的受保护的资源。

Hadoop标准化安装工具 Cloudera

Cloudera  的定位在于 Bringing Big Data to the Enterprise with Hadoop
Cloudera为了让Hadoop的配置标准化,可以帮助企业安装,配置,运行hadoop以达到大规模企业数据的处理和分析。
既然是给企业使用,Cloudera的软件配置不是采用最新的hadoop 0.20,而是采用了Hadoop 0.18.3-12.cloudera.CH0_3的版本进行封装,并且集成了facebook提供的hive,yahoo提供的pig等基于 hadoop的sql实现接口,使得这些软件的安装,配置和使用的成本降低并且进行了标准化。当然除了集成和封装这些成熟的工具外,Cloudera一个 比较有意思的工具是sqoop,目前这个工具没有独立提供。

雅虎计划重构 Hadoop-MapReduce,解决性能瓶颈

最近雅虎开发者博客发了一篇介绍Hadoop重构计划的文章。因为他们发现当集群的规模达到4000台机器的时候,Hadoop遭遇到扩展性的瓶颈,目前他们正准备开始对Hadoop进行重构。
Mapreduce面临的瓶颈
从集群大小和工作量中观察到的趋势是,MapReduce的JobTracker需要彻底改革,以解决其可扩展性,内存消耗,线程模型,可靠性和性能的几个缺陷。Mapreduce在过去5年框架不断的修复过程中发现成本在不断增加。目前Hadoop各个模块的紧耦合使得在现有设计的基础上继续改进变得举步维艰。这一点早已在社区内达成共识,所以他们正准备开始对Hadoop进行重构。不过从操作的角度来看,任何轻微的或修复Bug带来的巨大改动都会让Hadoop MapReduce强制进行全系统的升级。
下一代MapReduce构思
据该博客文章表示,新架构的主要思想是把原来JobTracker的功能一分为二:ResourceManager管理资源的分配,ApplicationMaster管理任务监控和调度。ResourceManager与原有的JobTracker类似,作为整个集群的控制中心;而ApplicationMaster则是每个application都有一个单独的实例,application是用户提交的一组任务,它可以由一个或多个job组成。每台slave运行一个NodeManager实例,功能类似于原来的TaskTracker。
1.层次化的管理
目前Hadoop的资源管理和任务调度都是在JobTracker中进行的,它需要复制所有task的资源分配和调度。而task是非常微观的调度单位,通常每个job都会产生成百上千个task,而系统同一时刻又会有大量的job同时运行,这让JobTracker的管理负担变得非常繁重。新架构将这一管理任务下放到各个ApplicationMaster,ResourceManager只管理每个application的资源分配。这样即使系统中存在很多application,ResourceManager的负担也能控制在一个合理的程度;这也是新架构最大的优势。
2.ApplicationMaster应该在Master还是Slave上运行?
新架构实际上将管理和调度的任务转移到ApplicationMaster上来,如果ApplicationMaster所在的节点挂掉,整个任务都需要重做。原来JobTracker可以跑在相对稳定的Master上,出错概率低;现在ApplicationMaster跑在好些Slave上,出错的概率就非常高了。而且新架构打破了原来简单的Master-Slave模型,节点之间的通讯和依赖关系变得更加复杂,增加了网络优化的难度。如果把ApplicationMaster全都放在Master上执行,则Master的负担会非常重(需要处理各种持续性的heartbeat和爆发性的如getTaskCompletionEvents这样的rpc请求),不过这个问题可以通过分布式的Master解决(Google已经实现)。
3.资源管理方式
原来单纯地以简单静态的slot作为资源单位确实不能很好描述集群的资源状况。新架构将更细粒度地控制CPU,内存,磁盘,网络这些资源。每个task都将在Container中执行,并只能使用其所分配到的系统资源。资源的分配可以用静态估计动态调整的方式实现。
4.支持其他编程模型
由于任务的管理和调度都由ApplicationMaster进行,ApplicationMaster又相对独立于系统的其他模块,用户甚至可以部署自己的ApplicationMaster,实现对其他编程模型的支持。这使得其他不大适合用MapReduce实现的应用程序也能在同一个Hadoop集群中运行。
可伸缩性实现
可伸缩性对当前的硬件发展趋势是非常重要的,目前MapReduce集群已经有4000台主机。然而2009年的集群中的4000台主机(8核心,16GB内存,4TB硬盘)只有2011年集群中4000台主机(16核心,48GB内存,24TB内存)一半的处理能力。此外,考虑到运营成本,迫使集群中运行6000台主机,以后可能会更多。
可用性实现
ResourceManager —— ResourceManager使用Apache的ZooKeeper实现故障转移。当ResourceManager失败时,可以通过Apache的ZooKeeper迅速恢复集群状态。在故障转移后,所有队列运行的应用程序都会重新启动。
ApplicationMaster —— MapReduce的NextGen支持为ApplicationMaster应用进行特定的检查。MapReduce的ApplicationMaster可以从失败中恢复,通过自身恢复到HDFS保存的状态。
兼容性实现
MapReduce的NextGen使用Wire-兼容协议(wire-compatible protocols)来允许不同版本的服务器和客户端进行信息交换。在未来的版本中,这一特性将一直保留,以保证集群升级后仍然兼容。
集群实现
MapReduce NextGen Resource使用常规的概念调度并将资源分配给各个应用程序。集群中的每台机器概念上都是由资源组成的,如内存,I/O带宽等。
支持其他的编程模型
MapReduce的NextGen提供了一个完全通用的计算框架,以支持MapReduce和其他范例。
该架构最终允许用户能够实现自定义ApplicationMaster,它可以要求ResourceManager的资源利用他们。因此,它支持多种编程,如MapReduce,MPI,Master-Worker以及Iterative models在Hadoop上。并允许为每个应用使用适当的框架。这对于应用程序(如K-Means, Page-Rank)在自定义框架外运行MapReduce。
结论
Apache的Hadoop,特别是Hadoop的MapReduce是一个非常成功的开源的处理大数据集的项目。我们建议Hadoop的MapReduce提高可用性、提高集群使用,并提供范式的编程架构以及
实现快速的发展。Yahoo将和Apache基金会一起将Hadoop在处理大数据的能力提高到一个新水平。

Spring Hadoop 1.0.0 M1 发布

Spring Hadoop 发布了首个里程碑版本,Spring Hadoop 提供了在 Spring 框架下编写 Hadoop 应用的支持。
Spring Hadoop 支持:

  • Hadoop 配置
  • MapReduce, Streaming Jobs and Tool
  • HBase 配置
  • Hive server and thrift client
  • Pig configuration
  • Embedded API for Hadoop FsShell and DistCp
  • JSR-223/javax.scripting for HDFS interaction
  • Spring Batch tasklets for vanilla Hadoop, Hive, Pig

相关链接:
Downloads | JavaDocs | Reference Documentation | Changelog