HDFS中的shell


Shell:提供给使用者使用界面的进行与系统交互的软件,通过接收用户输入的命令执行相应的操作
shell分为:

  • 图形界面Shell
  • 命令行式Shell
Shell中的命令
  • -ls:查看指定路径的目录结构
  • -du:统计目录下所有文件的大小
  • -mv:移动文件
  • -cp:复制文件
  • -rm:删除文件/空白文件夹
  • -cat:查看文件内容
  • -text:源文件输出为文本格式
  • -mkdir:创建空白文件夹
  • -put:上传文件
  • -help:查看命令帮助
案例:Shell定时采集数据到HDFS中

步骤:

  • 配置环境变量:shell脚本中设置java环境变量和hadoop环境变量
    (这样做的目的是提高系统的可靠性,保障运行程序的机器在没有配置环境变量的情况下依然能够运行脚本)
  • 准备日志存放目录和待上传文件:shell脚本中设置一个日志存放目录和待上传文件目录
  • 设置日志文件长传的路径
  • 实现文件上传:将文件首先移动到待上传目录,再从待上传目录上传到HDFS(使用Linux Crontab表达式执行定时任务 * * * * * 分 时 日 月 周)
  • 执行程序展示运行结果
一、搭建项目环境(新建Maven项目)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出现下面报错,是因为没有安装Maven(也可以先点ok,不用在意)
在这里插入图片描述
在这里插入图片描述

安装Maven

点击下载Maven
在这里插入图片描述
下载后解压到文件夹中,配置环境变量
在这里插入图片描述
添加到Path
在这里插入图片描述
配置完成后,打开cmd,查看版本信息
在这里插入图片描述
在maven安装目录下,新建一个目录
在这里插入图片描述
setting文件中修改仓库路径
在这里插入图片描述
打开eclipse
在这里插入图片描述
在这里插入图片描述
配置后重启eclipse,就好啦
在这里插入图片描述

连接hadoop集群的节点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新建完maven项目,可能会报错,不用紧张。
配置pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.itcast</groupId>
  <artifactId>HadoopDemo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <dependencies>
  	<dependency>
  		<groupId>org.apache.hadoop</groupId>
  		<artifactId>hadoop-common</artifactId>
  		<version>2.7.4</version>
  	</dependency>
  	<dependency>
  		<groupId>org.apache.hadoop</groupId>
  		<artifactId>hadoop-hdfs</artifactId>
  		<version>2.7.4</version>
  	</dependency>
  	<dependency>
  		<groupId>org.apache.hadoop</groupId>
  		<artifactId>hadoop-client</artifactId>
  		<version>2.7.4</version>
  	</dependency>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>RELEASE</version>
  	</dependency>
  	        <dependency>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
            <version>1.8</version>
            <scope>system</scope>
            <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
        </dependency>
  </dependencies>
  
</project>

配置完成后,就会自动加载需要的jar包,就不会报错了

二、准备日志存放目录和待上传文件
三、设置日志文件上传的路径
四、实现文件上传
五、执行程序展示运行结果
### HDFS Shell命令列表及使用方法 #### 1. **基本文件管理** - **`ls`**: 列出指定目录下的文件和子目录 使用方式:`hdfs dfs -ls <path>` 示例:`hdfs dfs -ls /user/hadoop`[^1] - **`mkdir`**: 创建新目录 使用方式:`hdfs dfs -mkdir <path>` 支持递归创建:`hdfs dfs -mkdir -p /user/hadoop/newdir/subdir`[^3] - **`touchz`**: 创建一个零字节的文件 使用方式:`hdfs dfs -touchz <path>` 示例:`hdfs dfs -touchz /user/hadoop/testfile.txt` - **`rm` 和 `rmr`**: 删除文件或目录 单个文件删除:`hdfs dfs -rm <path>` 递归删除目录:`hdfs dfs -rm -r <directory-path>`[^3] --- #### 2. **数据传输** - **`put` 和 `copyFromLocal`**: 将本地文件上传至HDFS 使用方式:`hdfs dfs -put <local-src> <destination>` 或 `hdfs dfs -copyFromLocal <local-src> <destination>` 示例:`hdfs dfs -put /home/user/file.txt /user/hadoop/remote-file.txt`[^4] - **`get` 和 `copyToLocal`**: 从HDFS下载文件到本地 使用方式:`hdfs dfs -get <src> <local-dest>` 或 `hdfs dfs -copyToLocal <src> <local-dest>` 示例:`hdfs dfs -get /user/hadoop/remote-file.txt /home/user/local-file.txt` - **`moveFromLocal` 和 `moveToLocal`**: 数据迁移而不保留原副本 移动本地文件到HDFS:`hdfs dfs -moveFromLocal <localsrc> <dst>` 移动HDFS文件到本地:`hdfs dfs -moveToLocal <src> <localdst>`[^4] --- #### 3. **文件内容操作** - **`cat`, `tail`, `text`**: 查看文件内容 显示文件内容:`hdfs dfs -cat <path>` 显示最后几行:`hdfs dfs -tail <path>` 对于压缩文件,推荐使用:`hdfs dfs -text <compressed-file>`[^3] - **`getmerge`**: 合并多个文件为单个文件并下载到本地 使用方式:`hdfs dfs -getmerge <source-path> <local-dest>` 示例:`hdfs dfs -getmerge /user/hadoop/logs /home/user/all_logs.txt`[^4] --- #### 4. **权限与属性修改** - **`chown` 和 `chgrp`**: 修改文件所有权或所属组 修改所有者:`hdfs dfs -chown [username[:groupname]] <path>` 修改组名:`hdfs dfs -chgrp groupname <path>`[^4] - **`chmod`**: 修改文件权限 使用方式:`hdfs dfs -chmod [-R] mode path` 示例:`hdfs dfs -chmod 755 /user/hadoop/example.txt` --- #### 5. **统计与状态查询** - **`du` 和 `count`**: 统计文件大小或数量 显示目录中所有文件总大小:`hdfs dfs -du -s <path>` 计算文件数、目录数以及空间占用量:`hdfs dfs -count <path>` - **`df`**: 查询磁盘使用情况 使用方式:`hdfs dfs -df [-h] <path>` 示例:`hdfs dfs -df -h /`[^4] - **`stat`**: 获取文件或目录的状态信息 使用方式:`hdfs dfs -stat [format] <path>` 示例:`hdfs dfs -stat "%b %n" /user/hadoop/example.txt` --- #### 6. **高级管理** - **`fsck`**: 检查HDFS健康状况 使用方式:`hdfs fsck <path> [-blocks|-locations|-files]` 示例:`hdfs fsck / -files -blocks -locations` - **`setrep`**: 设置文件的复制因子 使用方式:`hdfs dfs -setrep [-w] replication-factor <path>` 示例:`hdfs dfs -setrep -w 3 /user/hadoop/example.txt`[^4] - **`appendToFile`**: 追加数据到现有文件 使用方式:`hdfs dfs -appendToFile local_file_path remote_hdfs_path`[^4] --- #### 7. **MapReduce集成** - 执行WordCount作业: 使用方式:`hadoop jar hadoop-mapreduce-examples.jar wordcount inputpath outputpath` 示例:`hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input/path /output/path`[^5] --- ### 示例代码 以下是几个常见命令的实际应用: ```bash # 创建目录 hdfs dfs -mkdir -p /user/hadoop/data/input # 上传文件 hdfs dfs -put /home/user/localdata.csv /user/hadoop/data/input/ # 查看文件内容 hdfs dfs -cat /user/hadoop/data/input/localdata.csv # 下载文件到本地 hdfs dfs -get /user/hadoop/data/output/result.txt /home/user/ ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值