Alex 的 Hadoop 菜鸟教程: 第18课 用Http的方式访问HDFS - HttpFs 教程

声明

  • 本文基于Centos 6.x + CDH 5.x

HttpFs 有啥用

HttpFs可以干这两件事情

  • 通过HttpFs你可以在浏览器里面管理HDFS上的文件
  • HttpFs还提供了一套REST 风格的API可以用来管理HDFS

其实很简单的一个东西嘛,但是很实用

安装HttpFs

在集群里面找一台可以访问hdfs的机器安装HttpFs

$ sudo yum install hadoop-httpfs

配置

编辑/etc/hadoop/conf/core-site.xml

<property>
<name>hadoop.proxyuser.httpfs.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.httpfs.groups</name>
<value>*</value>
</property>  

这边是定义可以使用httpfs的用户组和host,写*就是不限制

配置好之后重启hadoop

启动HttpFs

$ sudo service hadoop-httpfs start

使用HttpFs

打开浏览器访问 http://host2:14000/webhdfs/v1?op=LISTSTATUS&user.name=httpfs 可以看到

{
	"FileStatuses": {
		"FileStatus": [{
			"pathSuffix": "hbase",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "hbase",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423446940595,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "tmp",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "hdfs",
			"group": "hadoop",
			"permission": "1777",
			"accessTime": 0,
			"modificationTime": 1423122488037,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "user",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "hdfs",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423529997937,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "var",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "hdfs",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1422945036465,
			"blockSize": 0,
			"replication": 0
		}]
	}
}

这个 &user.name=httpfs 表示用默认用户 httpfs 访问,默认用户是没有密码的。

webhdfs/v1 这是HttpFs的根目录

访问 http://host2:14000/webhdfs/v1/user?op=LISTSTATUS&user.name=httpfs 可以看到

{
	"FileStatuses": {
		"FileStatus": [{
			"pathSuffix": "cloudera",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "root",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423472508868,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "hdfs",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "hdfs",
			"group": "hadoop",
			"permission": "700",
			"accessTime": 0,
			"modificationTime": 1422947019504,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "history",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "mapred",
			"group": "hadoop",
			"permission": "1777",
			"accessTime": 0,
			"modificationTime": 1422945692887,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "hive",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "hive",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423123187569,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "hive_people",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "root",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423216966453,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "hive_people2",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "root",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423222237254,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "impala",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "root",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423475272189,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "root",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "root",
			"group": "hadoop",
			"permission": "700",
			"accessTime": 0,
			"modificationTime": 1423221719835,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "spark",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "spark",
			"group": "spark",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423530243396,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "sqoop",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "hdfs",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423127462911,
			"blockSize": 0,
			"replication": 0
		},
		{
			"pathSuffix": "test_hive",
			"type": "DIRECTORY",
			"length": 0,
			"owner": "root",
			"group": "hadoop",
			"permission": "755",
			"accessTime": 0,
			"modificationTime": 1423215687891,
			"blockSize": 0,
			"replication": 0
		}]
	}
}

很奇怪的是HttpFs的文档很少,更具体的命令要去 WebHDFS的文档里面看 WebHDFS REST API

支持的命令

Operations

建立文件夹

尝试建立一个叫 abc 的文件夹

[[email protected] hadoop-httpfs]# curl -i -X PUT "http://xmseapp03:14000/webhdfs/v1/user/abc?op=MKDIRS&user.name=httpfs"
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: hadoop.auth="u=httpfs&p=httpfs&t=simple&e=1423573951025&s=Ab44ha1Slg1f4xCrK+x4R/s1eMY="; Path=/; Expires=Tue, 10-Feb-2015 13:12:31 GMT; HttpOnly
Content-Type: application/json
Transfer-Encoding: chunked
Date: Tue, 10 Feb 2015 03:12:36 GMT

{"boolean":true}

然后用服务器上的hdfs dfs -ls 命令看下结果

[[email protected] conf]# hdfs dfs -ls /user
Found 12 items
drwxr-xr-x   - httpfs hadoop          0 2015-02-10 11:12 /user/abc
drwxr-xr-x   - root   hadoop          0 2015-02-09 17:01 /user/cloudera
drwx------   - hdfs   hadoop          0 2015-02-03 15:03 /user/hdfs
drwxrwxrwt   - mapred hadoop          0 2015-02-03 14:41 /user/history
drwxr-xr-x   - hive   hadoop          0 2015-02-05 15:59 /user/hive
drwxr-xr-x   - root   hadoop          0 2015-02-06 18:02 /user/hive_people
drwxr-xr-x   - root   hadoop          0 2015-02-06 19:30 /user/hive_people2
drwxr-xr-x   - root   hadoop          0 2015-02-09 17:47 /user/impala
drwx------   - root   hadoop          0 2015-02-06 19:21 /user/root
drwxr-xr-x   - spark  spark           0 2015-02-10 09:04 /user/spark
drwxr-xr-x   - hdfs   hadoop          0 2015-02-05 17:11 /user/sqoop
drwxr-xr-x   - root   hadoop          0 2015-02-06 17:41 /user/test_hive

可以看到建立了一个属于 httpfs 的文件夹 abc

打开文件

从后台上传一个文本文件 test.txt  到 /user/abc 目录下,内容是

Hello World!

用httpfs访问

[[email protected] hadoop-httpfs]# curl -i -X GET "http://xmseapp03:14000/webhdfs/v1/user/abc/test.txt?op=OPEN&user.name=httpfs"
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: hadoop.auth="u=httpfs&p=httpfs&t=simple&e=1423574166943&s=JTxqIJUsblVBeHVuTs6JCV2UbBs="; Path=/; Expires=Tue, 10-Feb-2015 13:16:06 GMT; HttpOnly
Content-Type: application/octet-stream
Content-Length: 13
Date: Tue, 10 Feb 2015 03:16:07 GMT

Hello World!

时间: 2024-10-01 05:43:09

Alex 的 Hadoop 菜鸟教程: 第18课 用Http的方式访问HDFS - HttpFs 教程的相关文章

Alex 的 Hadoop 菜鸟教程: 第19课 华丽的控制台 HUE 安装以及使用教程

声明 本文基于Centos 6.x + CDH 5.x HUE Hadoop也有web管理控制台,而且还很华丽,它的名字叫HUE.通过HUE可以管理Hadoop常见的组件.下面用一幅图说明HUE能管理哪些组件 除了Oozie,LDAP SAML和Solr以外,前面的课程都说过了,Oozie是一个工作流组件,在下一课讲解,LDAP是一个用户密码的管理中心,负责用户的登陆.Solr是一个全文检索的引擎,不过其实Solr也不算Hadoop系专有的,Solr在很早以前就出现了,要算的话应该算Lucene

Alex 的 Hadoop 菜鸟教程: 第15课 Impala 安装使用教程

声明: 本文基于Centos 6.x + CDH 5.x 硬件要求 Impala的使用是有硬件要求的!我第一次见到有硬件要求的,那就是你的CPU必须支持SSSE3,如果你的CPU较老,不支持SSSE3 (3个S),那么你只能找别的机器来学习Impala,因为虚拟机也没有办法给你虚拟出不同的CPU. 为什么用 Impala 因为Hive 太慢了!Impala 也可以执行SQL,但是比Hive的速度快很多.为什么Impala可以比Hive快呢?因为Hive采用的是把你的sql转化成hadoop 的

Alex 的 Hadoop 菜鸟教程: 第4课 Hadoop 安装教程 - HA方式 (2台服务器)

声明 本文基于Centos 6.x + CDH 5.x 官方英文安装教程 http://www.cloudera.com/content/cloudera/en/documentation/cdh5/v5-0-0/CDH5-Installation-Guide/cdh5ig_cdh5_install.html 本文并不是简单翻译,而是再整理 如果没有yum源请参考http://blog.csdn.net/nsrainbow/article/details/36629339#t2 准备工作 用vm

[译文]JOAL教程 第六课 高级加载方式与错误处理

[译文]JOAL教程 原文地址:http://jogamp.org/joal-demos/www/devmaster/lesson6.html 原文作者:Athomas Goldberg 译文:三向板砖 转载请保留以上信息. 本次课程对应的学习笔记:http://blog.csdn.net/shuzhe66/article/details/40303739 第六课 高级加载方式与错误处理 本文是DevMaster.net(http://devmaster.net/)的OpenAL教程对应的JOA

Alex 的 Hadoop 菜鸟教程: 第7课 Sqoop2 导出教程

承接上节课,现在说说导出教程 检查连接 先看看有没有可用的connection 连接,如果没有就要根据上节课的方法创建一个 sqoop:000> show connector --all 1 connector(s) to show: Connector with id 1: Name: generic-jdbc-connector Class: org.apache.sqoop.connector.jdbc.GenericJdbcConnector Version: 1.99.3-cdh5.0

Alex 的 Hadoop 菜鸟教程: 第9课 zookeeper 介绍和使用

声明 本文基于Centos 6.x + CDH 5.x zookeeper有什么用 看了之前的教程,会发现多处出现zookeeper,比如hadoop的 auto failover 得用 zookeeper ,Hbase 的 RegionServer 也得用zookeeper.其实不止hadoop,包括现在小有名气的 Storm 用的也是zookeeper.那么zookeeper 究竟是做什么用的? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务. ZooKeeper的目标就

Alex 的 Hadoop 菜鸟教程: 第10课 Hive 入门教程

Hive 安装 相比起很多教程先介绍概念,我喜欢先动手装上,然后用例子来介绍概念.我们先来安装一下Hive 先确认是否已经安装了对应的yum源,如果没有照这个教程里面写的安装cdh的yum源http://blog.csdn.net/nsrainbow/article/details/36629339 Hive是什么 Hive 提供了一个让大家可以使用sql去查询数据的途径.但是最好不要拿Hive进行实时的查询.因为Hive的实现原理是把sql语句转化为多个Map Reduce任务所以Hive非常

Alex 的 Hadoop 菜鸟教程: 第20课 工作流引擎 Oozie

本文基于 Centos6.x + CDH5.x Oozie是什么 简单的说Oozie是一个工作流引擎.只不过它是一个基于Hadoop的工作流引擎,在实际工作中,遇到对数据进行一连串的操作的时候很实用,不需要自己写一些处理代码了,只需要定义好各个action,然后把他们串在一个工作流里面就可以自动执行了.对于大数据的分析工作非常有用 安装Oozie Oozie分为服务端和客户端,我现在选择host1作为服务端,host2作为客户端. 所以在host1上运行 yum install oozie 在h

Alex 的 Hadoop 菜鸟教程: 第8课 Sqoop1 安装/导入/导出教程

靠!sqoop2的文档太少了,而且居然不支持Hbase,十分简陋,所以我愤而放弃Sqoop2转为使用Sqoop1,之前跟着我教程看到朋友不要拿砖砸我,我是也是不知情的群众 卸载sqoop2 这步可选,如果你们是照着我之前的教程你们已经装了sqoop2就得先卸载掉,没装的可以跳过这步 $ sudo su - $ service sqoop2-server stop $ yum -y remove sqoop2-server $ yum -y remove sqoop2-client 安装Sqoop