1.HDFS shell 1.0查看幫助 hadoop fs -help <cmd> 1.1上傳 hadoop fs -put <linux上文件> <hdfs上的路徑> 1.2查看文件內容 hadoop fs -cat <hdfs上的路徑> 1.3查看文件列表 hadoop fs -ls / 1. ...
1.HDFS shell
1.0查看幫助
hadoop fs -help <cmd>
1.1上傳
hadoop fs -put <linux上文件> <hdfs上的路徑>
1.2查看文件內容
hadoop fs -cat <hdfs上的路徑>
1.3查看文件列表
hadoop fs -ls /
1.4下載文件
hadoop fs -get <hdfs上的路徑> <linux上文件>
2.使用java介面操作HDFS
public class HDFSDemo { private FileSystem fs = null; @Before public void init() throws IOException, URISyntaxException, InterruptedException{ fs = FileSystem.get(new URI("hdfs://itcast01:9000"), new Configuration(),"root"); } @Test public void testDel() throws IllegalArgumentException, IOException{ boolean flag = fs.delete(new Path("/words.txt"), true); System.out.println(flag); } @Test public void testMkdir() throws IllegalArgumentException, IOException{ boolean flag = fs.mkdirs(new Path("/itcast88888888")); System.out.println(flag); } @Test public void testUpload() throws IllegalArgumentException, IOException{ FSDataOutputStream out = fs.create(new Path("/words.txt")); FileInputStream in = new FileInputStream(new File("c:/w.txt")); IOUtils.copyBytes(in, out, 2048, true); } public static void main(String[] args) throws IOException, URISyntaxException { FileSystem fs = FileSystem.get(new URI("hdfs://itcast01:9000"), new Configuration()); InputStream in = fs.open(new Path("/jdk.avi")); FileOutputStream out = new FileOutputStream(new File("c:/jdk123456")); IOUtils.copyBytes(in, out, 2048, true); } }
3.hadoop通信機制
不同進程之間的方法進行調用
4.HDFS源碼分析
FileSystem.get --> 通過反射實例化了一個DistributedFileSystem --> new DFSCilent()把他作為自己的成員變數
在DFSClient構造方法裡面,調用了createNamenode,使用了RPC機制,得到了一個NameNode的代理對象,就可以和NameNode進行通信了
FileSystem --> DistributedFileSystem --> DFSClient --> NameNode的代理