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()

最新文章

  1. 隐式的bean发现与自动装配机制
  2. Nginx - Windows下作为服务启动
  3. android中dx、dp、dip、sp单位的区别
  4. 安装PyMysql的基本步骤
  5. 35 个免费创新的响应式 HTML5 模板
  6. HTML5 Web SQL Database 与 Indexed Database 的 CRUD 操作
  7. NOI2004 郁闷的出纳员 Splay
  8. HDU 3874 Necklace
  9. 爬虫、请求库requests
  10. linux下 ls -l 命令显示结果每一列代表什么意思
  11. Hadoop集群搭建过程中ssh免密码登录(二)
  12. 几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi
  13. 获取WebApplicationContext的几种方式
  14. [.net core学习] .net core中的Rijndael取代方法
  15. NIO 多人聊天室
  16. 主机ping不通virtualbox虚拟机的解决办法
  17. 【kafka学习之二】Kafka集群搭建
  18. 【PAT】1024. Palindromic Number (25)
  19. myEclipse项目转成Eclipse项目
  20. Cardinality Estimation算法学习(二)(Linear Counting算法、最大似然估计(MLE))

热门文章

  1. 【译】x86程序员手册35-9.8异常条件
  2. flask中模板日期格式控制和jinja2中模板格式控制
  3. 工具:docs网页笔记
  4. shell learning note
  5. 零基础入门学习Python(11)--列表:一个打了激素的数组(2)
  6. buf.slice()
  7. assert.throws()函数详解
  8. ubuntu 16.4 安装mysql-python
  9. python 通过句柄获取窗口内容
  10. 【04】 CSS开发注意事项