随记
熟悉常用的Linux操作和Hadoop操作
1.实验目的
Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。
2.实验平台
(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);
(2)Hadoop版本:3.1.3。
3.实验步骤
1.熟悉常用的Linux操作
1)cd命令:切换目录
(1) 切换到目录“/usr/local”
(2) 切换到当前目录的上一级目录
(3) 切换到当前登录Linux系统的用户的自己的主文件夹
2)ls命令:查看文件与目录
查看目录“/usr”下的所有文件和目录
3)mkdir命令:新建目录
(1)进入“/tmp”目录,创建一个名为“a”的目录,并查看“/tmp”目录下已经存在哪些目录
(2)进入“/tmp”目录,创建目录“a1/a2/a3/a4”
4)rmdir命令:删除空的目录
(1)将上面创建的目录a(在“/tmp”目录下面)删除
(2)删除上面创建的目录“a1/a2/a3/a4” (在“/tmp”目录下面),然后查看“/tmp”目录下面存在哪些目录
5)cp命令:复制文件或目录
(1)将当前用户的主文件夹下的文件.bashrc复制到目录“/usr”下,并重命名为bashrc1
(2)在目录“/tmp”下新建目录test,再把这个目录复制到“/usr”目录下
6)mv命令:移动文件与目录,或更名
(1)将“/usr”目录下的文件bashrc1移动到“/usr/test”目录下
(2)将“/usr”目录下的test目录重命名为test2
7)rm命令:移除文件或目录
(1)将“/usr/test2”目录下的bashrc1文件删除
(2)将“/usr”目录下的test2目录删除
8)cat命令:查看文件内容
查看当前用户主文件夹下的.bashrc文件内容
9)tac命令:反向查看文件内容
反向查看当前用户主文件夹下的.bashrc文件的内容
10)more命令:一页一页翻动查看
翻页查看当前用户主文件夹下的.bashrc文件的内容
11)head命令:取出前面几行
(1)查看当前用户主文件夹下.bashrc文件内容前20行
(2)查看当前用户主文件夹下.bashrc文件内容,后面50行不显示,只显示前面几行
12)tail命令:取出后面几行
(1)查看当前用户主文件夹下.bashrc文件内容最后20行
(2)查看当前用户主文件夹下.bashrc文件内容,并且只列出50行以后的数据
13)touch命令:修改文件时间或创建新文件
(1)在“/tmp”目录下创建一个空文件hello,并查看文件时间
(2)修改hello文件,将文件时间整为5天前
14)chown命令:修改文件所有者权限
将hello文件所有者改为root帐号,并查看属性
15)find命令:文件查找
找出主文件夹下文件名为.bashrc的文件
16)tar命令:压缩命令
(1)在根目录“/”下新建文件夹test,然后在根目录“/”下打包成test.tar.gz
(2)把上面的test.tar.gz压缩包,解压缩到“/tmp”目录
17)grep命令:查找字符串
从“~/.bashrc”文件中查找字符串'examples'
18)配置环境变量
(1)
请在“~/.bashrc”中设置,配置Java环境变量
(2)查看JAVA_HOME变量的值
2.熟悉常用的Hadoop操作
(1)使用hadoop用户登录Linux系统,启动Hadoop(Hadoop的安装目录为“/usr/local/hadoop”),为hadoop用户在HDFS中创建用户目录“/user/hadoop”
(2) 接着在HDFS的目录“/user/hadoop”下,创建test文件夹,并查看文件列表
(3)将Linux系统本地的“~/.bashrc”文件上传到HDFS的test文件夹中,并查看test
(4)将HDFS文件夹test复制到Linux系统本地文件系统的“/usr/local/hadoop”目录下
4.实验报告
题目: 熟悉常用的Linux操作和Hadoop操作
姓名 杨家兴 日期12.15
实验环境:ubuntu
Hadoop3.3.6
实验内容与完成情况:1.熟悉常用的Linux操作
1)cd命令:切换目录
(4) 切换到目录“/usr/local”
(5) 切换到当前目录的上一级目录
(6) 切换到当前登录Linux系统的用户的自己的主文件夹
2)ls命令:查看文件与目录
查看目录“/usr”下的所有文件和目录
3)mkdir命令:新建目录
(1)进入“/tmp”目录,创建一个名为“a”的目录,并查看“/tmp”目录下已经存在哪些目录
(2)进入“/tmp”目录,创建目录“a1/a2/a3/a4”
4)rmdir命令:删除空的目录
(1)将上面创建的目录a(在“/tmp”目录下面)删除
(2)删除上面创建的目录“a1/a2/a3/a4” (在“/tmp”目录下面),然后查看“/tmp”目录下面存在哪些目录
5)cp命令:复制文件或目录
(1)将当前用户的主文件夹下的文件.bashrc复制到目录“/usr”下,并重命名为bashrc1
(2)在目录“/tmp”下新建目录test,再把这个目录复制到“/usr”目录下
6)mv命令:移动文件与目录,或更名
(1)将“/usr”目录下的文件bashrc1移动到“/usr/test”目录下
(2)将“/usr”目录下的test目录重命名为test2
7)rm命令:移除文件或目录
(1)将“/usr/test2”目录下的bashrc1文件删除
(2)将“/usr”目录下的test2目录删除
8)cat命令:查看文件内容
查看当前用户主文件夹下的.bashrc文件内容
9)tac命令:反向查看文件内容
反向查看当前用户主文件夹下的.bashrc文件的内容
10)more命令:一页一页翻动查看
翻页查看当前用户主文件夹下的.bashrc文件的内容
11)head命令:取出前面几行
(1)查看当前用户主文件夹下.bashrc文件内容前20行
(2)查看当前用户主文件夹下.bashrc文件内容,后面50行不显示,只显示前面几行
12)tail命令:取出后面几行
(1)查看当前用户主文件夹下.bashrc文件内容最后20行
(2)查看当前用户主文件夹下.bashrc文件内容,并且只列出50行以后的数据
13)touch命令:修改文件时间或创建新文件
(1)在“/tmp”目录下创建一个空文件hello,并查看文件时间
(2)修改hello文件,将文件时间整为5天前
14)chown命令:修改文件所有者权限
将hello文件所有者改为root帐号,并查看属性
15)find命令:文件查找
找出主文件夹下文件名为.bashrc的文件
16)tar命令:压缩命令
(1)在根目录“/”下新建文件夹test,然后在根目录“/”下打包成test.tar.gz
(2)把上面的test.tar.gz压缩包,解压缩到“/tmp”目录
17)grep命令:查找字符串
从“~/.bashrc”文件中查找字符串'examples'
18)配置环境变量
(1)
请在“~/.bashrc”中设置,配置Java环境变量
(2)查看JAVA_HOME变量的值
2.熟悉常用的Hadoop操作
(1)使用hadoop用户登录Linux系统,启动Hadoop(Hadoop的安装目录为“/usr/local/hadoop”),为hadoop用户在HDFS中创建用户目录“/user/hadoop”
(3) 接着在HDFS的目录“/user/hadoop”下,创建test文件夹,并查看文件列表
(3)将Linux系统本地的“~/.bashrc”文件上传到HDFS的test文件夹中,并查看test
(4)将HDFS文件夹test复制到Linux系统本地文件系统的“/usr/local/hadoop”目录下
出现的问题:
- 权限不足:执行某些命令(如chown、在系统目录创建文件)需要sudo权限
- 环境变量配置错误:Java环境变量设置不正确,导致Hadoop无法启动
- HDFS用户目录不存在:未创建Hadoop用户目录导致HDFS操作失败
- 命令参数不熟悉:对Linux命令选项理解不准确
- Hadoop服务未启动:直接执行HDFS命令但Hadoop未启动
解决方案(列出遇到的问题和解决办法,列出没有解决的问题): - 使用sudo执行需要权限的命令,或切换到root用户
- 检查JAVA_HOME设置:echo $JAVA_HOME,确保路径正确
- 确保HDFS中创建了用户目录:hdfs dfs -mkdir -p /user/hadoop
- 使用man 命令名或命令名 --help查看命令帮助
- 先启动Hadoop:cd /usr/local/hadoop; sbin/start-dfs.sh
实验2
熟悉常用的HDFS操作
1.实验目的
(1)理解HDFS在Hadoop体系结构中的角色;
(2)熟练使用HDFS操作常用的Shell命令;
(3)熟悉HDFS操作常用的Java API。
2. 实验平台
(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);
(2)Hadoop版本:3.1.3;
(3)JDK版本:1.8;
(4)Java IDE:Eclipse。
3. 实验步骤
(一)编程实现以下功能,并利用Hadoop提供的Shell命令完成相同任务:
(1) 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件;
(2) 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;
(3) 将HDFS中指定文件的内容输出到终端中;
(4) 显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;
(5) 给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息;
(6) 提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录;
(7) 提供一个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录文件所在目录不存在,则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录;
(8) 向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾;
(9) 删除HDFS中指定的文件;
(10) 在HDFS中,将文件从源路径移动到目的路径。
(二)编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。
(三)查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。
4.实验报告
题目: 熟悉常用的HDFS操作
姓名 杨家兴 日期12.16
实验环境:hadoop3.3.6
实验内容与完成情况:(一)编程实现以下功能,并利用Hadoop提供的Shell命令完成相同任务:
(11) 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件;
(12) 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;
(13) 将HDFS中指定文件的内容输出到终端中;
(14) 显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;
(15) 给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息;
(16) 提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录;
(17) 提供一个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录文件所在目录不存在,则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录;
(18) 向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾;
(19) 删除HDFS中指定的文件;
(20) 在HDFS中,将文件从源路径移动到目的路径。
(二)编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。
(三)查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。
出现的问题:
- Java API连接失败:Hadoop服务未运行或配置错误
- 文件覆盖与追加逻辑错误:HDFS早期版本不支持追加操作
- 递归目录操作异常:未正确处理目录递归逻辑
- Shell命令与API结果不一致:路径格式或参数不同
- ClassNotFound异常:缺少Hadoop相关jar包
解决方案(列出遇到的问题和解决办法,列出没有解决的问题): - 检查Hadoop服务状态,确保NameNode和DataNode正常运行
- 使用Hadoop 3.x支持文件追加,配置dfs.support.append=true
- 使用listStatus递归遍历目录时注意判断文件类型
- Shell使用hdfs://前缀,API中可能需要完整URI
- 在Eclipse中添加Hadoop安装目录下的所有jar包到classpath

浙公网安备 33010602011771号