実行した場合:
hdfs dfs -copyFromLocal foo.txt bar.txt
次に、ローカル ファイル foo.txt が独自の hdfs ディレクトリ /user/popeye/bar.txt
にコピーされます (ここで popeye
はユーザー名です。) 結果として、以下は同じことを達成します:
hdfs dfs -copyFromLocal foo.txt /user/popeye/bar.txt
ファイルを hdfs にコピーする前に、まず親ディレクトリを作成してください。この「ホーム」ディレクトリにファイルを配置する必要はありませんが、(1) あらゆる種類のファイルで「/」を乱雑にしない方がよいでしょう。(2) この規則に従うと、他のユーザーとの競合を防ぐことができます。
あなたのアプローチが間違っているか、理解が間違っている可能性があります
dfs.datanode.data.dir
、データ ブロックを保存する場所
hdfs dfs -ls /
と入力すると hdfs のディレクトリのリストを取得します。 -copyFromLocal
を使用してローカルから hdfs にファイルを転送できます。 または -put
特定のディレクトリまたは -mkdir
を使用して 新しいディレクトリを作成できます
詳細については、以下のリンクを参照してください
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html
最初の回答の通り、Hadoop 1.x
について詳しく説明しています。 -
このスクリプトを疑似配布モデルで実行していると仮定すると、おそらく 1 つまたは 2 つのユーザー (NameNodes) のリストが示されます -
私たちの完全分散モデルでは、最初にこれらのことを実行するための管理者権限があり、N 個の NameNodes(users) のリストがあります。
それでは、本題に移りましょう -
最初に Hadoop ホーム ディレクトリにアクセスし、そこからこのスクリプトを実行します -
bin/hadoop fs -ls /
結果はこのようになります -
drwxr-xr-x - xuiob78126arif supergroup 0 2017-11-30 11:20 /user
ここで xuiob78126arif
は私の名前ノード (マスター/ユーザー) で、NameNode (ユーザー) ディレクトリは -
/user/xuiob78126arif/
これで、ブラウザにアクセスしてアドレスを検索できます -
http://xuiob78126arif:50070
そこから Cluster Summary, NameNode Storage
を取得できます など
注 :スクリプトは、少なくともファイルまたはディレクトリが DataNode に存在する場合、1 つの条件でのみ結果を提供します。それ以外の場合は -
を取得します。ls: Cannot access .: No such file or directory.
したがって、その場合、最初に bin/hadoop fs -put <source file full path>
で任意のファイルを置きます
その後、 bin/hadoop fs -ls /
を実行します
これで、問題について少し理解していただけたと思います。ありがとうございます。