zoukankan      html  css  js  c++  java
  • Hadoop in Action 第三章(文件操作命令部分)

    Components of Hadoop

    在上一章节我们了解了如何安装及配置Hadoop。我们了解了不同节点的作用以及这些节点是如何工作的,还了解了如何配置这些节点。现在我们可以运行Hadoop了,现在我们从程序的角度了解一下Hadoop框架。

    首先我们讲解HDFS,HDFS用来存储你的Hadoop应用的各种数据。之后我们讲解MapReduce框架的细节。第一章时,我们已经看到了MapReduce程序,但是我们只是停留在概念层。在这一章我们将进入Java类和方法层面,当然还包括如何部署。我们还会知道如何使用不同数据格式进行读写操作。

    Working with files in HDFS

    你可以将100TB的数据集作为一个单独的数据存储在HDFS中,有时仅仅这一点就足以强过其他文件系统。我们在第二章讨论了HDFS的复制机制。HDFS隐藏了这些底层的处理机制,让开发者感觉只是在处理某个单独的文件。

    HDFS并不是Unix的原生的文件系统,所以标准的Unix文件工具,比如ls和cp不可用,并且也无法使用标准的Unix文件IO操作。但是,Hadoop提供一系列与Unix非常相似的命令和工具。下一节,我们将讨论这些Hadoop文件操作shell命令。之后,我们将看到Hadoop HDFS Java API

    基本的文件操作命令:

    hadoop fs -cmd <args>

    其中cmd指具体的文件操作命令。args是命令参数。

    通常来讲cmd命令与Unix的命令相同。比如说,文件列表命令就是:

    hadoop fs -ls

    我们看一下常见的文件操作命令包括:

    1.新建文件及目录

    2.检索文件

    3.删除文件

    新建文件及目录:

    在运行Hadoop程序之前,我们需要将数据先放进HDFS。我们先假设已经格式化好了整个HDFS系统,并且运行了Hadoop程序。

    HDFS的默认工作路径是 /usr/$USER,这个$USER就是指的登陆名。但是这个目录并不会自动建立,所以我们需要使用mkdir命令手动建立这个目录。比如我的用户名是chuck。当然各位看官如果想自己试试,那要使用你自己的用户名。

    hadoop fs -mkdir /user/chuck

    Hadoop's mkdir 命令使用-p参数回自动创建父一级的目录。

    使用ls命令可以查看:

    hadoop fs -ls /

    这是你就会看到刚刚创建的文件目录的了。

    使用 hadoop fs -lsr / 还可以看到其子目录下的内容起作用与Unix下的ls -r效果相同。


    通过URI精确访问指定的目录  

    Hadoop 文件命令行可以让HDFS与本地文件系统交互。同时也可以与Amazon S3交互。一个

    URI 指向一个确定的文件或者目录。完整的URI格式为:scheme://authority/path。scheme

    类似于协议的意思。authority是指NameNode所在的服务器host。path是指文件或者路径的位置。  

    比如说,一个标准的伪分布式的HDFS运行在本机的9000端口。那么如果想要访问user/chuck目

    录下的example.txt文件。其URI就是hdfs://localhost:9000/user/chuck/example.txt。 

    运行的命令就是 hadoop fs -cat hdfs://localhost:9000/user/chuck/example.txt。

    如你所见,大多数的设置下,URI中不需要指定scheme://authority。处理本地文件时,你可能

    更愿意使用Unix 命令而不是hadoop file 命令。 所以在本地文件与hdfs的拷贝过程中,

    在URI上即便不加file:scheme,put命令与get命令也会使用本地系统作为目的地或者数据源

    另外,如果你在Hadoop 的配置中配置了scheme://authority部分。那么在你的命令中就可以省略

    这个部分。比如:如果你的conf/hadoop-site.xml中配置如下: 

    <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
    </property>

    在这个配置下,URI hdfs://localhost:9000/user/chuck/example.txt可以缩写为 

    /user/chuck/example.txt

    此外,HDFS默认使用的目录为:/user/$USER 这个$USER就是你的登录用户名。如果你用chuck登录

    ,那么如果要访问的URI是 hdfs://localhost:9000/user/chuck/example.txt。你甚至可以缩写为

    example.txt。

    此时,你在用cat命令时,只用输入: 

    hadoop fs -cat example.txt

    RETRIEVING FILES(查看文件内容)

    Hadoop的get命令用来hdfs文件系统中的文件拷贝到本地文件系统。如果我们想将example.txt文件

    拷贝到本地目录。使用如下命令:

     hadoop fs -get example.txt

    这个命令将会把example.txt文件拷贝到本地的当前目录。

    另外hadoop的cat命令可以允许我们查看文件中的内容。  

    hadoop fs -cat example.txt

    我们当然也可以使用Unix shell的管道方式链接另一个命令。 

    比如,如果一个文件很大,而这事你想快速的查看其中的内容,你可以使用hadoop 的cat命令的输出作为

    Unix head命令的输入,比如:

    hadoop fs -cat example.txt | head

    目前,Hadoop本身也支持tail命令: 

    hadoop fs -tail example.txt

    DELETING FILES(删除文件)
     

    ok,不废话,言简意该:如下 

    hadoop fs –rm example.txt

    LOOKING UP HELP(查看帮助)
     
    ok,不废话,言简意该:继续如下 
     
    hadoop fs –help ls
  • 相关阅读:
    JAVA 作业:图形界面
    操作系统实验3:内存分配与回收
    PLAN :昔日未来
    操作系统课程:调度算法
    KMP 代码 暂存
    笔试总结篇(一) : 广州X公司笔试
    雨夜静思(一)
    KMP算法详解-- 转自Matrix67
    百度笔试
    lucene中Document删除不了的问题
  • 原文地址:https://www.cnblogs.com/JohnLiang/p/2243408.html
Copyright © 2011-2022 走看看