基本文件命令:

格式为:hadoop fs -cmd <args>

cmd的命名通常与unix对应的命令名相同。例如,文件列表命令: hadoop fs -ls

1、添加目录和文件

HDFS有一个默认的工作目录 /user/$USER,其中$USER是你的登录用户名。不过目录不会自动建立,我们现在用mkdir建立它,我使用的是chen作为用户名。

hadoop fs -mkdir /user/chen

(hadoop的mkdir命令会自动创建父目录,类似于带-p的unix命令)

我们现在放本地文件系统的一个文件进去。

hadoop fs -put example.txt .

最后一个参数是句点,相当于放入了默认的工作目录,等价于 hadoop fs -put example.txt /user/chen

当你把文件放入HDFS上后,你就可以运行Hadoop程序来处理它。

2、检索文件

get命令与put命令相反,它从HDFS复制文件回到本地文件系统。

hadoop fs -get example.txt .

复制到本地的当前工作目录中。

另一种是显示数据,用cat

hadoop fs -cat example.txt

3、删除文件

rm命令

hadoop fs -rm example.txt

也可以用来删除空目录

编程读写HDFS

利用HDFS给我们提供的API,我们同样可以访问它。

在Hadoop中用作文件操作的主类位于org.apache.hadoop.fs软件包中。包括常见的open、read、write、close。Hadoop文件的API起点是FileSystem类,这是一个与文件系统交互的抽象类,我们通过调用factory的方法FileSystem.get(Configuration conf)来取得所需的FileSystem实例,如下我们可以获得与HDFS接口的FileSystem对象:

Configuration conf = new Configuration();

FileSystem hdfs = FileSystem.get(conf);//获得HDFS的FileSystem对象

如果我们要实现HDFS与本地文件系统的交互,我们还需要获取本地文件系统的FileSystem对象

FileSystem local = FileSystem.getLocal(conf);//获得本地文件系统的FileSystem对象

以下代码讲解了一个例子,我们开发一个PutMerge程序,用于合并本地文件后放入HDFS,因为大文件HDFS处理起来比较容易,所以这个程序经常会在以后的开发中用到

import java.io.IOException;   
import org.apache.hadoop.conf.Configuration;   
import org.apache.hadoop.fs.FSDataInputStream;   
import org.apache.hadoop.fs.FSDataOutputStream;   
import org.apache.hadoop.fs.FileStatus;   
import org.apache.hadoop.fs.FileSystem;   
import org.apache.hadoop.fs.Path;   
public class PutMerge {   
    public static void main(String[] args) throws IOException {   
    Configuration conf = new Configuration();   
    FileSystem hdfs =FileSystem.get(conf); //获得HDFS文件系统的对象   
    FileSystem local = FileSystem.getLocal(conf);//获得本地文件系统的对象   
    Path inputDir = new Path(args[0]);//设定输入目录   
    Path hdfsFile = new Path(args[1]);//设定输出目录   
   try{   
       FileStatus[] inputFiles = local.listStatus(inputDir);//FileStatus的listStatus()方法获得一个目录中的文件列表   
      FSDataOutputStream out = hdfs.create(hdfsFile);//生成HDFS输出流   
      for(int i = 0; i < inputFiles.length; i ++){   
            System.out.println(inputFiles[i].getPath().getName());   
            FSDataInputStream in = local.open(inputFiles[i].getPath());//打开本地输入流   
          byte[] buffer = new byte[256];   
            int bytesRead = 0;   
            while((bytesRead = in.read(buffer))>0){   
            out.write(buffer,0,bytesRead);//通过一个循环来写入   
          }   
            in.close();   
         }   
         out.close();   
     }catch (IOException e) {   
           e.printStackTrace();   
     }   
 }

Hadoop:第一个程序操作HDFS

http://www.cnblogs.com/fora/archive/2011/07/20/2111870.html

HDFS文件系统基本文件命令、编程读写HDFS的更多相关文章

  1. 搭建maven开发环境测试Hadoop组件HDFS文件系统的一些命令

    1.PC已经安装Eclipse Software,测试平台windows10及Centos6.8虚拟机 2.新建maven project 3.打开pom.xml,maven工程项目的pom文件加载以 ...

  2. Maven下从HDFS文件系统读取文件内容

    需要注意以下几点 1.所以的包都是org.apache.hadoop.XXX 2.三个配置文件要放到指定文件夹中等待文件系统读取(src/main/resources):core-site.xml h ...

  3. HDFS dfsclient写文件过程 源码分析

    HDFS写入文件的重要概念 HDFS一个文件由多个block构成.HDFS在进行block读写的时候是以packet(默认每个packet为64K)为单位进行的.每一个packet由若干个chunk( ...

  4. Hadoop Shell命令(基于linux操作系统上传下载文件到hdfs文件系统基本命令学习)

    Apache-->hadoop的官网文档命令学习:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html FS Shell 调用文件系统( ...

  5. 大数据【二】HDFS部署及文件读写(包含eclipse hadoop配置)

    一 原理阐述 1' DFS 分布式文件系统(即DFS,Distributed File System),指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.该系统架构 ...

  6. hadoop系列二:HDFS文件系统的命令及JAVA客户端API

    转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...

  7. Ubuntu本地文件上传至HDFS文件系统出现的乱码问题及解决方案

    1.问题来源及原因 用shell命令上传到HDFS中之后出现中文乱码,在shell命令窗口查看如图: 在eclipse中的文件HDFS查看工具查看如图: 原因:上传至HDFS文件系统的文本文件(这里是 ...

  8. hue上配置HA的hdfs文件(注意,HA集群必须这样来配置才能访问hdfs文件系统)

    按照正常方式配置,发现无论如何也访问不了hdfs文件系统,因为我们是HA的集群,所以不能按照如下配置 将其改为 除此之外,还需要配置hdfs文件的 接着要去hadoop的目录下启动httpfs.sh ...

  9. HDFS分布式文件系统的常用命令行操作

    一.HDFS的客户端种类 1.网页形式  =>用于测试 网址为你的namenode节点的ip+50070的端口号,如: 192.168.50.128:50070 2.命令行形式 =>用于测 ...

随机推荐

  1. xhEditor与Java结合使用

    xhEditor是一个轻量级的html编辑器,使用它可以非常方便的编辑图文内容,然而官方文档中只有php的演示,没有Java版的,最近两天参考网上各种各样的文档,琢磨了一下用法,现已可以正常运行,现在 ...

  2. 使用gradle构建java项目

    gradle是什么东东 gradle是继ant,maven之后另外一种的面向java的自动化项目构建工具,他是基于groovy语言的.相对于ant,maven,gradle显得更加简单. 安装grad ...

  3. python 内置函数和表达式

    对于简单的函数来说,可以使用类似于三元运算来表示,即: lambda表达式 格式: lambda [arg1[, arg2, ... argN]]: expression   先来看看三元表达式 #普 ...

  4. webservice未能加载文件或程序集“**.DLL”或它的某一个依赖项。

    方法1.C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files先删除这个下面所有的文件,然后把bin里面的引用的dl ...

  5. 【php】中【event】之实现方式

    这两天看了点事件机制,那么在php中,如何实现最简单的事件呢? 废话不多说,我们上代码. <?php class Event{ //事件名称 public $name; //存储hander p ...

  6. HTML+CSS基础学习笔记(4)

    一.认识CSS样式 1.定义 CSS全称:层叠样式表(Cascading Style Sheets) 主要作用:定义HTML内容在浏览器内的显示样式,比如文字大小.颜色.字体加粗等 优点:通过定义某个 ...

  7. html通用导航条制作

    第一步:先创建一个盒子,定义类为 nav,width 1000,height 40px,防京东的导航,与浏览器顶部100px,margin-top:100px,看的更直观 第二步:使用无序列表放置,导 ...

  8. IE浏览器div错乱问题

    这个问题属于各浏览器的兼容问题,有时候在其他浏览器中,html页面布局都是正常显示,唯独IE浏览器的div块布局错乱了,可能是html文件上面的报头标准出现错误. 就是一段报头,告诉浏览器,你的文档以 ...

  9. C#DbHelperOra,Oracle数据库帮助类 (转载)

    主要功能如下数据访问抽象基础类 主要是访问Oracle数据库主要实现如下功能 .数据访问基础类(基于Oracle),主要是用来访问Oracle数据库的. .得到最大值:是否存在:是否存在(基于Orac ...

  10. Javascript基础学习(3)_对象和数组

    一.对象是一种无序的属性集合,每个属性都有自己的名字和值. 1.创建对象 花括号内逗号分隔 var person = { "Name" : "LiCheng", ...