8t's BBR

よくつまったあれこれをメモ

HDFSの操作でよく使うコマンドとか

以前、Hadoopでサンプルアプリケーションを動かすまでは記事にしたが、
Hadoopクラスタ構築への道 ~疑似分散編~ - 8t's BBR
Hadoopクラスタ構成への道 ~完全分散編~ - 8t's BBR

今回はHDFSの操作でよく使うコマンドをまとめておこうかと思う
詳しい内容やここで紹介していないものは公式を見てください
Apache Hadoop 2.7.3 –
(お使いのversionが違う場合はそれ用のを探してください。)
久しぶりにドキュメント見てビックリしたんだが、Hadoop3.0.0系のalpha版がでてる・・・


まず、HDFSの操作をするときの基本は

$ (bin/)hadoop fs <args>

になります。パスを通している場合、(bin/)は必要ないです。
あと、HDFSが立ち上がっている場合は

$ hdfs dfs <args>

でも同じ意味になるそうなので、お好みで。


基本的にはLinux系のコマンドとほぼ同じ使い方ができますが、オプションの数が少なかったりします。


ls

ファイルやディレクトリを表示するのでお馴染みのlsコマンドですが、オプションは以下の3つです。

$ hadoop fs -ls [-d] [-h] [-R] <args>

-dディレクトリを通常のファイルのように表示
-h:ファイルサイズを人間が読み取りやすいように単位をつけて表示
-R再帰的にサブディレクトリをリスト。
これらのオプションはlinuxのlsと同じです。


-lオプションとかないんかいって一瞬なりますが、

ファイルなら
パーミッション、レプリカ数、ユーザーID、グループID、ファイルサイズ、変更日、変更時間、ファイル名」

ディレクトリなら
パーミッション、ユーザーID、グループID、修正日、修正時間、ディレクトリ名」

で表示されるので問題ないかと思います。


cat

ファイルの中身を表示(標準出力に渡している)。

$ hadoop fs -cat URI [URI ...]

 

mkdir

ディレクトリの作成。オプションは-pだけ。

$ hadoop fs -mkdir [-p] <args>

-p:指定ディレクトリをサブディレクトリごと作成


put

ローカルファイルシステムからファイルを指定場所にコピー。
コピーしてくるファイルは複数指定可能。

$ hadoop fs -put <localsrc> ... <dest>

 

cp

ファイルをコピー。複数指定可能だが、その場合はコピー先がディレクトリである必要がある。

$ hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>

-f:コピー先がすでに存在する場合、上書き
-p:ファイルの属性を保存


rm

ファイルの削除。ファイルが存在しない場合は診断メッセージを表示したり、終了ステータスを変更しない。

$ hadoop fs -rm [-f] [-r | -R] URI [URI ...]

-f:ファイルが存在しない場合、エラーを反映。
-Rディレクトリとその下にある全コンテンツを再帰的に削除。
-r:-Rと同じ。


find

ファイルを検索し、何らかのアクションを起こす。pathが指定されなかった場合は、カレントディレクトリを検索する。expressionに何も指定しない場合は-printを行う。

$ hadoop fs -find <path> ... <expression> ...

[expression]
-name:ファイルのベース名が、標準のファイルシステムのグロブを用いたパターンと一致する場合はtrueと評価。
-iname:-nameとほぼ同じだが、マッチで大文字小文字を区別しない。


get

ファイルをローカルファイルシステムにコピー。

$ hadoop fs -get [ignorecrc] [-crc] <src> <localdst>

-ignorecrcCRCチェックに失敗したファイルをコピーできる。
crcファイルとCRCをコピーできる。


touchz

長さ0のファイルを作成。

$ hadoop fs -touchz URI [URI ..]

 

mv

ファイルを移動させる。移動させるファイルは複数指定できが、その場合は移動先がディレクトリである必要がある。また、ファイルシステム間でファイルを移動することは許可されていない。

$ hadoop fs mv URI [URI ...] <dest>

 

df

フリースペースを表示

$ hadoop fs -df [-h] URI [URI ...]

-h:人間が読みやすいように表示


du

ディレクトリ内のファイル容量や、ディレクトリ自体の容量を表示

$ hadoop fs -du [-s] [-h] URI [URI ...]

-s:引数で指定したファイルやディレクトリの総計を表示する
-h:人間が読みやすいように表示