大数据技术原理与应用—实验2—熟悉常用的HDFS操作

暂写shell命令版本,编程操作下周更新

实验2-熟悉常用HDFS操作

启动Hadoop

cd /usr/local/hadoop/
./sbin/start-all.sh

题目1-9

(1) 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件;
使用如下命令创建一个input目录:

cd /usr/local/hadoop
./bin/hdfs dfs –mkdir input

在创建个input目录时,采用了相对路径形式,实际上,这个input目录创建成功以后,它在HDFS中的完整路径是“/user/hadoop/input”。
使用vim编辑器,在本地Linux文件系统的“/home/hadoop/”目录下创建一个文件test.txt,

cd /home/hadoop/
sudo vim test.txt

输入如下:

this is a test
在这里插入图片描述

vim编辑器按i进入编辑,按esc退出编辑

:wq #正常保存文件
:q #正常退出(文件未被改动)
:q! #强制退出 

使用cat查看文件编辑情况

cat /home/hadoop/test.txt

在这里插入图片描述
然后,可以使用如下命令把本地文件系统的“/home/hadoop/test.txt”上传到HDFS中的当前用户目录的input目录下,也就是上传到HDFS的“/user/hadoop/input/”目录下:

cd /usr/local/hadoop
./bin/hdfs dfs -put /home/input/test.txt  input

追加到文件末尾的指令

hadoop fs -appendToFile local.txt /input/test.txt

可以使用ls命令查看一下文件是否成功上传到HDFS中,具体如下:

./bin/hdfs dfs –ls input
./bin/hdfs dfs -cat input/test.txt#使用cat查看

该命令执行后会显示类似如下的信息:
在这里插入图片描述

(2)从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;
在home下创建test文件夹

cd /home/
sudo mkdir test
./bin/hdfs dfs -get input/test.txt /home/test

if $(hdfs dfs -test -e file:///home/hadoop/test.txt);
then $(hdfs dfs -copyToLocal test.txt ./test2.txt);
else $(hdfs dfs -copyToLocal test.txt ./test.txt);
fi

每个if语句都要用fi结束,而且是每一个if都要对应一个fi。整个if语句用fi闭合起来才算完整

(3)将HDFS中指定文件的内容输出到终端中;

hdfs dfs -cat /input/test.txt

(4)显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;

hdfs dfs -ls -h /input/test.txt

(5) 给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息;

cd /usr/local/hadoop
$./bin/hdfs dfs -ls -R -h /usr/hadoop

(6)提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。
如果文件所在目录不存在,则自动创建目录;

 #!/bin/bash
if $(hadoop fs -test -d /Test/test1);
then $(hadoop fs -touchz /Test/test1/text1.txt);
else $(hadoop fs -mkdir -p /Test/test1 && hdfs dfs -touchz /Test/test1/text1.txt);
fi

(7) 提供一个HDFS的目录的路径,对该目录进行创建和删除操作。
创建目录时,如果目录文件所在目录不存在则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录;

 hadoop fs -rmr /usr/local/hadoop/input

(8) 删除HDFS中指定的文件;

hdfs dfs -appendToFile local.txt test.txt

(9)在HDFS中,将文件从源路径移动到目的路径。

hdfs dfs -rm text.txt

(10)在HDFS中将文件从原路径移动到目的路径

hdfs dfs -mv text.txt text2.txt

遇到的问题

1.第二题运行shell命令后报错"JAVA_HOME is not set and could not be found"

Error: JAVA_HOME is not set and could not be found

Java环境变量配置出现问题,通过java-version搜索出java的路径,重新修改bashrc文件内的路径

source ~/.bashrc

将第一句export JAVA_HOME=/usr/lib/jvm/后改成最新路径

2.hadoop:未找到命令解决办法
sudo进入profile文件

sudo vim /etc/profile

将以下三条加到profile文件的最后

export JAVA_HOME=/usr/lib/jvm/(jdk版本)
export HADOOP_HOME=usr/local/hadoop(自己的hadoop安装路径)
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

在这里插入图片描述
esc退出编辑,:wq保存文件
输入下边命令更新环境变量

source /etc/profile
发布了8 篇原创文章 · 获赞 12 · 访问量 1600

猜你喜欢

转载自blog.csdn.net/DZFinder/article/details/104860335
今日推荐