命令基本格式:
hadoop fs -cmd < args >
- ls
hadoop fs -ls /
列出hdfs文件系统根目录下的目录和文件
hadoop fs -ls -R /
列出hdfs文件系统所有的目录和文件
- put
hadoop fs -put < local file > < hdfs file >
hdfs file的父目录一定要存在,否则命令不会执行
hadoop fs -put < local file or dir >...< hdfs dir >
hdfs dir 一定要存在,否则命令不会执行
hadoop fs -put - < hdsf file>
从键盘读取输入到hdfs file中,按Ctrl+D结束输入,hdfs file不能存在,否则命令不会执行
- moveFromLocal
hadoop fs -moveFromLocal < local src > ... < hdfs dst >
与put相类似,命令执行后源文件 local src 被删除,也可以从从键盘读取输入到hdfs file中
- copyFromLocal
hadoop fs -copyFromLocal < local src > ... < hdfs dst >
与put相类似,也可以从从键盘读取输入到hdfs file中
- get
hadoop fs -get < hdfs file > < local file or dir>
local file不能和 hdfs file名字不能相同,否则会提示文件已存在,没有重名的文件会复制到本地
hadoop fs -get < hdfs file or dir > ... < local dir >
拷贝多个文件或目录到本地时,本地要为文件夹路径
注意:如果用户不是root, local 路径要为用户文件夹下的路径,否则会出现权限问题,
- copyToLocal
hadoop fs -copyToLocal < local src > ... < hdfs dst >
与get相类似
- rm
hadoop fs -rm < hdfs file > ...
hadoop fs -rm -r < hdfs dir>...
每次可以删除多个文件或目录
- mkdir
hadoop fs -mkdir < hdfs path>
只能一级一级的建目录,父目录不存在的话使用这个命令会报错
hadoop fs -mkdir -p < hdfs path>
所创建的目录如果父目录不存在就创建该父目录
- getmerge
hadoop fs -getmerge < hdfs dir > < local file >
将hdfs指定目录下所有文件排序后合并到local指定的文件中,文件不存在时会自动创建,文件存在时会覆盖里面的内容
hadoop fs -getmerge -nl < hdfs dir > < local file >
加上nl后,合并到local file中的hdfs文件之间会空出一行
- cp
hadoop fs -cp < hdfs file > < hdfs file >
目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件还存在
hadoop fs -cp < hdfs file or dir >... < hdfs dir >
目标文件夹要存在,否则命令不能执行
- mv
hadoop fs -mv < hdfs file > < hdfs file >
目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件不存在
hadoop fs -mv < hdfs file or dir >... < hdfs dir >
源路径有多个时,目标路径必须为目录,且必须存在。
注意:跨文件系统的移动(local到hdfs或者反过来)都是不允许的
- count
hadoop fs -count < hdfs path >
统计hdfs对应路径下的目录个数,文件个数,文件总计大小
显示为目录个数,文件个数,文件总计大小,输入路径
HDFS JavaAPI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
| package Hdfs;
import com.sun.xml.internal.ws.api.ha.StickyFeature; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.apache.hadoop.hdfs.util.IOUtilsClient; import org.apache.hadoop.io.IOUtils;
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date;
public class HdfsTest {
private static Configuration conf = new Configuration();
static { conf.set("fs.defaultFS", "172.18.74.236:9000");
}
public static void createFile(String dst, byte[] contents) throws IOException { FileSystem fs = FileSystem.get(conf); Path dstPath = new Path(dst); FSDataOutputStream outputStream = fs.create(dstPath); outputStream.write(contents); outputStream.close(); fs.close(); System.out.println("文件创建成功"); }
public static void uploadFile(String src,String dst) throws IOException{ FileSystem fs = FileSystem.get(conf); Path srcPath = new Path(src); Path dstPath = new Path(dst); fs.copyFromLocalFile(false, srcPath, dstPath);
System.out.println("Upload to "+conf.get("fs.default.name")); System.out.println("------------list files------------"+"\n"); FileStatus [] fileStatus = fs.listStatus(dstPath); for (FileStatus file : fileStatus) { System.out.println(file.getPath()); } fs.close(); }
public static void upload(String src,String dst) throws IOException{ FileSystem fs = FileSystem.get(conf);
Path dstPath = new Path(dst); FSDataOutputStream os = fs.create(dstPath); FileInputStream is = new FileInputStream(src);
org.apache.commons.io.IOUtils.copy(is,os); }
public static void rename(String oldName, String newName) throws IOException{ FileSystem fs = FileSystem.get(conf);
Path oldPath = new Path(oldName); Path newPath = new Path(newName); boolean isok = fs.rename(oldPath, newPath); if(isok){ System.out.println("rename ok!");
} else { System.out.println("rename failure"); }
fs.close(); }
public static void delete(String filePath) throws IOException{ FileSystem fs = FileSystem.get(conf);
Path path = new Path(filePath); boolean isok = fs.deleteOnExit(path); if(isok){ System.out.println("delect ok"); } else {
System.out.println("delect failure"); }
fs.close(); }
public static void mkdir(String path) throws IOException{
FileSystem fs = FileSystem.get(conf);
Path srcPath = new Path(path); boolean isok = fs.mkdirs(srcPath); if (isok){ System.out.println("create " + path + " dir ok !");
} else{ System.out.println("create "+ path +" dir failure!"); } fs.close(); }
public static void readFile(String filePath) throws IOException{ FileSystem fs = FileSystem.get(conf);
Path fielPath = new Path(filePath); InputStream in =null; try{ in =fs.open(fielPath); IOUtils.copyBytes(in, System.out, 4096, false); } finally { IOUtils.closeStream(in); } }
public static void getDiretoryFromHdfs(String direPath){
try { FileSystem fs = FileSystem.get(conf); FileStatus[] filelist = fs.listStatus(new Path(direPath)); for (int i = 0; i < filelist.length; i++){ System.out.println("______" + direPath + "目录下的所有文件_________"); FileStatus fileStatus = filelist[i]; System.out.println("Name: "+fileStatus.getPath().getName()); System.out.println("Size: "+fileStatus.getLen()); System.out.println("Path: "+ fileStatus.getPath());
} fs.close();
} catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException{
String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String localFilePath = "C:\\Users\\Charon\\Desktop\\To do.txt"; String hdfsFilePath = "/Test" +today.substring(0,7) + "/upload_date=" + today + "/";
getDiretoryFromHdfs("/");
delect(hdfsFilePath); }
|