2016-03-22 5 views
2

を立ち往生:Accumulo BatchWriterの近く()私はaccumuloに書き込むBatchWriterを使用する場合、以下のように、私は、コードを使用して、例えば、永遠

BatchWriter writer = 
    conn.createBatchWriter("table", memBuf, timeout, numThreads) 

writer.add(mutation); 
writer.close(); 

私は(Javaコードはwriter.close」で立ち往生することを考え出しました) "私は" writer.add(突然変異) "を持っています。しかし、私が "writer.add(突然変異);"を取り除くと、 "writer.close()"に行きました。誰もBatchWriter close()の問題を解決する方法を知っていますか?

答えて

2

Accumuloモニタでエラーがないかチェックしてください。 1つの突然変異だけを追加すると、BatchWriterを閉じると突然変異がサーバに送信されます(パフォーマンス上の理由から突然変異がまとめられます)。クライアントは、少なくとも1つのTabletServerからの応答を待っている可能性があります。

また、クライアントとテーブルサーバーからスタックダンプを収集して、コードが現在スタックされている場所(例:jstack)を表示することもできます。

+0

あなたの答えをありがとう。ええ、私の同僚はtserverのログをよく確認してくれると言っています。私の問題は、私が累積で悪いテーブルを持っていたことでした。私が突然変異を書き込もうとすると、それは単にハングし、ログはコンソールに入れられませんでした。不良テーブルを削除して新しいテーブルを作成した後、問題は解決されました。 – user3502577

+0

奇妙な、どのバージョンのアキュムロ? Accumuloのログがまだ残っている場合は、[email protected]までご連絡いただくか、JIRA https://issues.apache.org/jira/browse/ACCUMULOに問題を作成してください。 – elserj

+0

私のバージョンは1.6です.5。私はtserverのログを調べましたが、実際には悪いテーブルに関連するものは見つかりませんでした。テーブルが悪いときは、ただ静かになってしまいました。これは良いことではありません。私は自分のコンソールで例外を見ることができません。また、accumuloモニターまたはtserverログのその悪いテーブルに関連するエラーも警告もありません。うまくいけば、それはあなたがaccumuloを改善するのに役立ちます:) – user3502577

3

(注:十分でない担当者をコメントとして追加する。)

追加のデバッグのヒント:デバッグモード(accumuloシェルでタイプdebug)をオンにすることができaccumuloシェルを使用します。手動でキーを挿入したり、挿入しようとしている行を単純にスキャンしたりすることができます。デバッグ情報は、あなたのコマンドを実行するためにaccumuloが通信している一連のサーバを表示します。これにより、問題のあるホストマシンにすばやくアクセスできます。

関連する問題