2015-12-16 10 views
7

ローカルマシンにhdfsインストールがありません。リモートのhdfsクラスタからファイルを取得したい。これを達成する最良の方法は何ですか? get hdfsからクラスタマシンfsのいずれかにファイルを取得してからsshを使用してファイルを取得する必要がありますか?私はbashスクリプトを使ってプログラムでこれをやりたいと思っています。ここでリモートHDFSからファイルを取得

+0

DistCpを試す:https://hadoop.apache.org/docs/r1.2.1/distcp.html –

答えて

5

は手順は次のとおりです。

  • は、ホストとターゲットクラスタ間の接続
  • クライアントとしてホストを設定があることを確認し、あなたは互換性のあるHadoopのバイナリをインストールする必要があります。また、ホストは同じオペレーティングシステムを使用して実行している必要があります。
  • は直接

はまた、選択肢がありますあなたはあなたがファイルを取得するhadoop fs -getコマンドを実行することができます

  • (コア-site.xmlに、HDFS-site.xmlのを)同じ設定ファイルを持っていることを確認し

    • Webhdfs/httpFSが設定されている場合、実際にはcurlまたはブラウザを使用してファイルをダウンロードできます。 Webhdfsが構成されている場合、bashスクリプトを記述できます。

    ホストでHadoopバイナリがクライアントとしてインストールされていない場合は、次の手順を使用できます。あなたはひとつのスクリプトで上記の2つのコマンドを持つことができ、ファイル

  • をコピーするために、その後scpコマンド

    • runコマンド
    • クラスタ上のノードのいずれかにあなたのホストからパスワードレスログインを有効にssh <user>@<host> "hadoop fs -get <hdfs_path> <os_path>"
  • +0

    フォローアップの質問。 [httpFS](https://hadoop.apache.org/docs/r2.6.0/hadoop-hdfs-httpfs/index.html)は、パフォーマンス面で「クライアントhadoop fs -get」ソリューションとどのように比較されますか? –

    +0

    httpFSとwebhdfsは同じです。それを使用してダウンロードすることができます。そうするためにhadoopバイナリは必要ありません。 –

    +0

    パフォーマンスに関してはどうですか? httpFSを使用する代わりにバイナリを使用する方が速いのですか?おそらく私は別のスレッドを開始する必要があります –

    関連する問題