1

HTTP ソースと HDFS シンクの間にストリームを作成しようとしています。私の springXD と HDFS は別のマシンにインストールされています** が、hadoop fs ls /コマンドを正常に起動できます。

ストリームを作成してデプロイした後、次を使用してデータを投稿すると:

http post --target http://{ipaddressofhdfsmachine:8020} -- data"hello"

エラーをスローしています:

http エンドポイント http://{ipaddressofhdfsmachine:8020} にデータを送信できませんでした

使用localhost with port 9000すると正常に完了しましたが、hdfsには何も表示されませんでした。

ストリームを作成するには、同じマシンに hdfs とスプリングが必要ですか?

4

2 に答える 2

2

何が間違っているのかを知るのは少し難しいですが、私は知識に基づいた推測をしようとします. XD シングルノードまたは分散モードを実行しているかどうか、デフォルト構成を変更したか、ストリームをどのように作成したかはわかりません。参照ドキュメントはSpring XDから見つけることができます

私はメインOS(localhost)でXDを実行し、vm(node1)でHDFSを実行しているセットアップです。

デフォルトの hdfs namenode アドレスは hdfs://localhost:8020 であると想定されるため、変更する必要があります。この使用servers.ymlファイルと変更fsUriには (この yaml ファイル形式のスペースに注意してください)。

config/servers.yml:

# Hadoop properties
spring:
  hadoop:
    fsUri: hdfs://node1:8020

XD 単一ノードを開始します。

./xd-singlenode

次に、ストリーム コマンドを実行し、何かを書き込み、何が書き込まれたかを確認します。

xd:>hadoop config fs --namenode hdfs://node1:8020

xd:>hadoop fs ls --recursive true --dir /xd
lsr: `/xd': No such file or directory

xd:>stream create --name test --definition "http|hdfs" --deploy
Created and deployed new stream 'test'

xd:>http post --data "hello" http://localhost:9000
> POST (text/plain;Charset=UTF-8) http://localhost:9000 hello
> 200 OK

xd:>hadoop fs ls --recursive true --dir /xd
drwxr-xr-x   - jvalkealahti supergroup          0 2014-07-14 21:33 /xd/test
-rw-r--r--   3 jvalkealahti supergroup          0 2014-07-14 21:33 /xd/test/test-0.txt.tmp

xd:>stream destroy --name test 
Destroyed stream 'test'

xd:>hadoop fs ls --recursive true --dir /xd
drwxr-xr-x   - jvalkealahti supergroup          0 2014-07-14 21:33 /xd/test
-rw-r--r--   3 jvalkealahti supergroup          6 2014-07-14 21:33 /xd/test/test-0.txt

xd:>hadoop fs cat --path /xd/test/test-0.txt
hello
于 2014-07-14T20:51:27.097 に答える
0

Hadoop HDFS マシンではなく、XD マシンに投稿する必要があります。

XD HTTP レシーバーが POST を取得し、それを HDFS にルーティングします。

ノードが Hadoop 用にセットアップされ、シェルもセットアップされていることを確認してください。

たとえば、Pivo​​tal PHD 2.0 を使用している場合:

xd-singlenode --hadoopDistro phd20

xd-shell --hadoopDistro phd20

xd:> had config fs --namenode hdfs://MyPivotalHDServer:8020

Spring-XD の Github ドキュメンテーションで最新のものを確認し、常に改善されている最新の Spring XD を入手してください。 https://github.com/spring-projects/spring-xd/wiki/Sources#http

XD シェルを使用してサーバーでストリーム定義を作成するには

xd:> stream create --name httptest --definition "http | hdfs" --deploy

デフォルトのポート 9000 で http サーバーにデータを送信します。

xd:> http post --target http://localhost:9000 --data "hello world to hadoop from springxd"

次の YouTube ビデオで例を紹介します: http://youtu.be/41sIhawjHE0?t=37m6s

ファイルがいっぱいになって新しいチャンクにロールオーバーできるようになるタイミングに応じて、数回投稿する必要があります。または、ファイルをチェックするためにストリームを停止する必要があります。

最初にログに送信して、XD 出力ログで確認できるようにします。デバッグに適しています。

于 2014-07-23T05:57:46.010 に答える