6

それで、私はこれについてオンラインでいくつかのチュートリアルを見てきましたが、それぞれが何か違うことをするように言っているようです. また、それらのそれぞれは、リモートクラスターで物事を機能させようとしているのか、リモートクラスターとローカルにやり取りしようとしているのかなどを指定していないようです...

つまり、私の目標は、lzo ファイルを操作するように既にセットアップされている Hadoop クラスター上に存在する lzo 圧縮ファイルを pig が操作できるように、ローカル コンピューター (Mac) を取得することです。既に Hadoop をローカルにインストールしており、クラスターからファイルを取得できます hadoop fs -[command]

また、既に pig をローカルにインストールしており、スクリプトを実行するとき、または grunt を介して何かを実行するときに、hadoop クラスターと通信しています。lzo 以外のファイルを問題なく読み込んで再生できます。私の問題は、lzo ファイルをロードする方法を見つけるという点だけです。たぶん、クラスターの ElephantBird のインスタンスを介してそれらを処理できますか? 私にはわからず、オンラインで最小限の情報しか見つかりませんでした。

したがって、これに対する短いチュートリアルや回答は素晴らしいものであり、私だけでなくより多くの人々を助けることを願っています.

4

1 に答える 1

4

最近、これが機能するようになり、同僚のために wiki を作成しました。以下は、PIG を lzos で動作させる方法の詳細を抜粋したものです。これが誰かを助けることを願っています!

注: これは Mac を念頭に置いて書かれています。手順は他の OS の場合とほぼ同じです。これにより、Windows または Linux で構成するために知っておく必要があることが確実に得られますが、少し推定する必要があります (明らかに、Mac 中心のフォルダーを任意の OS に変更します)。再使用など...)。

LZOを操作できるようにPIGを接続する

これは、私にとって最も面倒で時間のかかる部分でした。難しいからではなく、オンラインに 50 の異なるチュートリアルがあり、どれもそれほど役に立たないからです。とにかく、これを機能させるために私がしたことは次のとおりです。

  1. https://github.com/kevinweil/hadoop-lzoの github から hadoop-lzo を複製します。

  2. これをコンパイルして、hadoop-lzo*.jar とネイティブの *.o ライブラリーを取得します。これを 64 ビット マシンでコンパイルする必要があります。

  3. ネイティブ ライブラリを $HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/ にコピーします。

  4. Java jar を $HADOOP_HOME/lib および $PIG_HOME/lib にコピーします。

  5. 次に、プロパティー java.library.path が lzo ネイティブ・ライブラリーを指すように hadoop と pig を構成します。これは $HADOOP_HOME/conf/mapred-site.xml で次のように実行できます。

    <property>
        <name>mapred.child.env</name>
        <value>JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/</value>
    </property>
    
  6. pig再度実行して grunt シェルを試し、すべてが機能することを確認します。そうでない場合は、おそらく mapred-site.xml で何かを台無しにしており、再確認する必要があります。

  7. すごい!もうすぐ着きます。あとはエレファントバードをインストールするだけです。https://github.com/kevinweil/elephant-birdから取得できます(クローンを作成します)。

  8. ここで、エレファント バードを機能させるためには、かなりの数の事前要件が必要になります。これらは上記のページにリストされており、変更される可能性があるため、ここでは指定しません。私が言及することは、これらのバージョンが非常に重要であるということです。間違ったバージョンを取得して ant を実行しようとすると、エラーが発生します。そのため、新しいバージョンを取得する可能性が高いため、brew または macports から事前要件を取得しようとしないでください。代わりに、tarball をダウンロードして、それぞれをビルドするだけです。

  9. コマンド: jar を作成するために、エレファント バード フォルダーに ant を実行します。

  10. 簡単にするために、頻繁に登録する必要がある関連するすべての jar (hadoop-lzo-xxxjar およびエレファント-バード-xxxjar) を、簡単に見つけられる場所に移動します。/usr/local/lib/hadoop/... うまく動作します。

  11. 試してみてください!grunt シェルで通常のファイルと lzo を読み込んでみてください。上記の関連するjarを登録し、ファイルをロードして、出力を管理可能な数に制限し、それをダンプしてみてください。通常のテキスト ファイルまたは lzo を使用しているかどうかに関係なく、これはすべて正常に機能するはずです。

于 2011-09-19T19:46:35.627 に答える