開発時に手動やshellでよく使ったHadoopコマンドの覚え書きです。
公式サイトでは他にも紹介されています。
ディレクトリ内のディレクトリ/ファイル列挙
hadoop fs -ls /target/dir/
ディレクトリ作成
hadoop fs -mkdir /target/dir/001
ファイル削除
# 基本
hadoop fs -rm /target/dir/abc.txt
# 削除ファイルをワイルドカード指定可
hadoop fs -rm /target/dir/*.txt
ディレクトリ削除
hadoop fs -rmr /target/dir/
HDFSからローカルにファイル転送
# 基本
hadoop fs -get /hdfs/target/from/abc.txt /target/to/
hadoop -copyToLocal /hdfs/target/from/abc.txt /target/to/
## 10回リトライ
hadoop fs -D dfs.client.block.write.locateFollowingBlock.retries=10 -copyToLocal /hdfs/target/from/abc001.txt /target/to/
# 転送ファイルをワイルドカード指定可
hadoop fs -D dfs.client.block.write.locateFollowingBlock.retries=10 -copyToLocal /hdfs/target/from/abc*.txt /target/to/
ローカルからHDFSにファイル転送
# 基本
hadoop fs -put /target/from/abc.txt /hdfs/target/to/
hadoop -copyFromLocal /target/from/abc.txt /hdfs/target/to/
# 10回リトライ
hadoop fs -D dfs.client.block.write.locateFollowingBlock.retries=10 -copyFromLocal /target/from/abc001.txt /hdfs/target/to/
# 転送ファイルをワイルドカード指定可
hadoop fs -D dfs.client.block.write.locateFollowingBlock.retries=10 -copyFromLocal /target/from/abc*.txt /hdfs/target/to/
その他
HDFS上の圧縮ファイルをローカル転送後に解凍してまた転送する以外で方法ないか考えた時に
@yu-iskwさんのHDFS 上の Gzip のような圧縮ファイルを HDFS 上で解凍する方法記事を見つけた。
それに加えて、圧縮ファイルが複数あり一度のコマンドで同じようなことしようと思ったが、思いつかなかったので備忘録としておく。