(Hadoop)HDFS常用操作


目錄:

注意1、使用前啟動hadoop

注意2、三種使用文件系統的shell命令方式

注意3、配置環境

注意4、第一次使用HDFS時

一、hdfs dfs 命令的常用操作(先啟動Hadoop)

二、通過Java API操作HDFS (先啟動Hadoop)

三、基本類似於Linux的常用操作命令

注意:

1、先我們需要啟動Hadoop。轉到hadoop目錄下,啟動hadoop

 cd /usr/local/hadoop

./sbin/start-dfs.sh

2、命令是以”./bin/hadoop dfs”開頭的Shell命令方式,實際上有三種shell命令方式(如果配置好環境變量,可以用下邊的第三條命令替換掉本句開頭的加粗部分)。

hadoop fs           #適用於任何不同的文件系統,比如本地文件系統和HDFS文件系統

hadoop dfs          #只能適用於HDFS文件系統

hdfs dfs            #跟hadoop dfs的命令作用一樣,也只能適用於HDFS文件系統

3、配置環境 (注意:hadoop的安裝目錄為/usr/local下)

vim  ~/.bashrc          #進入編輯,在最前面加入如下單獨一行

export  PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin

source  ~/.bashrc       #使設置生效,現在可以在任意目錄中直接使用 hdfs 等命令了

4、第一次使用HDFS時

Hadoop系統安裝好以后,第一次使用HDFS時,需要首先在HDFS中創建用戶目錄 : 

hdfs dfs -mkdir -p /user/hadoop     #由於采用的是hadoop用戶登錄,所以在HDFS中創建一個“/user/hadoop”用戶目錄,本地上傳的文件都會被保存在/user/hadoop下。

一、hdfs dfs命令的常用操作(提前啟動hadoop並配置好PATH環境變量

1、顯示幫助

./bin/hadoop fs                                                        #顯示fs支持的所有命令   

./bin/hadoop fs -help put                                         #查看put命令如何使用

2、創建目錄——  -mkdir

hdfs dfs -mkdir test                                                 #在用戶目錄(/user/hadoop)下創建一個test目錄

hdfs dfs -mkdir /test                                                #在HDFS的給目錄(/)下創建一個test目錄

hdfs dfs -mkdir -p /test1/test2                                 #創建多級目錄,加入參數“-p”

3、顯示文件相關信息—— -ls

hdfs dfs -ls                                                             #列出HDFS上的所有目錄

hdfs dfs -ls .                                                           #顯示HDFS中與當前用戶對應的用戶目錄下的內容

hdfs dfs -ls ./test                                                    #顯示HDFS中./test(指定文件)的信息

4、顯示文件內容—— -cat

hdfs dfs -cat ./test.txt                                             #顯示文件內容 

5、文件上傳到HDFS中—— -put / -appendToFile / -copyFromLocal

hdfs  dfs  -put  /home/hadoop/下載/file  ./                                 #將本地/home/hadoop/下載/file 文件目錄下的file上傳到HDFS中的./(即user/hadoop)目錄下                                           

hdfs  dfs  -appendToFile  /home/hadoop/下載/file  ./                #若文件存在,則追加到file文件末尾

hdfs  dfs  -copyFromLocal  /home/hadoop/下載/file  ./             #若HDFS中文件已存在,則覆蓋file原有文件

 6、下載HDFS中的文件—— -get / -copyToLocal

 hdfs  dfs  -get  ./file  /home/hadoop/下載                                 #HDFS中的file文件下載到本地的 下載 目錄下  

hdfs  dfs  -copyToLocal  ./file  /home/hadoop/下載/file1           #若本地存在該文件,對文件重命名

7、在HDFS中移動文件—— -mv

hdfs  dfs  -mv  ./file  ./test                              #將file移動到test文件夾下

8、刪除HDFS中的指定文件—— -rm

hdfs  dfs  -rm  ./file                                         #刪除file文件

hdfs  dfs  -rm  -r  ./test                                   #刪除test目錄

二、通過Java API操作HDFS

1、寫入到HDFS(會自動在HDFS中創建一個文件)

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class Write
{
public static void main(String[] args)
{
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
String filename="test";//要寫入的文件名
byte[] buff="hello World!hh\n".getBytes();//要寫入的內容
try
{
FileSystem fs=FileSystem.get(conf);
FSDataOutputStream os=fs.create(new Path(filename));
os.write(buff, 0, buff.length);
System.out.println("內容成功寫入到"+filename);
os.close();
fs.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}

2、讀取HDFS中的文件內容

import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class Read
{
public static void main(String[] args)
{
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
Path filename=new Path("test");//要讀取的文件名
try
{
FileSystem fs=FileSystem.get(conf);
FSDataInputStream getIt=fs.open(filename);
BufferedReader r=new BufferedReader(new InputStreamReader(getIt));
String content=null;
while((content=r.readLine())!=null)//一行一行的讀,直到為空
{
System.out.println(content);
}
r.close();//關閉文件
fs.close();//關閉HDFS
}catch(Exception e)
{
e.printStackTrace();
System.out.println(filename+"文件不存在");
}
}
}

 
 

 

本博客參考了:

第三章 分布式文件系統HDFS 學習指南 (林子雨)   http://dblab.xmu.edu.cn/blog/290-2/

常用的HDFS操作      https://www.cnblogs.com/ZJdiem/p/11306567.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM