【分布式文件系统HDFS】文件操作基本命令的使用

目录

一、按照下述要求写出相应的文件操作命令,执行并观察结果

1. 新建目录

 1.1 在本地文件系统按要求创建如下的文件夹

1.2 在HDFS文件系统按要求创建如下的文件夹

2. 编辑文件test1.txt,放入本地文件夹 /opt/user/myfile

3. 使用moveFromLocal命令将本地文件test1.txt复制到HDFS文件系统的/temp/myfile/txt文件夹下。

4. 查看文件内容,查看HDFS文件系统上test1.txt的文件内容,仅显示文件的前两行。

5. 修改HDFS文件系统上test1.txt的权限,将其修改为用户可读可写,本组用户可读可写,其他用户只可读。

6. 将HDFS文件系统上test1.txt文件拷贝至HDFS文件系统的根目录下

7. 将根目录下的test1.txt移动至“/user/账户名” 下

8. 将“/user/账户名”下的test1.txt文件从HDFS文件系统拷贝至本地文件系统的“/home/账户名/Desktop”文件夹下。

9. 将HDFS文件系统上的/temp文件夹删除。

10. 将sogou_500w_utf数据上传至HDFS文件系统,并在HDFS系统上查看文件内容的后10行。

二、在虚拟机安装eclipse,并完成HDFS API示例程序的编辑运行。

1. 使用SSH SHELL CLIENT将eclipse安装包上传至虚拟机hadoop01,如下图所示。

2. 在CentOS中安装eclipse,安装包为压缩文件直接输入tar命令解压缩即可完成安装。

3. 完成安装以后将安装目录重命名为eclipse。

4.启动eclipse,完成示例程序的编辑和运行,并检查运行结果。

4.1 在eclipse新建Java Project,输入项目名,完成项目创建。

4.2 在项目中新建一个package,包名请自定义。

4.3 添加依赖库,将hadoop安装文件夹下的以下子目录文件夹中的jar包加进来

5. 在项目内新建类,类名自定义,并输入以下参考代码(注意修改类名),以下代码的功能是完成从本地文件系统上传一个文件到HDFS文件系统。

6. 运行上述程序,检验文件是否正确上传。通过在本地目录和HDFS文件系统查看检验。

三、总结

1. 遇到的问题

2. 解决办法


一、按照下述要求写出相应的文件操作命令,执行并观察结果

启动HDFS文件系统,并按要求完成以下操作。

1. 新建目录

 1.1 在本地文件系统按要求创建如下的文件夹

sudo mkdir -p user/myfile

ls

1.2 在HDFS文件系统按要求创建如下的文件夹

hdfs dfs -mkdir -p /temp/myfile/txt

hdfs dfs -ls /

2. 编辑文件test1.txt,放入本地文件夹 /opt/user/myfile

文件内容如下:

The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.

The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.

3. 使用moveFromLocal命令将本地文件test1.txt复制到HDFS文件系统的/temp/myfile/txt文件夹下。

hdfs dfs -moveFromLocal /opt/user/myfile/test1.txt /temp/myfile/txt

4. 查看文件内容,查看HDFS文件系统上test1.txt的文件内容,仅显示文件的前两行。

hdfs dfs -cat /temp/myfile/txt/test1.txt | head -2

5. 修改HDFS文件系统上test1.txt的权限,将其修改为用户可读可写,本组用户可读可写,其他用户只可读。

hadoop fs -chmod 764 /temp/myfile/txt/test1.txt

6. 将HDFS文件系统上test1.txt文件拷贝至HDFS文件系统的根目录下

hdfs dfs -cp /temp/myfile/txt/test1.txt /

hdfs dfs -ls /

7. 将根目录下的test1.txt移动至“/user/账户名” 下

hdfs dfs -mv /test1.txt /user/2130502441ryx/

8. 将“/user/账户名”下的test1.txt文件从HDFS文件系统拷贝至本地文件系统的“/home/账户名/Desktop”文件夹下。

hdfs dfs -get /user/2130502441ryx/test1.txt /home/2130502441ryx/Desktop/

9. 将HDFS文件系统上的/temp文件夹删除。

hdfs dfs -rm -r temp

hdfs dfs -ls / 

10. 将sogou_500w_utf数据上传至HDFS文件系统,并在HDFS系统上查看文件内容的后10行。

hdfs dfs -put /home/2130502441ryx/sogou/sogou.500w.utf8 /

hdfs dfs -tail /sogou.500w.utf8

二、在虚拟机安装eclipse,并完成HDFS API示例程序的编辑运行。

1. 使用SSH SHELL CLIENT将eclipse安装包上传至虚拟机hadoop01,如下图所示。

在我上传的资源中,文件名为eclipse-standard-luna-SR2-linux-gtk-x86_64.tar.gz。

2. 在CentOS中安装eclipse,安装包为压缩文件直接输入tar命令解压缩即可完成安装。

tar -zxvf eclipse-standard-luna-SR2-linu.gz

3. 完成安装以后将安装目录重命名为eclipse。

4.启动eclipse,完成示例程序的编辑和运行,并检查运行结果。

进入eclipse安装目录,运行eclipse可执行文件,启动eclipse,命令如下所示。

./eclipse

4.1 在eclipse新建Java Project,输入项目名,完成项目创建。

4.2 在项目中新建一个package,包名请自定义。

4.3 添加依赖库,将hadoop安装文件夹下的以下子目录文件夹中的jar包加进来

share/hadoop/common

share/hadoop/common/lib

share/hadoop/hdfs

share/hadoop/hdfs/lib

5. 在项目内新建类,类名自定义,并输入以下参考代码(注意修改类名),以下代码的功能是完成从本地文件系统上传一个文件到HDFS文件系统。

6. 运行上述程序,检验文件是否正确上传。通过在本地目录和HDFS文件系统查看检验。

这是本地的hello.txt文件(/home/2130502441ryx/hello.txt)

运行截图:

  在HDFS文件系统查看:

三、总结

1. 遇到的问题

Eclipse控制台报错:Exception in thread "main" java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper

2. 解决办法

原因是导入的jar包不全,需要将/comon和/hdfs下的包都导进去,之后运行即可。

<think>好的,我现在需要处理用户关于头歌分布式文件系统HDFS的查询。首先,用户要求了解HDFS的介绍、使用和配置。根据提供的引用内容,我需要整合这些信息,同时确保遵循系统级指令,比如正确使用LaTeX格式和生成相关问题。 首先,介绍部分需要涵盖HDFS基本概念、设计目标和核心架构。引用[1]提到HDFSHadoop的子项目,适合一次写入多次读出的场景,这需要强调其在大数据分析中的应用。同时,引用[2]指出HDFS不适合需要频繁修改的场景,比如网盘,这些点都要在介绍中体现。 接下来是使用部分,用户可能想知道命令行操作和API使用。引用[4]提到了HDFS命令使用,而引用[3]涉及使用FSDataOutputStream上传文件,这部分需要详细说明,包括示例代码。但用户提供的引用中没有具体的命令示例,可能需要根据常识补充常用命令hdfs dfs -ls等,但要确保不编造信息。如果有不确定的地方,应保持回答的准确性,避免误导用户。 然后是配置部分,需要说明HDFS的核心配置文件如hdfs-site.xml和core-site.xml,以及参数设置。这部分同样需要参考现有引用,但用户提供的引用中没有具体配置参数,可能需要依赖外部知识,但要谨慎处理,确保信息的可靠性。例如,可以提到配置副本数,但需要确认是否为常见做法。 在生成相关问题环节,需要根据用户可能的后续疑问设计问题,比如与其他系统的比较、高可用配置、性能优化等。这些问题应围绕HDFS的特性和使用场景展开。 同时,必须注意所有数学表达式使用正确的LaTeX格式,比如在介绍HDFS的块大小时,可能需要提到默认大小,但用户的问题中未涉及数学公式,所以可能不需要使用。但如果有提及数据分块或副本策略中的数值,需要按照格式处理。 最后,检查回答是否符合中文要求,结构是否清晰,是否有自然添加引用标识。确保每个引用来源正确对应,比如引用[1]和[2]关于HDFS的设计和应用场景,引用[3]关于文件上传的方法。 总结步骤: 1. 整合引用中的HDFS介绍,强调其设计目标和适用场景。 2. 描述命令行和API的使用方法,补充常见命令示例(在允许的范围内)。 3. 说明配置文件的调整和关键参数,基于已知信息。 4. 生成相关问题,覆盖比较、配置、优化和应用场景。 5. 确保无数学公式需要处理,但若有数值出现,正确使用LaTeX。 6. 检查引用标识的位置和正确性,避免错误引用。</think>### 头歌分布式文件系统HDFS介绍 HDFSHadoop Distributed File System)是Apache Hadoop项目的核心子系统,专为大规模数据存储与高吞吐量访问设计[^1]。其核心特点包括: 1. **高容错性**:通过数据块多副本机制(默认3副本)保障数据可靠性。 2. **横向扩展性**:支持PB级数据存储,可通过增加节点扩展容量。 3. **流式数据访问**:适应“一次写入、多次读取”模式,适合批处理场景[^2]。 核心架构包含: - **NameNode**:管理文件系统元数据(命名空间、块映射) - **DataNode**:存储实际数据块 - **Secondary NameNode**:协助元数据备份(非热备) ### HDFS使用指南 #### 1. 命令行操作 通过`hdfs dfs`命令进行文件管理: ```bash # 查看目录内容 hdfs dfs -ls /user/tmp # 上传本地文件到HDFS hdfs dfs -put local_file.txt /user/tmp/ # 下载HDFS文件到本地 hdfs dfs -get /user/tmp/hdfs_file.txt . ``` #### 2. API开发示例(Java) 使用`FileSystem`类操作HDFS: ```java Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); // 创建目录 fs.mkdirs(new Path("/user/tmp/new_dir")); // 写入文件 try (FSDataOutputStream out = fs.create(new Path("/user/tmp/data.log"))) { out.write("data content".getBytes()); } // 读取文件 try (FSDataInputStream in = fs.open(new Path("/user/tmp/data.log"))) { IOUtils.copyBytes(in, System.out, 4096, false); } ``` ### HDFS配置要点 配置文件位于`$HADOOP_HOME/etc/hadoop`目录: 1. **hdfs-site.xml**(核心参数): ```xml <property> <name>dfs.replication</name> <value>3</value> <!-- 设置副本数量 --> </property> <property> <name>dfs.blocksize</name> <value>134217728</value> <!-- 128MB块大小 --> </property> ``` 2. **core-site.xml**(全局配置): ```xml <property> <name>fs.defaultFS</name> <value>hdfs://namenode:9000</value> <!-- NameNode地址 --> </property> ``` 3. **负载均衡配置**: ```bash hdfs balancer -threshold 10 # 启动数据均衡任务 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值