进入hadoop目录
cd /usr/local/hadoop
然后启动hadoop服务
./sbin/start-all.sh
进入集群根目录
hadoop dfs -ls /
创建两个文本文件
echo "hello world" >> test_local.txt echo "hello hadoop" >> test_put.txt
创建用户工作目录
hadoop fs -mkdir -p /user/hadoop echo $? //检查上一条指令的执行状态,若为0则代表执行成功并退出,若为1则代表执行失败
上传文件到HDFS系统
hadoop fs -put test_put.txt //将test_put文件上传到集群中
向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件先移动到hadoop文件夹
追加到原有文件末尾
hadoop fs -appendToFile test_local.txt test_put.txt //将test_local.txt的内容追加到test_put.txt文件里去
将本地文件拷贝至HDFS系统
hadoop fs -copyFromLocal local.txt test.txt //只能将本地文件内容拷贝至集群中的test.txt(文件不可以存在,没有会自动创建) hadoop fs -copyFromLocal local.txt //将本地文件local.txt的内容拷贝至集群中,若有相同文件名则拷贝失败
强制覆盖文件
hadoop fs -put -f local.txt(本地的文件) local.txt(HDFS的文件)
查看集群中文件内容
hadoop fs -cat test_put.txt
从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名
若本地文件中没有local.txt文件可以直接拷贝
hadoop fs -get local.txt hadoop fs -copyToLocal local.txt
若本地文件中存在local.txt需要创建local_1.txt文件
hadoop fs -copyToLocal local.txt local_1.txt
将HDFS中指定文件的内容输出到终端中
hadoop fs -cat local.txt
显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息
hadoop fs -ls local.txt
给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息
hadoop fs -ls -R -h . //查看当前目录下的文件
提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录
hadoop fs -rm ./put.txt hadoop fs -mkdir ./test hadoop fs -mkdir ./test/test.txt
提供一个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录文件所在目录不存在则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录
hadoop fs -mkdir -p /test_2/test_3 //递归创建文件夹 hadoop fs -rm /test_2 //删除文件夹 hadoop fs -rm -r /test_2/test_3 //递归删文件夹
向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾
hadoop fs -appendToFile append.txt /test1.txt //向结尾追加 //向开头追加 hadoop fs -get /test1.txt cat test1.txt >> append.txt hadoop fs -put -f append.txt /test1.txt
删除HDFS中指定的文件
hadoop fs -rm /test1.txt
删除HDFS中指定的目录,由用户指定目录中如果存在文件时是否删除目录
hdfs dfs -mkdir -p /dir
在HDFS中,将文件从源路径移动到目的路径
hadoop fs -mv /test1.txt /test2.txt
编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本
package hadoop.apache.prg.example;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
public class MyFSDataInputStream {
private FileSystem fileSystem = null;
//配置文件
private Configuration configuration = null;
//虚拟机的HDFS的访问URI
private static final String HDFS_URI = "hdfs://localhost:9000";
public static void main(String args[]){
MyFSDataInputStream ms = new MyFSDataInputStream();
try{
ms.setUp();
ms.cat_test();
ms.clearTail();
}catch(Exception e){
System.out.println(e.toString());
}
}
//编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,
//要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。
public void cat_test() throws Exception {
FSDataInputStream fin = fileSystem.open(new Path("/hdfs_test/hello.txt"));
//此路径为集群上的路径,不是本地路径
BufferedReader in = new BufferedReader(new InputStreamReader(fin, "UTF-8"));
String s = in.readLine();
while(s!=null)//如果当前行不为空
{
System.out.println(s);//打印当前行
s= in.readLine();//读取下一行
}
in.close();
}
//开始前操作--初始化资源
public void setUp() throws Exception {
System.out.println("=====================start========================");
configuration = new Configuration();
fileSystem = FileSystem.get(new URI(HDFS_URI), configuration, "hadoop");
}
//结束后操作--释放资源
public void clearTail() throws Exception {
configuration = null;
fileSystem = null;
System.out.println("=====================end========================");
}
}
查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中
package hadoop.apache.prg.example;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.fs.Path;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
public class ShowTheContent {
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void cat(String remoteFilePath) {
try (InputStream in = new URL("hdfs", "localhost", 9000, remoteFilePath).openStream()) {
IOUtils.copyBytes(in, System.out, 4096, false);
IOUtils.closeStream(in);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String remoteFilePath = "/hdfs_test/hello.txt"; // HDFS路径
try {
System.out.println("读取文件: " + remoteFilePath);
ShowTheContent.cat(remoteFilePath);
System.out.println("n读取完成");
} catch (Exception e) {
e.printStackTrace();
}
}
}



