• day03-hdfs的客户端操作hdfs的java客户端编程


    5、hdfs的客户端操作

    客户端的理解

    hdfs的客户端有多种形式:

    1、网页形式

    2、命令行形式

    3、客户端在哪里运行,没有约束,只要运行客户端的机器能够跟hdfs集群联网

    文件的切块大小和存储的副本数量,都是由客户端决定!

    所谓的由客户端决定,是通过配置参数来定的

    hdfs的客户端会读以下两个参数,来决定切块大小、副本数量:

    切块大小的参数: dfs.blocksize

    副本数量的参数: dfs.replication

    上面两个参数应该配置在客户端机器的hadoop目录中的hdfs-site.xml中配置

    <property>

    <name>dfs.blocksize</name>

    <value>64m</value>

    </property>

     

    <property>

    <name>dfs.replication</name>

    <value>2</value>

    </property>

     

    hdfs命令行客户端的常用操作命令

    0、查看hdfs中的目录信息

    hadoop fs -ls /hdfs路径

    1、上传文件到hdfs中

    hadoop fs -put /本地文件  /aaa

    hadoop fs -copyFromLocal /本地文件  /hdfs路径   ##  copyFromLocal等价于 put

    hadoop fs -moveFromLocal /本地文件  /hdfs路径  ## 跟copyFromLocal的区别是:从本地移动到hdfs中

    2、下载文件到客户端本地磁盘

    hadoop fs -get /hdfs中的路径   /本地磁盘目录

    hadoop fs -copyToLocal /hdfs中的路径 /本地磁盘路径   ## 跟get等价

    hadoop fs -moveToLocal /hdfs路径  /本地路径  ## 从hdfs中移动到本地

    3、在hdfs中创建文件夹

    hadoop fs -mkdir  -p /aaa/xxx

    4、移动hdfs中的文件(更名)

    hadoop fs -mv /hdfs的路径  /hdfs的另一个路径

    5、删除hdfs中的文件或文件夹

    hadoop fs -rm -r /aaa

    6、修改文件的权限

    hadoop fs -chown user:group /aaa

    hadoop fs -chmod 700 /aaa

    7、追加内容到已存在的文件

    hadoop fs -appendToFile /本地文件   /hdfs中的文件

    8、显示文本文件的内容

    hadoop fs -cat /hdfs中的文件

    hadoop fs -tail /hdfs中的文件

    补充:hdfs命令行客户端的所有命令列表

    Usage: hadoop fs [generic options]

            [-appendToFile <localsrc> ... <dst>]

            [-cat [-ignoreCrc] <src> ...]

            [-checksum <src> ...]

            [-chgrp [-R] GROUP PATH...]

            [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]

            [-chown [-R] [OWNER][:[GROUP]] PATH...]

            [-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]

            [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]

            [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...]

            [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]

            [-createSnapshot <snapshotDir> [<snapshotName>]]

            [-deleteSnapshot <snapshotDir> <snapshotName>]

            [-df [-h] [<path> ...]]

            [-du [-s] [-h] [-x] <path> ...]

            [-expunge]

            [-find <path> ... <expression> ...]

            [-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]

            [-getfacl [-R] <path>]

            [-getfattr [-R] {-n name | -d} [-e en] <path>]

            [-getmerge [-nl] [-skip-empty-file] <src> <localdst>]

            [-help [cmd ...]]

            [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]

            [-mkdir [-p] <path> ...]

            [-moveFromLocal <localsrc> ... <dst>]

            [-moveToLocal <src> <localdst>]

            [-mv <src> ... <dst>]

            [-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]

            [-renameSnapshot <snapshotDir> <oldName> <newName>]

            [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]

            [-rmdir [--ignore-fail-on-non-empty] <dir> ...]

            [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]

            [-setfattr {-n name [-v value] | -x name} <path>]

            [-setrep [-R] [-w] <rep> <path> ...]

            [-stat [format] <path> ...]

            [-tail [-f] <file>]

            [-test -[defsz] <path>]

            [-text [-ignoreCrc] <src> ...]

            [-touchz <path> ...]

            [-truncate [-w] <length> <path> ...]

            [-usage [cmd ...]]

    9、hdfs的java客户端编程

    HDFS客户端编程应用场景:数据采集

    在windows开发环境中做一些准备工作:

    1、在windows的某个路径中解压一份windows版本的hadoop安装包

    2、将解压出的hadoop目录配置到windows的环境变量中:HADOOP_HOME

    开发代码

    1、将hdfs客户端开发所需的jar导入工程(jar包可在hadoop安装包中找到common/hdfs)

    2、写代码

    要点:要对hdfs中的文件进行操作,代码中首先需要获得一个hdfs的客户端对象

    Configuration conf = new Configuration();

    FileSystem fs = FileSystem.get(new URI("hdfs://hdp-01:9000"),conf,"root");

    3、利用fs对象的方法进行文件操作

    比如:

    上传文件—— fs.copyFromLocalFile(new Path("本地路径"),new Path("hdfs的路径"));

    下载文件——fs.copyToLocalFile(new Path("hdfs的路径"),new Path("本地路径"))

    项目实战

    需求描述:

    在业务系统的服务器上,业务程序会不断生成业务日志(比如网站的页面访问日志)

    业务日志是用log4j生成的,会不断地切出日志文件

    需要定期(比如每小时)从业务服务器上的日志目录中,探测需要采集的日志文件(access.log不能采),发往HDFS

    注意点:业务服务器可能有多台(hdfs上的文件名不能直接用日志服务器上的文件名)

    当天采集到的日志要放在hdfs的当天目录中

    采集完成的日志文件,需要移动到到日志服务器的一个备份目录中

    定期检查(一小时检查一次)备份目录,将备份时长超出24小时的日志文件清除

    Timer timer = new Timer()

    timer.schedual()

  • 相关阅读:
    ASP.NET Core 企业级开发架构简介及框架汇总
    SQL Server中的联合主键、聚集索引、非聚集索引
    C#进阶系列——WebApi 异常处理解决方案
    C#进阶系列——WebApi 身份认证解决方案:Basic基础认证
    C#进阶系列——WebApi 接口参数不再困惑:传参详解
    实战 Windows Server 2012 群集共享卷
    SQL Server 表和索引存储结构
    SQL Server AlwaysOn架构及原理
    共轭分布
    反向传播BP为什么高效
  • 原文地址:https://www.cnblogs.com/liuyongpingblog/p/9840263.html
Copyright © 2020-2023  润新知