免费注册
帮助文档(华北一、二)

  • HDFS是一个高度容错性和高吞吐量的分布式文件系统。它被设计的易于扩展也易于使用,适合海量文件的存储。

    HDFS基础操作

    ● 查询文件

    Usage: hadoop fs [generic options] -ls [-d] [-h] [-R] [<path> ...]

    ● 上传文件

    Usage: hadoop fs [generic options] -put [-f] [-p] [-l] <localsrc> … <dst>

    ● 下载文件

    Usage: hadoop fs [generic options] -get [-p] [-ignoreCrc] [-crc] <src> … <localdst>

    更多请参考: hadoop fs –help

    WebHDFS

    WebHDFS提供HDFS的RESTful接口,可通过此接口进行HDFS文件操作。使用WebHDFS时,客户端是先通过Namenode节点获取文件所在的Datanode地址,再通过与Datanode节点进行数据交互。

    上传文件

    托管Hadoop默认配置2个Master节点,同一时刻只有一个节点Namenode处于Active状态,另一个处于Standby状态。下面以uhadoop-******-master1的Namenode为Active为例。

    ● 数据准备

     

      touch uhadoop.txt

    echo "uhadoop" > uhadoop.txt

    ● 创建文件请求

     

    curl -i -X PUT "http://uhadoop-******-

    master1:50070/webhdfs/v1/tmp/uhadoop.txt?op=CREATE"

    注解:

    1. 需要在执行此命令机器加上集群所有节点host

    2. 若提示Operation category READ is not supported in state standby,请更换uhadoop-******-master2尝试

     

    HTTP/1.1 307 TEMPORARY_REDIRECT

    Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE...

    Content-Length: 0

    ● 使用上述Location地址上传文件

     

    curl -i -X PUT -T uhadoop.txt "http://uhadoop-******-

    core*:50075/webhdfs/v1/tmp/uhadoop.txt?op=CREATE&namenoderpcaddress=Ucluste

    r&overwrite=false"

    append文件

    ● 数据准备

     

      touch  append_uhadoop.txt

      echo "inspurcloud" > append_uhadoop.txt

    ● 获取被append文件地址

     

    curl -i -X POST "http://uhadoop-hfygbg-

    master1:50070/webhdfs/v1/tmp/uhadoop.txt?op=APPEND"

    执行上述命令将获取到Location地址,即文件的Datanode地址。

     

    HTTP/1.1 307 TEMPORARY_REDIRECT

    Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE...

    Content-Length: 0

    ● 追加文件

     

    curl -i -X POST -T append_uhadoop.txt "http://uhadoop-******-

    core*:50075/webhdfs/v1/tmp/uhadoop.txt?op=APPEND&namenoderpcaddress=Ucluster"

    打开读取文件

     

    curl -i -L "http://uhadoop-******-

    master1:50070/webhdfs/v1/tmp/uhadoop.txt?op=OPEN"

    删除文件

     

    curl -i -X DELETE "http://uhadoop-******-

    master1:50070/webhdfs/v1/tmp/uhadoop.txt?op=DELETE"

    HttpFS

    Httpfs是cloudera提供的一个HDFS的http接口,可以通过WebHDFS REST API对HDFS进行读写等访问。与WebHDFS的区别是,Httpfs不需要客户端访问集群的每一个节点,只需授权访问启动了Httpfs服务的单台机器即可(Hadoop默认在master1:14000开启Httpfs)。由于Httpfs是在内嵌的tomcat中一个Web应用,因此性能上会受到一些限制。

    上传文件

    ● 数据准备

     

      touch httpfs_uhadoop.txt

      echo "httpfs_uhadoop" > httpfs_uhadoop.txt

    ● 上传数据

     

    curl -i -X PUT -T httpfs_uhadoop.txt --header "Content-Type: 

    application/octet-stream" "http://uhadoop-******-

    master1:14000/webhdfs/v1/tmp/httpfs_uhadoop.txt?op=CREATE&user.name=root&da

    ta=true"

    注解:

    1. 需要在执行此命令机器加上集群master1的host;

    2. url中需添加user.name,否则会报"HTTP Status 401 - Authentication required"错误。

    append文件

    ● 数据准备

     

      touch append_httpfs.txt

      echo "append_httpfs" > append_httpfs.txt

    ● 追加文件

     

    curl -i -X POST -T append_httpfs.txt --header "Content-Type: 

    application/octet-stream" "http://uhadoop-******-

    master1:14000/webhdfs/v1/tmp/httpfs_uhadoop.txt?op=APPEND&user.name=root&da

    ta=true"

    打开并读取文件

     

    curl -i -L http://uhadoop-******-

    master1:14000/webhdfs/v1/tmp/httpfs_uhadoop.txt?op=OPEN&user.name=root

    curl -i -X DELETE "http://uhadoop-******-

    master1:14000/webhdfs/v1/tmp/uhadoop.txt?op=DELETE"

    删除文件

     

    curl -i -X DELETE "http://uhadoop-******-

    master1:14000/webhdfs/v1/tmp/httpfs_uhadoop.txt?op=DELETE&user.name=root"

    MapReduce Job

    以terasort为例,说明如何提交一个MapReduce Job

    ● 生成官方terasort input数据集

       hadoop jar /home/hadoop/hadoop-examples.jar teragen 100 /tmp/terasort_input

    ● 提交任务

     hadoop jar /home/hadoop/hadoop-examples.jar  terasort /tmp/terasort_input /tmp/terasort_output

    5、HDFS日常运维

    重启服务

    重启Namenode:service hadoop-hdfs-namenode restart

    重启Datanode:service hadoop-hdfs-datanode restart

    重启ResourceManager: service hadoop-yarn-resourcemanager restart

    重启NodeManager:service hadoop-yarn-nodemanager restart

    重启整个Hadoop服务:请通过inspurcloud控制台集群服务管理页面操作

    查看HDFS状态,节点信息

       hdfs dfsadmin -report

    修改HDFS文件副本数量

       hdfs dfs -setrep -R [replication-factor] [targetDir]

    示例:修改HDFS 根目录下文件副本数量为2,hdfs dfs -setrep -R 2 /

    查看HDFS文件系统状态

       hadoop fsck /

    返回结果示例如下:

     
    Total size:    455660769497 B (Total open files size: 44723814 B) 
     Total dirs:    47975 
     Total files:   70456 
     Total symlinks:        0 (Files currently being written: 11) 
    Total blocks (validated):  69916 (avg. block size 6517260 B) (Total open file blocks (not validated): 10) 
    Minimally replicated blocks:   69916 (100.0 %) 
    Over-replicated blocks:    0 (0.0 %) 
    Under-replicated blocks:   87 (0.12443504 %) 
     Mis-replicated blocks:     0 (0.0 %) 
     Default replication factor:    3 
     Average block replication: 3.0011585 
     Corrupt blocks:        0 
     Missing replicas:      522 (0.24815665 %) 
     Number of data-nodes:      4 
     Number of racks:       1 
    FSCK ended at Thu Nov 24 16:08:12 CST 2016 in 2044 milliseconds   
    The filesystem under path '/' is HEALTHY

    上述HEALTHY表示当前HDFS文件系统正常,无坏块或者数据丢失。


文档是否已解决您的问题?

  已解决   未解决

如您有其它疑问,您也可以与我们技术专家联系探讨。

联系技术专家