《java私塾Hadoop实战-中高级部分 之 Hadoop RestFul》由会员分享,可在线阅读,更多相关《java私塾Hadoop实战-中高级部分 之 Hadoop RestFul(5页珍藏版)》请在金锄头文库上搜索。
1、作者:Java 私塾;创建时间:2013-12-6 14:49:00,内容来自:java 私塾 Hadoop 实战-中高级部分 之 Hadoop RestFulHadoop RestFulHadoop HDFS 原理 1Hadoop HDFS 原理 2Hadoop 作业调优参数调整及原理Hadoop HAHadoop MapReduce 高级编程Hadoop IOHadoop MapReduce 工作原理Hadoop 管理Hadoop 集群安装Hadoop RPC本节课程概览什么是 REST 与 RESTfulHadoop 的 RESTful API 接口API 示例第一部分:什么是 REST
2、 与 RESTful什么是 REST 及 RESTfulREST 描述了一个架构样式的互联系统(如 Web 应用程序)。 REST 约束条件作为一个整体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。由于它简便、轻量级以及通过 HTTP 直接传输数据的特性,RESTful Web 服务成为基于 SOAP 服务的一个最有前途的替代方案。用于 web 服务和动态 Web 应用程序的多层架构可以实现可重用性、简单性、可扩展性和组件可响应性的清晰分离。Ajax 和 RESTful Web 服务本质上是互为补充的。开发人员可以轻松使用 Ajax 和 RESTful Web 服务一起创建丰富的界面
3、。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 RESTful 原则 客户端 和服务器之间的交互在请求之间是无状态的。 从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Id
4、entifier) 得到一个惟一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是应用程序状态的引擎,资源表示通过超链接互联。 分层系统 ,这表示组件无法了解它与之交互的中间层以外的组件。 通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。REST 实现方式 RESTful Web 服务与 RPC 样式的 Web 服务 WebService RESTful Web 服务的 Java 框架作者:Java 私塾;创建时间:2013-12-6 14:49
5、:00,内容来自:java 私塾 RestletJSR-311 构建 RESTful Web 服务的多层架构 SSHREST 特点REST 从资源的角度来观察整个网络,分布在各处的资源由 URI 确定,而客户端的应用通过 URI 来获取资源的表示方式。获得这些表徵致使这些应用程序转变了其状态。随着不断获取资源的表示方式,客户端应用不断地在转变着其状态REST 中的资源操作资源是由 URI 来指定。对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应 HTTP 协议提供的GET、POST、PUT 和 DELETE 方法。通过操作资源的表现形式来操作资源。资源的表现形式则是 XML 或者
6、HTML,取决于读者是机器还是人,是消费 web 服务的客户软件还是web 浏览器。当然也可以是任何其他的格式。RESTful API 要求客户端和服务器结构连接协议具有无状态性能够利用 Cache 机制增进性能层次化的系统 随需代码 - Javascript (可选)REST 的优点可以利用缓存 Cache 来提高响应速度通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性 浏览器即可作为客户端,简化软件需求相对于其他叠加在 HTTP 协议之上的机制, REST 的软件依赖性更小 不需要额外的资源发现机制在软件技术演进中的长期的兼容性更好RESTful Web
7、 服务RESTful Web 服务(也称为 RESTful Web API)是一个使用 HTTP 并遵循 REST 原则的 Web 服务。 Web 服务接受与返回的互联网媒体类型,比如:JSON ,XML ,YAML 等Web 服务在该资源上所支持的一系列请求方法(比如:POST,GET ,PUT 或 DELETE)。不像基于 SOAP 的 Web 服务,RESTful Web 服务并没有的“正式”标准。 这是因为 REST 是一种架构,而 SOAP 只是一个协议。虽然 REST 不是一个标准,但在实现 RESTful Web 服务时可以使用其他各种标准(比如 HTTP,URL ,XML,PN
8、G 等)。第二部分:Hadoop RESTful API 接口Hadoop RESTful API 介绍全称为 webHDFS在 Hadoop 1.0 提供作者:Java 私塾;创建时间:2013-12-6 14:49:00,内容来自:java 私塾 Hadoop RESTful API-Get 操作 参考 OPENFileSystem.openGETFILESTATUS FileSystem.getFileStatus GETCONTENTSUMMARY FileSystem.getContentSummary LISTSTATUS FileSystem.listStatusGETFILEC
9、HECKSUMFileSystem.getFileChecksumGETHOMEDIRECTORYFileSystem.getHomeDirectoryGETDELEGATIONTOKEN FileSystem.getDelegationToken Hadoop RESTful API-Put操作 参考 CREATEFileSystem.createMKDIRS FileSystem.mkdirs RENAME FileSystem.renameSETREPLICATION FileSystem.setReplicationSETOWNERFileSystem.setOwnerSETPERMI
10、SSIONFileSystem.setTimesSETTIMES FileSystem.getDelegationToken RENEWDELEGATIONTOKEN DistributedFileSystem.renewDelegationToken CANCELDELEGATIONTOKENDistributedFileSystem.cancelDelegationTokenHadoop RESTful API-Post 与 Delete操作 参考 APPEND FileSystem.appendDELETE FileSystem.delete 作者:Java 私塾;创建时间:2013-1
11、2-6 14:49:00,内容来自:java 私塾 第三部分:API 示例Hadoop RESTful API 示例什么是 curlcurl 是一个利用 URL 语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl 同样支持 HTTPS 认证, HTTP POST 方法, HTTP PUT 方法, FTP 上传, kerberos 认证, HTTP 上传 , 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传, 上载文件断点续传, http 代理服务
12、器管道( proxy tunneling), 甚至它还支持 IPv6, socks5 代理服务器, 通过 http 代理服务器上传文件到 FTP 服务器等等,功能十分强大。Windows 操作系统下的网络蚂蚁,网际快车 (FlashGet)的功能它都可以做到。准确的说,curl 支 持文件的上传和下载,所以是一个综合传输工具,但是按照传统,用户习惯称 curl 为下载工具。配置 RESTful API 可用 安装 sudo apt-get install curl 在 HDFS 中设置 dfs.webhdfs.enabled = true示例1.创建并写一个文件 curl -i -X PUT
13、http:/localhost:50070/webhdfs/v1/?op=CREATE&overwrite=&blocksize=&replication=&permission=&buffersize=“curl -i -X PUT -T http:/:/webhdfs/v1/?op=CREATE.“注意这个地方填入的是 DataNode 的信息2.在一个文件内追加内容curl -i -X POST http:/:/webhdfs/v1/?op=APPEND&buffersize=”curl -i -X POST -T http:/:/webhdfs/v1/?op=APPEND.“注意该条命
14、令获得的是 DataNode 的信息。3.打开并读取一个文件curl -i -L http:/:/webhdfs/v1/?op=OPEN&offset=&length=&buffersize=“4.创建一个目录curl -i -X PUT http:/:/?op=MKDIRS&permission=“5.重名命文件、文件夹curl -i -X PUT :/webhdfs/v1/?op=RENAME&destination=6.删除文件 /文件夹curl -i -X DELETE http:/:/webhdfs/v1/?op=DELETE作者:Java 私塾;创建时间:2013-12-6 14:
15、49:00,内容来自:java 私塾 &recursive= “7.文件/ 文件夹的状态信息curl -i “http:/:/webhdfs/v1/?op=GETFILESTATUS ”8.目录列表curl -i http:/:/webhdfs/v1/?op=LISTSTATUS ”9.获取目录的上下文环境汇总信息curl -i http:/:/webhdfs/v1/?op=GETCONTENTSUMMARY10.获取 Check Sum Filecurl -i http:/:/webhdfs/v1/?op=GETFILECHECKSUM ”11 .获取 Home 目录curl -i http:/:/webhdfs/v1/?op=GETHOMEDIRECTORY ”12.设置权限curl -i -X PUT http:/:/webhdfs/v1/?op=SETPERMISSION&permission= “13.设置所有者curl -i -X PUT http:/:/webhdfs/v1/?op=SETOWNER&owner=&group=14.设置备份curl -i -X PUT http:/:/webhdfs/v1/?op=SETREPLICATION&replication= “