hadoop
HDFSとは何ですか?
サーチ…
備考
HDFSの優れた説明とその仕組み
構文には、HDFSで使用されるコマンドが含まれている必要があります。
HDFS - Hadoop分散ファイルシステム
Hadoop分散ファイルシステム(HDFS)は、汎用サーバーの大規模なクラスタにまたがるように設計されたスケーラブルで信頼性の高いデータストレージを提供するJavaベースのファイルシステムです。 HDFS、MapReduce、およびYARNは、Apache™Hadoop®のコアとなります。
HDFSは、フォールトトレラントに設計されています。これは、複数のノードに渡って、指定されたデータブロックの複数のコピー(デフォルトでは3つ)を保存することによって実現されます。
HDFSでのファイルの検索
Hadoop Distributedファイルシステムでファイルを検索するには:
hdfs dfs -ls -R / | grep [search_term]
上記のコマンドでは、
-ls
はファイルを一覧表示するためのものです
-R
は再帰的です(サブディレクトリを繰り返します)
/
ルートディレクトリからの手段
|
最初のコマンドの出力を2番目のコマンドにパイプする
一致する文字列を抽出するgrep
コマンド
[search_term]
hadoopファイルシステム内のすべてのファイルのリスト内で検索されるファイル名。
あるいは、以下のコマンドを使用してfindを実行し、式を適用することもできます。
hadoop fs -find / -name test -print
指定した式に一致するすべてのファイルを検索し、選択したアクションを適用します。パスを指定しないと、現在の作業ディレクトリがデフォルトになります。式を指定しない場合、デフォルトは-printになります。
次の主要な式が認識されます。
-
name pattern
-
iname pattern
ファイルの基本名が標準のファイルシステムグロブを使用してパターンと一致する場合は、trueと評価されます。 -inameを使用すると、大文字と小文字は区別されません。
-
print
-
print0Always
真と評価する。現在のパス名を標準出力に書き出します。 -print0
式を使用すると、ASCII NULL文字が追加されます。
次の演算子が認識されます。
expression -a expression
expression -and expression
expression expression
HDFSのブロックと分割
HDFSのブロックサイズとブロック :HDFSには、ファイルがロードされるたびにブロック単位でデータを格納するという概念があります。ブロックは、HDFS(またはその他のファイルシステム)のデータの物理的なパーティションです。
ファイルがHDFSにロードされるたびに、ファイルは物理的に分割され(ブロックされます)、ブロックと呼ばれる異なる部分に分割されます。ブロック数は、
hdfs-site.xml
dfs.block.size
の値に依存しhdfs-site.xml
理想的には、ブロックサイズは64/128/256MBなどの大きな値に設定されます(通常のFSの4KBと比較して)。ほとんどのHadoop 2.xディストリビューションのブロックサイズのデフォルト値は128 MBです。より大きいブロックサイズの理由は、HadoopがPetaBytesのデータを扱うために、各ファイルが数百メガバイトからTeraBytesのオーダに及ぶからです。
たとえば、サイズが1024 MBのファイルがあるとします。ブロックサイズが128 MBの場合、それぞれ128 MBの8ブロックが得られます。つまり、namenodeは
8 x 3 = 24
ファイル(3つは複製要素)のメタデータを格納する必要があります。ブロックサイズが4 KBの同じシナリオを考えてみましょう。その結果、
1GB / 4KB = 250000
ブロックとなり、1GBファイルの750000
ブロックのメタデータを保存するにはnamenodeが必要になります。これらのメタデータ関連の情報はすべてメモリ内に格納されているため、NameNodeに余分な負荷を節約するために、より大きなブロックサイズが優先されます。ここでもブロックサイズは1GBなどのように非常に高い値に設定されていません。理想的には、データの各ブロックに対して1マッパーが起動されるからです。したがって、ブロックサイズを1GBに設定すると、パラレル化が失われ、スループットが全体的に遅くなる可能性があります。
2.) HDFSでの分割サイズ :Hadoopでの分割処理は論理的なデータです。ファイルがブロックに分割されている場合、hadoopはファイルbopundariesを尊重しません。ブロックサイズに応じてデータを分割するだけです。 400MBのファイルが4行あり、各行に100MBのデータがあるとすると、 128 MB x 3
と16 MB x 1
3ブロックが得られます。しかし、データのprceossing中に入力スプリットが計算されるとき、ファイル/レコードの境界が念頭に置かれています。この場合、 NLineInputFormat
を使用している場合、それぞれ100MBの4つの入力スプリットがあります。
分割サイズは、プロパティごとに設定することもできますmapreduce.input.fileinputformat.split.maxsize
Blocks対Splitsの非常に良い説明がこのSO回答 /