HDFS基礎

来源:https://www.cnblogs.com/zhouhb/archive/2019/02/09/10357597.html
-Advertisement-
Play Games

1. HDFS Shell基礎 [root@master hadoop]# hadoop fsUsage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [ ...


1. HDFS Shell基礎

[root@master hadoop]# hadoop fs
Usage: hadoop fs [generic options]
[-appendToFile <localsrc> ... <dst>]
[-cat [-ignoreCrc] <src> ...]
[-checksum <src> ...]
[-chgrp [-R] GROUP PATH...]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-count [-q] [-h] <path> ...]
[-cp [-f] [-p | -p[topax]] <src> ... <dst>]
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-df [-h] [<path> ...]]
[-du [-s] [-h] <path> ...]
[-expunge]
[-find <path> ... <expression> ...]
[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-getfacl [-R] <path>]
[-getfattr [-R] {-n name | -d} [-e en] <path>]
[-getmerge [-nl] <src> <localdst>]
[-help [cmd ...]]
[-ls [-d] [-h] [-R] [<path> ...]]
[-mkdir [-p] <path> ...]
[-moveFromLocal <localsrc> ... <dst>]
[-moveToLocal <src> <localdst>]
[-mv <src> ... <dst>]
[-put [-f] [-p] [-l] <localsrc> ... <dst>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
[-rm [-f] [-r|-R] [-skipTrash] <src> ...]
[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
[-setfattr {-n name [-v value] | -x name} <path>]
[-setrep [-R] [-w] <rep> <path> ...]
[-stat [format] <path> ...]
[-tail [-f] <file>]
[-test -[defsz] <path>]
[-text [-ignoreCrc] <src> ...]
[-touchz <path> ...]
[-truncate [-w] <length> <path> ...]
[-usage [cmd ...]]

查看某個命令的具體幫助信息:

[root@master hadoop]# hadoop fs -help test
-test -[defsz] <path> :
Answer various questions about <path>, with result via exit status.
-d return 0 if <path> is a directory.
-e return 0 if <path> exists.
-f return 0 if <path> is a file.
-s return 0 if file <path> is greater than zero bytes in size.
-z return 0 if file <path> is zero bytes in size, else return 1.

這裡尤其要註意,如果文件存在,返回結果是0

我們上傳一個文件,然後用test命令測試:

[root@master hadoop]# hadoop fs -put /root/test test.txt

[root@master hadoop]# hadoop fs -ls .
Found 4 items
drwxrwxrwx - hdfs hdfs 0 2018-02-10 22:22 QuasiMonteCarlo_1518319340789_698036166
drwxrwxrwx - hdfs hdfs 0 2018-02-10 23:21 QuasiMonteCarlo_1518322909671_1083050937
-rw-r--r-- 3 root hdfs 5 2019-02-08 21:52 test
-rw-r--r-- 3 root hdfs 5 2019-02-09 02:12 test.txt

[root@master hadoop]# hadoop fs -test -e test.txt
[root@master hadoop]# echo $?
0
[root@master hadoop]# hadoop fs -test -e /user/root/test.txt
[root@master hadoop]# echo $?
0

[root@master hadoop]# hadoop fs -test -e /user/root/test.txtt
[root@master hadoop]# echo $?
1

2. HDFS 編程基礎

2.1 判斷文件是否存在

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSFileIfExist {
    public static void main(String[] args){
        try{
            //hdfs路徑
            String fileName = "/user/root/test.txt";
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://master:8020");
            conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
            FileSystem fs = FileSystem.get(conf);
            if(fs.exists(new Path(fileName))){
                System.out.println("文件存在");
            }else{
                System.out.println("文件不存在");
            }
            
        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

上面的代碼中fs.defaultFS的值,請查看hdfs配置文件 core-site.xml ,該文件位於hadoop安裝目錄的etc/hadoop目錄下。

如果在Windows系統中運行該程式,請在C:\Windows\System32\drivers\etc\hosts文件中加上主機名master和ip地址的對應關係。

2.2 列出目錄下的文件及子目錄

FileStatus[] list = fs.listStatus(new Path("/user/root/"));
//System.out.println("==========================================================");
if(list != null)
for (FileStatus f : list) {
     System.out.printf("name: %s, folder: %s, size: %d\n", f.getPath().getName(), f.isDirectory(), f.getLen());
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ldap客戶端配置安裝目錄的子目錄C:\OpenLDAP\etc\openldap,編輯slapd.conf,修改密碼,保存並關閉文件。rootdn "cn=Manager,dc=my-domain,dc=com"(在111行,管理員賬號)rootpw 123456(在115行,管理員密碼)進入安裝 ...
  • 當前的網路中有三種通訊模式:單播、廣播、組播(多播),其中的組播出現時間最晚但同時具備單播和廣播的優點,最具有發展前景。 一、單播: 主機之間“一對一”的通訊模式,網路中的交換機和路由器對數據只進行轉發不進行複製。如果10個客戶機需要相同的數據,則伺服器需要逐一傳送,重覆10次相同的工作。但由於其能 ...
  • 今天我們簡單歸總下客戶端加域的先決條件或著說準備工作,方便新手或者管理員日常加域失敗排錯等內容,希望可以幫到大家。一.網路準備:(保證客戶端與域控解析與網路通信正常)DHCP模式:DHCP已指定域控為主備DNS,客戶端IP地址是DHCP無需手動指定DNS地址。靜態IP模式:客戶端IP地址是手動指定的... ...
  • 以前折騰的時候禁用過,現在已經忘記目錄了,結果今天手賤把系統從 18.04 升級到了 18.10 ,很多東西都要重新搞過,而且用慣了 mac 已經不熟悉 linux 上瞎折騰的那一套了,簡直坑爹。。 由於已經手動裝了 和 兩個擴展,所以預設的已經沒用啦,考慮把它們禁掉,首先要找到它們所在的目錄: 只 ...
  • 簡單對客戶端加域埠做彙總操作,希望對大家有幫助。之前有對服務埠做彙總,具體請參照:Windows Server 2016-Active Directory域服務埠彙總:http://blog.51cto.com/wenzhongxiang/2088693 協議埠埠類型備註 TCP/UDP5... ...
  • 最近在學習Linux操作系統。學到了關於定時任務的章節,作為一個總結寫下這篇文章。在Linux中,我們可以將耗時大的任務如複製大文件,壓縮、解壓縮大文件等放進定時任務中(深夜執行,因為工作時間訪問量大,這類操作會影響系統運行)。 Linux操作系統中關於定時任務主要有種操作方式: 1. at 一次性 ...
  • 目錄 1. 單用戶模式 2. 救援模式 3. 總結 1、 單用戶模式 單用戶模式可以對系統進行修複,如:修改root密碼,修改因配置不正確而導致系統啟動失敗的配置文件等。 (1) Centos7進入單用戶模式 1) 進入grub2菜單時按 ‘e’ 進入編輯模式 2) 在編輯模式中下翻,在指定行修改 ...
  • 在內核分析網路分組時,底層協議的數據將傳輸到跟高的層。而發送數據的時候順序是相反的。每一層都是通過加(首部+凈荷)傳向跟底層,直至最終發送。 這些操作決定了網路的的性能。 就如下圖所示 linux因此設計了一個結構體 如下代碼 套接字換從區在各個層交換數據,就不用複製數據了。 從以上欄位和註釋可以看 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...