常用的HDFS操作


  首先,把Hadoop命令加入到PATH環境變量中,直接通過start-dfs.sh開啟Hadoop,也可以直接通過hdfs命令訪問HDFS中的內容,方便平時的操作。

配置PATH環境變量

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

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

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

啟動Hadoop:start-dfs.sh

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

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

 

上傳文件: -put 

  本地 /home/Hadoop/temp 文件目錄下的file上傳到HDFS中的/user/hadoop目錄下

    hdfs  dfs  -put  /home/Hadoop/temp/file  ./(“./”表示當前目錄,即/user/hadoop目錄)

  -appendToFile:若文件存在,則追加到file文件末尾

    hdfs  dfs  -appendToFile  /Home/hadoop/temp/file  ./

  -copyFromLocal:若HDFS中文件已存在,則覆蓋file原有文件

    hdfs  dfs  -copyFromLocal  -f  /home/Hadoop/temp/file  ./

下載文件 -get

  HDFS中的file文件下載到本地的temp目錄下

    hdfs  dfs  -get  ./file  /home/Hadoop/temp 

  -copyToLocal:若本地存在該文件,對文件重命名

    hdfs  dfs  -copyToLocal  ./file  /home/Hadoop/temp/file1

顯示文件相關信息:-ls

  顯示HDFS中指定的文件的讀寫權限、大小、創建時間等信息

    hdfs  dfs  -ls  ./file

  輸出test目錄下所有文件相關信息

    hdfs  dfs  -ls  -R  ./test

顯示文件內容:-cat

  hdfs  dfs  -cat  ./file

在HDFS中移動文件:-mv

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

刪除HDFS中的指定文件:-rm

  hdfs  dfs  -rm  ./file:刪除指定文件

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

關閉Hadoop:stop-dfs.sh

 

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

寫入到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();
        }
    }
}
Write

讀取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+"文件不存在");
        }
    }
}
Read


免責聲明!

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



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