暂写shell命令版本,编程操作下周更新
启动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