Hadoop - hadoop fs コマンドで使用するもの

ヒント: 記事を作成した後、目次を自動的に生成できます。生成方法は、右側のヘルプドキュメントを参照してください。


FS シェルの概要

FS シェルは
ファイル システム (FS) を呼び出します。シェル コマンドは hadoop fs の形式を使用する必要があります。

すべての FS シェル コマンドは、引数として URI パスを受け取ります。URI 形式は、scheme://authority/path です。

HDFS ファイル システムの場合、スキームは hdfs であり、ローカル ファイル システムの場合、スキームは file です。スキームと権限のパラメーターはオプションであり、指定しない場合は、構成で指定されたデフォルトのスキームが使用されます。

/parent/child などの HDFS ファイルまたはディレクトリは、 hdfs://namenode:namenodeport/parent/child として表現することも、より単純な /parent/child として表現することもできます。次の例のファイルまたはディレクトリは、両方の形式で表現できます(構成ファイルのデフォルト値が namenode:namenodeport であると仮定します)。

ほとんどの FS シェル コマンドの動作は、対応する Unix シェル コマンドと似ていますが、hdfs ファイル システム内のファイルが操作される点が異なります。エラーメッセージは stderr に出力され、その他のメッセージは stdout に出力されます。


1. 主なコマンド

注文 説明する
hadoop fs -ls [-r ] <パス> HDFS ディレクトリの下のファイルとサブディレクトリを表示します。
hadoop fs -mkdir <パス> HDFS ディレクトリを作成する
hadoop fs -rm [-r] <パス> HDFS 下のファイルとサブディレクトリを削除する
hadoop fs -touchz <パス> 0バイトのファイルを作成する
hadoop fs -put /-moveFromLocal/-copyFromLocal < パス > ファイルを HDFS にアップロードする
hadoop fs -get <パス> ファイルを HDFS にダウンロードする
hadoop fs -getmerge/-copyToLocal < パス > ファイルを HDFS にマージする
hadoop fs -mv <パス> HDFS 上のファイルを移動する
hadoop fs -cp <パス> HDFS 上のファイルをコピーする
hadoop fs -cat/-text < パス > HDFS 上のファイルを表示する
hadoop fs -tail <パス> HDFS ファイルの最後の 1000 バイトを表示する
hadoop fs -du [-s] [-h] <パス> HDFS ファイルスペースの表示
hadoop fs -stat <パス> HDFS ファイルの作成時間を表示する
hadoop fs -count <パス> HDFS ファイルの数とサイズを計算する
hadoop fs -test <パス> HDFS ファイルをチェックする
hadoop fs -chmod <パス> HDFS ファイルのアクセス許可を変更する
hadoop fs -chown <パス> HDFS ファイルの所有者とグループを変更する
hadoop fs -chgrp <パス> HDFSが属するグループを変更する
hadoop fs -setrep <パス> HDFS ファイルのコピー数を変更する
hadoop fs -expunge <パス> 空のごみ箱

2. 使用例

1. HDFS ファイル/ディレクトリを表示する

ls

使用方法:hadoop fs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [ < path > …

1) HDFS ルート ディレクトリの下のリストを表示する
Unix と同様に、ディレクトリを表示し、その直接の子のリストを返します。
返されるディレクトリリストの情報は以下のとおりです: ディレクトリ名 変更日 変更時刻 権限 ユーザーID グループID

例:

#ディレクトリ内のファイルの内容をリストします
hadoop fs -ls /
#ディレクトリ、サブディレクトリ、およびファイル情報を
再帰的にリストします hadoop fs -ls -r /
hadoop fs -lsr /

2) HDFS ファイルの表示 ファイルを表示
する場合、返されるファイル情報は次のとおりです。 ファイル名 <コピー数> ファイル サイズ 変更日 変更時刻 権限 ユーザー ID グループ ID

例:

hadoop fs -ls /user/file1

2. HDFS ディレクトリを作成する

mkdir

使用方法: hadoop fs -mkdir [-p] <パス> ...

例:

#単一のディレクトリを作成する
hadoop fs -mkdir -p /file1
#複数レベルのディレクトリを作成する
hadoop fs -mkdir -p /file1/file2/…

3. HDFS ディレクトリ/ファイルを削除します

rm

使用方法:hadoop fs -rm [-f] [-r|-R] [-skipTrash] [-safely] < src > …

例:

#HDFS 上の指定されたファイルを
削除しますhadoop fs -rm /user/file1
#HDFS ファイルディレクトリとファイルを
再帰的に削除しますhadoop fs -rmr /user/file1
#誤ってデータを削除しないように、確認を追加します
hadoop fs -rmi /user/ファイル1

4. 0バイトのファイルを作成する

タッチズ

使用方法: hadoop fs -touchz <パス> ...

例:

hadoop fs -touchz /user/file1

5. ファイルをアップロードする

put : ファイルをローカル システムから DFS にコピーします。
使用方法: hadoop fs -put [-f] [-p] [-l] [-d] [-t < thread count >] < localsrc > … < dst >

moveFromLocal : hadoop fs -put の使用法と同等
: hadoop fs -moveFromLocal [-f] [-p] [-l] [-d] < localsrc > … < dst >

copyFromLocal : hadoop fs -put と同等
使用法: hadoop fs -copyFromLocal [-f] [-p] [-l] [-d] [-t < thread count >] < localsrc > … < dst >

例:

hadoop fs -put /user/file1
hadoop fs -moveFromLocal /user/file1
hadoop fs -copyFromLocal /user/file1

6. ファイルをダウンロードする

get : DFS からファイル システムにファイルをコピーします。複数のファイルがある場合、dst はディレクトリである必要があります

使用方法:hadoop fs -get [-f] [-p] [-ignoreCrc] [-crc] < src > … < localdst >

例:

hadoop fs -get /user/file1

7. ファイルを結合する

getmerge : DFS から複数のファイルをコピーし、ローカル ファイル システムにマージして 1 つのファイルに並べ替えます。
使用方法: hadoop fs -getmerge [-nl] [-skip-empty-file] < src > < localdst >

copyToLocal : hadoop fs -get と同等の
使用法: hadoop fs -copyToLocal [-f] [-p] [-ignoreCrc] [-crc] < src > … < localdst >

例:

hadoop fs -getmerge /user/file1
hadoop fs -copyToLocal /user/file1

8. ファイルの移動

mv : 指定された形式でファイルを指定されたターゲットの場所に移動します。 src が複数のファイルの場合、 dst はディレクトリである必要があります

使用方法: hadoop fs -mv < src > ... < dst >

例:

hadoop fs -mv /user/file1

9. ファイルをコピーする

cp : ファイルをターゲットの場所にコピーします。 scr が複数のファイルの場合、 dst はディレクトリである必要があります。

使用法: hadoop fs -cp [-f] [-p | -p[topax]] [-d] <
src > ... < dst >

例:

hadoop fs -cp /user/file1

10. ファイルの内容を表示する

cat
の使用方法: hadoop fs -cat [-ignoreCrc] < src > …

text : ソースファイルをテキスト形式で出力します。使用できる形式は zip と TextRecordInputStream です。圧縮ファイルの場合は、解凍してから表示します。
使用方法: hadoop fs -text [-ignoreCrc] < src > …

例:

hadoop fs -cat hdfs://file1
hadoop fs -text hdfs://file1

11. ファイルの最後を表示します

tail : ファイルの最後の 1000 バイト (1k) を標準出力に出力します。

使用法: hadoop fs -tail [-f] [-s ] < ファイル >

例:

hadoop fs -tail /user/file1

12. ファイルスペースのサイズを表示する

使用法: hadoop fs -du [-s] [-h] [-v] [-x] <パス> ...

例:

hadoop fs -du /user/file1

# 対応するパス配下の各フォルダーとファイルのサイズ、ファイルのサイズを読みやすい形式で表現します。たとえば、67108864 の代わりに 64M を使用します hadoop fs -du -h /user/
file1

#ファイルサイズを表示します。sは合計のみを表示することを意味し、ファイルサイズが表示されます。
hadoop fs -du -s /user/file1
hadoop fs -dus

13. ファイルステータスの表示

stat : -stat オプションが使用され、形式が指定されていない場合、ファイルの作成日のみが出力されます。これは %y に相当します。

使用法: hadoop fs -stat [format] < path > …
注:
HDFS にファイルを書き込む場合、dfs.block.size 構成項目を設定することでファイルのブロック サイズを設定できます。これにより、ブロック サイズが異なります。 HDFS 上のファイルは異なります。場合によっては、HDFS 上のファイルのブロック サイズを知る必要があることがあります。たとえば、ファイルがジョブの入力として使用されるときに作成されるマップの数を知りたいことがあります。Hadoop FS Shell には、この目的を達成する -stat オプションが用意されています。
hadoop fs -stat [format] は
フォーマット形式をリストします:
%b: 印刷ファイル サイズ (ディレクトリは 0)
%n: 印刷ファイル名
%o: 印刷ブロック サイズ (必要な値)
%r: 印刷バックアップ番号
% y: UTC 日付 yyyy-MM-dd HH:mm:ss を出力
%Y: 1970 年 1 月 1 日以降の UTC マイクロ秒を出力
%F: ディレクトリの場合はディレクトリを出力、ファイルの場合は通常のファイルを出力

例:

#ファイル作成日を出力
hadoop fs -stat hdfs://b1/apps/summary_fz_province/hive/summary_fz_province/cdc_zxt_user_info_tmp
2022-11-02 08:35:45 #ファイル作成日

#ファイルのブロック サイズとバックアップ数を出力します
hadoop fs -stat “%o %r” hdfs://b1/apps/summary_fz_province/hive/summary_fz_province/cdc_zxt_user_info_tmp
0 0 #ブロック サイズとバックアップ数

14. ファイルの数とサイズを数える

count : カウントされたファイルの数と占有スペースの詳細
出力テーブルの列の意味は次のとおりです: DIR_COUNT、FILE_COUNT、CONTENT_SIZE、FILE_NAME、
または -q を追加すると、QUOTA、REMAINING_QUOTA、SPACE_QUOTA、REMAINING_SPACE_QUOTA もリストされます。 。

使用方法 : hadoop fs -count [-q] [-h] [-v] [-t []] [-u] [-x] [-e] < path > …

例:

hadoop fs -count [-q] hdfs://b1/apps/file1

15. ファイルをチェックする

テスト

使用方法: hadoop fs -test -[defswrz] < path >
-e ファイルが存在するかどうかを確認し、存在する場合は 0 を返します
-z ファイルが 0 バイトであることを確認し、存在する場合は 0 を返します
-d パスがディレクトリの場合は 1 を返し、それ以外の場合は 0 を返します

例:

hadoop fs -test -e hdfs://b1/apps/file1

16. ファイル権限を変更する

chmod : 改变文件的权限,使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。

使用方法 : hadoop fs -chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…

17. 修改文件的所有者和组

chown:改变文件的拥有者。使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。

使用方法 : hadoop fs -chown [-R] [OWNER][:[GROUP]] PATH…

18. 修改文件目录的属组

chgrp : 改变文件所属的组,使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。等价于-chown … GROUP …。

使用方法 : hadoop fs -chgrp [-R] GROUP PATH…

19. 修改文件的副本系数

setrep : 设置文件的备份级别。-R标志控制是否递归设置子目录及文件。

使用方法 : hadoop fs -setrep [-R] [-w]

示例:

#查看副本数
hadoop fs -ls hdfs://b1/apps/file
-rw-r–r-- 3 root analy 29318252 2022-11-02 16:35 hdfs://b1/apps/file #第二列为副本数

#コピー数を変更する
hadoop fs -setrep -w 2 -R hdfs://b1/apps/file1

# もう一度コピー数を確認すると 2
hadoop fs -ls hdfs://b1/apps/file
-rw-r–r-- 2 root Analy 29318252 2022-11-02 16:35 hdfs://b1/ apps/ file #2 列目はコピー番号です

20. ごみ箱を空にする

消去する

使用法: hadoop fs -expunge [-immediate]

例:

hadoop fs -expunge


3. 実用化

実現目標: ハイブの毎日の更新時間を定期的に確認し、記録する
実現プロセス:
1.テーブルの保存パスを見つける
1 つの方法は、ハイブ コマンド「 desc formatted table_name 」を通じてテーブルの詳細情報を取得し、その保存パスを見つけることです。テーブル " Location: 'hdfs:/
2. hadoop fs -ls locationを使用します_ 6 列目はテーブルの更新時刻です

おすすめ

転載: blog.csdn.net/sodaloveer/article/details/127666195