`

Hadoop RestFul

 
阅读更多
第一部分:什么是REST RESTful
•什么是REST及RESTful
 REST 描述了一个架构样式的互联系统(如 Web 应用程序)。REST 约束条件作为一个整体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。由于它简便、轻量级以及通过 HTTP 直接传输数据的特性,RESTful Web 服务成为基于 SOAP 服务的一个最有前途的替代方案。用于 web 服务和动态 Web 应用程序的多层架构可以实现可重用性、简单性、可扩展性和组件可响应性的清晰分离。Ajax 和 RESTful Web 服务本质上是互为补充的。开发人员可以轻松使用 Ajax 和 RESTful Web 服务一起创建丰富的界面。
REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 
RESTful 原则
客户端和服务器之间的交互在请求之间是无状态的。 从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可 用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
•在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每 个资源都使用 URI (Universal Resource Identifier) 得到一个惟一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是应用程序状态的引擎,资源表示通过超链接互联。
 
分层系统,这表示组件无法了解它与之交互的中间层以外的组件。 通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。
REST 实现方式
RESTful Web 服务与 RPC 样式的 Web 服务
WebService
RESTful Web 服务的 Java 框架
•Restlet
•JSR-311
构建 RESTful Web 服务的多层架构
SSH
  
REST 特点
•REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式。获得这些表徵致使这些应用程序转变了其状态。随着不断获取资源的表示方式,客户端应用不断地在转变着其状态
 
REST 中的资源操作
•资源是由URI来指定。
•对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
•通过操作资源的表现形式来操作资源。
•资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
 
RESTful API 要求
•客户端和服务器结构
•连接协议具有无状态性
•能够利用Cache机制增进性能
•层次化的系统 随需代码 - Javascript (可选)
REST的优点
•可以利用缓存Cache来提高响应速度
•通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性 浏览器即可作为客户端,
•简化软件需求
•相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小 不需要额外的资源发现机制
•在软件技术演进中的长期的兼容性更好
 
RESTful Web 服务
•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,PNG等)。
第二部分:Hadoop RESTful API接口
Hadoop RESTful API 介绍
•全称为webHDFS
•在Hadoop 1.0 提供
Hadoop RESTful API-Get 
操作
参考
 
OPEN
 
FileSystem.open
GETFILESTATUS
FileSystem.getFileStatus
 
GETCONTENTSUMMARY
FileSystem.getContentSummary
 
LISTSTATUS
FileSystem.listStatus
GETFILECHECKSUM
 
FileSystem.getFileChecksum
 
GETHOMEDIRECTORY
 
FileSystem.getHomeDirectory
 
GETDELEGATIONTOKEN
FileSystem.getDelegationToken
 
Hadoop RESTful API-Put
操作
参考
 
CREATE
 
FileSystem.create
MKDIRS
FileSystem.mkdirs
 
RENAME
FileSystem.rename
SETREPLICATION
FileSystem.setReplication
SETOWNER
 
FileSystem.setOwner
 
SETPERMISSION
 
FileSystem.setTimes
SETTIMES
FileSystem.getDelegationToken
 
RENEWDELEGATIONTOKEN
DistributedFileSystem.renewDelegationToken
 
CANCELDELEGATIONTOKEN
DistributedFileSystem.cancelDelegationToken
 
Hadoop RESTful API-Post与Delete
操作
参考
 
APPEND
FileSystem.append
DELETE
FileSystem.delete
 
 
 
第三部分:API 示例
Hadoop RESTful API 示例
•什么是curl
             curl是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER,  TELNET, DICT, FILE 以及 LDAP。
            curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP 上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传, 上载文件断点续传,  http代理服务器管道( 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 "http://localhost:50070/webhdfs/v1/<PATH>?op=CREATE
[&overwrite=<true|false>][&blocksize=<LONG>][&replication=<SHORT>]
[&permission=<OCTAL>][&buffersize=<INT>]“
•curl -i -X PUT -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?
op=CREATE...“
注意这个地方填入的是DataNode的信息
2.在一个文件内追加内容
•curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=APPEND[&buffersize=<INT>]”
•curl -i -X POST -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?
op=APPEND...“
注意该条命令获得的是DataNode的信息。

 

3.打开并读取一个文件
•curl -i -L "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=OPEN
[&offset=<LONG>][&length=<LONG>][&buffersize=<INT>]“
 
4.创建一个目录
curl -i -X PUT "http://<HOST>:<PORT>/<PATH>?op=MKDIRS[&permission=<OCTAL>]“
5.重名命文件、文件夹
curl -i -X PUT "<HOST>:<PORT>/webhdfs/v1/<PATH>?op=RENAME&destination=<PATH>"
6.删除文件/文件夹
curl -i -X DELETE "http://<host>:<port>/webhdfs/v1/<path>?op=DELETE
[&recursive=<true|false>]
7.文件/ 文件夹的状态信息
curl -i “http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILESTATUS
8.目录列表
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS
9.获取目录的上下文环境汇总信息
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETCONTENTSUMMARY"
10.获取Check Sum File
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM
11 .获取Home 目录
curl -i "http://<HOST>:<PORT>/webhdfs/v1/?op=GETHOMEDIRECTORY
12.设置权限
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETPERMISSION
[&permission=<OCTAL>]
13.设置所有者
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETOWNER
[&owner=<USER>][&group=<GROUP>]"

14.设置备份

 curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETREPLICATION
[&replication=<SHORT>]
分享到:
评论

相关推荐

    hdfs-connector:抽象访问hdfs的接口,实现restful方式

    要求我使用的hdfs是hadoop2.2.0,它支持以restful方式访问文件系统,首先web-hdfs服务应该是打开的,所以配置hadoop并确保以下内容包含在${HADOOP_HOME}/etc/hadoop/hdfs-site.xml &lt; property&gt; &lt; name&gt;dfs.webhdfs....

    elasticsearch-hadoop-8.8.0

    Elasticsearch有自己的RESTful API,用于索引、搜索、分析和管理数据。通过Elasticsearch-Hadoop,用户可以在Hadoop环境中使用这些API,实现对Elasticsearch集群的操作。 Elasticsearch-Hadoop的主要功能包括: - ...

    elasticsearch与hadoop比较

    在使用上,Elasticsearch提供了RESTful接口,使得其可以被轻松集成到各种Web应用中,实现搜索功能。同时,Elasticsearch的聚合功能也非常出色,能够对数据进行高效的统计分析,这一点上Elasticsearch已经超越了传统...

    基于Hadoop的股票大数据分析系统.zip

    Flask是一个轻量级的Web服务器,常用于构建RESTful API,可以为股票分析系统提供用户界面或者数据接口。Hive则是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,使得非...

    最新Hadoop学习笔记

    在实际项目中,我们可能需要将Hadoop与JavaWeb结合,例如通过RESTful API访问Hadoop服务。这需要: 1. 使用Servlet或Spring MVC等技术构建Web接口。 2. 在后台调用Hadoop的Java API执行任务。 3. 将结果通过HTTP...

    hadoop lib包

    7. **Jetty**:轻量级Web服务器和HTTP客户端库,用于Hadoop的Web UI和RESTful服务。 在CentOS 6.4和Redhat 6上部署Hadoop时,lib包是必不可少的。安装过程中,需要将lib目录下的所有JAR文件添加到Hadoop的类路径...

    基于hadoop的网盘.zip

    这通常涉及到Web应用开发,可以使用如Java的Spring Boot框架,结合RESTful API设计,实现HTTP请求的处理,与HDFS进行交互。例如,用户上传文件时,Web应用调用HDFS的API将文件分块并存入分布式文件系统。 其次,...

    elasticsearch-hadoop-2.4.0.zip

    其核心特性包括分布式、零配置、自动发现节点、负载均衡、支持RESTful API以及强大的聚合功能等。Hadoop则是一个开源框架,用于存储和处理大规模数据,基于分布式计算模型MapReduce。 Elasticsearch-Hadoop库使得...

    helm安装私有仓库及搭建hadoop实例过程文档

    安装Minio后,可以通过其提供的RESTful API创建一个新的bucket作为仓库。获取Minio的访问密钥和端点,然后使用`helm repo add`命令添加到Helm仓库列表。 5. **上传Chart到私有仓库**:使用`helm package`命令将...

    基于Hadoop的网盘管理系统(后端).zip

    2. 后端接口:后端与Hadoop集群交互,处理文件的存储、检索、删除等请求,通常会设计RESTful API以方便对接。 3. 安全机制:系统需具备权限管理、访问控制和数据加密功能,确保用户数据的安全。 4. 性能优化:通过...

    HOOP技术基于RESTFUL

    本文将深入探讨HOOP技术,这是一种利用RESTful接口与Hadoop的HDFS(Hadoop Distributed File System)进行交互的方式。RESTful是一种Web服务设计模式,它强调简洁和可扩展性,使得HDFS的文件操作变得更为便捷和高效...

    Ambari部署Hadoop集群.doc

    此外,它提供的RESTful API允许开发者将Hadoop的管理功能集成到自定义应用中。 在安装Ambari之前,确保使用支持的操作系统,例如RHEL、CentOS、OEL、SLES、Ubuntu或Debian的64位版本。以Ubuntu 16.04为例,首先需要...

    elasticsearch-hadoop-5.2.1

    9. **RESTful接口**:除了传统的MapReduce和Spark支持,Elasticsearch-Hadoop还支持通过Hadoop的InputFormat和OutputFormat使用Hadoop的通用工具(如Hive和Pig)来与Elasticsearch交互,这些工具可以直接利用Elastic...

    基于WEB实现的Hadoop集群可视化上传下载增删查改系统

    4. **RESTful API**:为了实现Web与Hadoop集群的通信,通常会设计一套RESTful API接口,使得前端可以通过HTTP请求执行Hadoop命令。API设计应遵循资源导向、无状态、统一接口等原则,以提高可扩展性和维护性。 5. **...

    HADOOP大数据平台系统思路流程图.rar

    例如,可以创建RESTful API,让Web应用向Hadoop提交MapReduce作业,获取处理结果。 流程图中可能涵盖了以下步骤: 1. 数据采集:通过Web服务器日志、用户行为跟踪等方式收集数据。 2. 数据预处理:清洗、转换数据,...

    Apache Hadoop---Ranger.docx

    1. **RangerAdmin**:作为中心管理服务,RangerAdmin通过RESTful API提供了策略的创建、修改和删除功能。此外,它还包含一个直观的Web界面,使得管理员能够方便地管理和配置权限策略。 2. **Service Plugin**:这些...

    spark研究分析&restful架构

    ### Spark研究分析&RESTful架构 #### 一、Spark研究分析 ##### 1.1 Spark简介 Spark 是一种快速、通用的大规模数据处理系统。它最初由美国加州大学伯克利分校(UC Berkeley)的 AMPLab 开发,并于 2010 年正式开源...

    hadoop-yarn-server-resourcemanager-2.3.0.zip

    Elasticsearch 是一个流行的分布式、RESTful风格的搜索和数据分析引擎,用于处理大量结构化和非结构化数据。Elasticsearch Dataformat 插件是为Elasticsearch开发的一个扩展,旨在丰富其数据导出功能。这个插件提供...

Global site tag (gtag.js) - Google Analytics