すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:一般的な HDFS コマンド

最終更新日:Nov 09, 2025

E-MapReduce (EMR) クラスターでは、hadoop fs コマンドを実行して、Hadoop 分散ファイルシステム (HDFS) 内のファイルに対して操作を実行できます。このトピックでは、HDFS の一般的なコマンドについて説明します。

前提条件

コマンドを実行する前に、次の条件が満たされていることを確認してください。

コマンドのバージョン

Hadoop は、ファイルシステム操作のために 2 つの同等のコマンドフォーマットを提供します。

  • hdfs dfs <args>: このコマンドは HDFS に固有です。

  • hadoop fs <args>: これは汎用的なファイルシステムコマンドです。HDFS やローカルファイルシステム (file:///) など、複数の Hadoop 互換ファイルシステムで操作できます。

このトピックのすべての例では、hadoop fs を使用します。

コマンドチートシート

次の表は、最も一般的な HDFS コマンドのクイックリファレンスです。

コマンド

説明

一般的な構文

mkdir

HDFS に新しいディレクトリを作成します。

hadoop fs -mkdir [-p] <paths>

touchz

HDFS に 0 バイトの空のファイルを作成します。

hadoop fs -touchz URI [URI ...]

ls

指定されたパス内のファイルとディレクトリ、およびそれらの基本情報を一覧表示します。

hadoop fs -ls [-h] [-R] [-t] <args>

put

コマンドが実行される EMR ノード上のローカルファイルシステムから HDFS に 1 つ以上のファイルをコピーします。

hadoop fs -put [-f] [-p] <localsrc> <dst>

get

HDFS からコマンドが実行される EMR ノード上のローカルファイルシステムにファイルまたはディレクトリをコピーします。

hadoop fs -get [-f] [-p] <src> <localdst>

cp

HDFS 内でファイルまたはディレクトリをコピーします。

hadoop fs -cp [-f] URI [URI ...] <dest>

mv

HDFS 内でファイルまたはディレクトリを移動または名前変更します。

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

rm

HDFS 内のファイルまたはディレクトリを削除します。

hadoop fs -rm [-f] [-r] [-skipTrash] URI [URI ...]

cat

HDFS 内のファイルの内容を表示します。

hadoop fs -cat URI [URI ...]

du

ファイルのサイズ、またはディレクトリ内のすべてのファイルの合計サイズを表示します。

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

HDFS コマンドの詳細については、「Apache Hadoop 公式ウェブサイト」をご参照ください。

ディレクトリとファイルの管理

mkdir: ディレクトリの作成

HDFS に新しいディレクトリを作成します。

  • 構文

    hadoop fs -mkdir [-p] <paths>
  • パラメーターの説明

    • -p: パス内に親ディレクトリが存在しない場合、すべての親ディレクトリを作成します。これは、Linux の mkdir -p コマンドに似ています。このパラメーターは、親ディレクトリが存在しない場合に発生するエラーを防ぐために、本番環境で一般的に使用されます。

  • 例: HDFS ファイルシステムに /dir ディレクトリを作成します。

    hadoop fs -mkdir /dir

touchz: 空のファイルの作成

HDFS に 0 バイトの空のファイルを作成します。

  • 構文

    hadoop fs -touchz URI [URI ...]
  • シナリオ

    • タスクが完了したことを示すマーカーファイルとして機能させるため。

    • データ処理の前に空の出力ファイルを作成するため。

  • 例: HDFS ファイルシステムの /dir/ ディレクトリに emptyfile.txt ファイルを作成します。

    hadoop fs -touchz /dir/emptyfile.txt

ls: ファイルとディレクトリの一覧表示

指定されたパス内のファイルとディレクトリ、およびそれらの基本情報を一覧表示します。

  • 構文

    hadoop fs -ls [-h] [-R] [-t] <args>
  • パラメーターの説明

    • -h: ファイルサイズを 1K、234M、2G などの人間が読みやすい形式で表示します。

    • -R: すべてのサブディレクトリの内容を再帰的に一覧表示します。

    • -t: 変更時間で並べ替え、最新のファイルまたはディレクトリを最初に表示します。

  • 例: 作成した dir ディレクトリを表示します。

    hadoop fs -ls /dir

ファイル転送

put: HDFS へのファイルのアップロード

コマンドが実行される EMR ノード上のローカルファイルシステムから HDFS に 1 つ以上のファイルをコピーします。

  • 構文

    hadoop fs -put [-f] [-p] <localsrc> <dst>
  • パラメーターの説明

    • -f: 宛先パスに既存のファイルを強制的に上書きします。

    • -p: ファイルのアクセス時間と変更時間、所有権、および権限を保持します。

  • 例: ローカルファイル hello.txt を HDFS の /dir/sub-dir パスにアップロードします。

    hadoop fs -put hello.txt /dir/sub-dir

get: HDFS からのファイルのダウンロード

HDFS からコマンドが実行される EMR ノード上のローカルファイルシステムにファイルまたはディレクトリをコピーします。

  • 構文

    hadoop fs -get [-f] [-p] <src> <localdst>
  • パラメーターの説明

    • -f: 宛先パスに既存のファイルを強制的に上書きします。

    • -p: ファイルのアクセス時間と変更時間、所有権、および権限を保持します。

  • 例: HDFS ファイル /dir/emptyfile.txt をローカルの / パスにコピーします。

    hadoop fs -get /dir/emptyfile.txt /

ファイル操作

cp: ファイルまたはディレクトリのコピー

HDFS 内でファイルまたはディレクトリをコピーします。

  • 構文

    hadoop fs -cp [-f] URI [URI ...] <dest>
  • パラメーターの説明

    • -f: 宛先パスに既存のファイルを強制的に上書きします。

  • 例: /dir/sub-dir/ ディレクトリから /tmp ディレクトリに hello_world.txt ファイルをコピーします。

    hadoop fs -cp /dir/sub-dir/hello_world.txt /tmp

mv: ファイルまたはディレクトリの移動または名前変更

HDFS 内でファイルまたはディレクトリを移動または名前変更します。これはアトミックな操作です。同じファイルシステム内でファイルを移動する場合、データブロックは移動されません。メタデータのみが更新されるため、操作は非常に高速です。

  • 構文

    hadoop fs -mv URI [URI ...] <dest>
    • /tmp/ ディレクトリから /dir/sub-dir/ ディレクトリに hello_world2.txt ファイルを移動します。

      hadoop fs -mv /tmp/hello_world2.txt /dir/sub-dir/
    • /tmp/ パスから /dir/sub-dir/ ディレクトリに test ディレクトリを移動します。

      hadoop fs -mv /tmp/test /dir/sub-dir/

rm: ファイルまたはディレクトリの削除

HDFS 内のファイルまたはディレクトリを削除します。

  • 構文

    hadoop fs -rm [-f] [-r] [-skipTrash] URI [URI ...]
  • パラメーターの説明

    • -r: ディレクトリとそのすべての内容を再帰的に削除します。このパラメーターは、ディレクトリを削除するために必要です。

    • -f: 削除を強制します。ファイルが存在しない場合、コマンドはエラーを報告しません。

    • -skipTrash: ファイルまたはディレクトリを完全に削除し、ゴミ箱をスキップします。このオプションは細心の注意を払って使用してください。デフォルトでは、削除されたアイテムは現在のユーザーのゴミ箱ディレクトリ (/user/<username>/.Trash/) に移動されます。

  • 例: HDFS の /dir/sub-dir/ ディレクトリから hello_world2.txt ファイルを削除します。

    hadoop fs -rm /dir/sub-dir/hello_world2.txt

hadoop fs -rmr コマンドは非推奨です。ディレクトリを再帰的に削除するには、代わりに hadoop fs -rm -r を使用してください。

ファイルの表示

cat: ファイル内容の表示

HDFS 内のファイルの内容を表示します。

  • 構文

    hadoop fs -cat URI [URI ...]
    • hello.txt ファイルの内容を表示します。

      hadoop fs -cat /hello.txt
    • /dir/sub-dir/ ディレクトリ内の hello_world.txt ファイルの内容を表示します。

      hadoop fs -cat /dir/sub-dir/hello_world.txt

du: ファイルサイズの表示

ファイルのサイズ、またはディレクトリ内のすべてのファイルの合計サイズを表示します。

  • 構文

    hadoop fs -du [-s] [-h] URI [URI ...]
  • パラメーターの説明

    • -s: 各ファイルまたはディレクトリのサイズではなく、合計サイズの概要を表示します。

    • -h: サイズを人間が読みやすい形式で表示します。

    • ファイルのサイズを表示します。

      hadoop fs -du /hello.txt
    • ディレクトリ内のすべてのファイルの合計サイズを表示します。

      hadoop fs -du /dir

よくある質問

  • Permission denied

    • 原因: 現在のユーザーには、宛先のファイルまたはディレクトリに対する必要な読み取り、書き込み、または実行権限がありません。

    • 解決策:

      1. hdfs dfs -ls <parent_dir> コマンドを実行して、ファイルまたはその親ディレクトリの権限を確認します。

      2. 管理者に連絡して、chmod または chown コマンドを使用して権限を付与してもらいます。

      3. 環境で Kerberos が有効になっている場合は、kinit コマンドを使用してチケットを取得したことを確認します。

  • SafeModeException: NameNode is in safe mode

    • 原因: NameNode は起動中にセーフモードに入り、この期間中は書き込み操作を受け付けません。

    • 解決策: NameNode が自動的にセーフモードを終了するまで数分待ちます。hdfs dfsadmin -safemode get コマンドを実行してステータスを確認できます。緊急時でない限り、手動でセーフモードを強制終了しないでください。

  • No such file or directory

    • 原因: 指定されたパスが存在しません。

    • 解決策: パスのスペルミスを確認してください。ファイルに書き込む場合は、その親ディレクトリが存在することを確認してください。mkdir コマンドで -p パラメーターを使用して親ディレクトリを作成することもできます。

  • StandbyException: Operation category READ is not supported in state standby

    • 原因: 高可用性 (HA) 構成で、Standby 状態の NameNode に読み取りまたは書き込みリクエストが送信されました。

    • 解決策: Hadoop 構成ファイル (core-site.xml) を確認し、fs.defaultFS が特定の NameNode ホスト名ではなく、hdfs://mycluster などの HA NameService 名を指していることを確認してください。

リファレンス

  • クラスターで高可用性 (HA) が有効になっている場合は、「HDFS 高可用性 (HA) コマンド (HaAdmin)」をご参照ください。

  • Hadoop クラスター間、または HDFS と Object Storage Service (OSS) 間でデータを移行するには、「Hadoop DistCp」をご参照ください。