2012-06-27 13 views
6

私はHaseop MapReduceジョブをローカルマシン上で実行しています(疑似分散)。これはHBaseとの間で読み書きを行います。私は断続的にコンピュータが単独で他の重要なプロセスが実行されていないままであっても、ジョブを中断するエラーを取得しています。以下のログを参照してください。 ZooKeeperの出力ジョブが失敗した実行後に成長しているクライアントの数と、このようなルックスを死亡した後にダンプします。/hbase + ConnectionのConnectionLossがピアによってリセットされましたか?

HBase is rooted at /hbase 
Master address: SS-WS-M102:60000 
Region server holding ROOT: SS-WS-M102:60020 
Region servers: 
SS-WS-M102:60020 
Quorum Server Statistics: 
ss-ws-m102:2181 
    Zookeeper version: 3.3.3-cdh3u0--1, built on 03/26/2011 00:20 GMT 
    Clients: 
    /192.168.40.120:58484[1]\(queued=0,recved=39199,sent=39203) 
    /192.168.40.120:37129[1]\(queued=0,recved=162,sent=162) 
    /192.168.40.120:58485[1]\(queued=0,recved=39282,sent=39316) 
    /192.168.40.120:58488[1]\(queued=0,recved=39224,sent=39226) 
    /192.168.40.120:58030[0]\(queued=0,recved=1,sent=0) 
    /192.168.40.120:58486[1]\(queued=0,recved=39248,sent=39267) 

私の開発チームは、現在のHBase 0.90.1ので、CDH3U0分布を使用しています - これは最近のリリースで解決された問題ですか?現在の設定でできることがあるかどうか?私はちょうどZKを再起動し、定期的にクライアントを殺すことを期待するべきですか?私は自分の仕事が一貫して完了できるような合理的な選択肢を開いています。

2012-06-27 13:01:07,289 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server SS-WS-M102/192.168.40.120:2181 
2012-06-27 13:01:07,289 INFO org.apache.zookeeper.ClientCnxn: Socket connection established to SS-WS-M102/192.168.40.120:2181, initiating session 
2012-06-27 13:01:07,290 WARN org.apache.zookeeper.ClientCnxn: Session 0x0 for server SS-WS-M102/192.168.40.120:2181, unexpected error, closing socket connection and attempting reconnect 
java.io.IOException: Connection reset by peer 
    at sun.nio.ch.FileDispatcher.read0(Native Method) 
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21) 
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:202) 
    at sun.nio.ch.IOUtil.read(IOUtil.java:169) 
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:243) 
    at org.apache.zookeeper.ClientCnxn$SendThread.doIO(ClientCnxn.java:858) 
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1130) 
[lines above repeat 6 more times] 
2012-06-27 13:01:17,890 ERROR org.apache.hadoop.hbase.mapreduce.TableInputFormat: org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getZooKeeperWatcher(HConnectionManager.java:991) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:302) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:293) 
    at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:156) 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:167) 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:145) 
    at org.apache.hadoop.hbase.mapreduce.TableInputFormat.setConf(TableInputFormat.java:91) 
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:62) 
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) 
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:605) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:322) 
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1115) 
    at org.apache.hadoop.mapred.Child.main(Child.java:262) 
Caused by: org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase 
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:147) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getZooKeeperWatcher(HConnectionManager.java:989) 
    ... 15 more 
Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase 
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:90) 
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:42) 
    at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:637) 
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.createAndFailSilent(ZKUtil.java:902) 
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:133) 
    ... 16 more 
+0

を消えてしまいますベリファイを作ります指定されたマシンではIOが多すぎます。あなたはhbase/zookeeper/hadoop M/Rやその他のものをあなたのマシン上で噛むことができる以上に噛んでいるかもしれません。あなたはgangliaをインストールしていますか?あなたが使用している処理の量と、IOの壁やスラッシングに当たっているかどうかを示すことができます。 – Mike

+0

初期の記述に対する1つの修正案:ジョブの失敗後にクライアント接続の数が永久に増加しませんでした。 HBase Jiraに記載されているバグによると、ジョブが正常に完了すると、これが起こることがあります。 – Cyranix

+0

@Mike同時に重要な結果をもたらす他のプロセスは実際に実行していませんでしたが、システムリソースを監視することは賢明です。幸運なことに、私のマシンは手元にあるタスクのために十分に重いようです。 – Cyranix

答えて

1

私は過去にこれに似た問題がありました。 HBase/Hadoopで多くの時間を過ごすと、実際の問題を指摘していないエラーメッセージが表示されるので、あなたはそれを創造しなければなりません。

これは私が見つけた、それはあるいはあなたには適用されない場合がありますものです:

あなたは、テーブルへの接続をたくさん開いているし、終了時に、あなたはそれらを閉じていますか?これは、MapperやReducerでスキャン/取得を実行している場合(これが回避できればやりたいとは思わない)、MRジョブで発生する可能性があります。

また、マッパーやリデューサーが同じ行に多く書くと、同様の問題が発生することがあります。あなたの書き込みを配布したり、問題を減らすために書き込みを最小限に抑えてください。

また、MRの仕事の性質について詳しく説明してもらえます。それは何をするためのものか?サンプルコードがありますか?

+0

これは、OpenNLPの文分割器を使用して、文書の控えめなコーパスから文の非常に大きなコーパスを生成する仕事です。それぞれの文は出力テーブルで独自の行を取得し、ソースドキュメントもHBaseテーブルにあるため、私はただ1つのスキャンをセットアップし、そのScanを使用するためにTableMapReduceUtilでジョブを設定します.Patを生成するTableMapperのサブクラスは、 、およびIdentityTableReducerが含まれます。しかし、TableOutputFormatを使用しているときにZK接続に関連するJiraの問題がリークしていました。 – Cyranix

2

私は、ZooKeeperのデフォルトの制限値の下限に達していたことがわかりました(これは、現在のリリースで増加していると思います)。私は、HBaseの-site.xml内上限設定しようとした:

<property> 
    <name>hbase.zookeeper.property.maxClientCnxns</name> 
    <value>35</value> 
</property> 

をしかし、それがあった場合を除き、(も?)動作していないようでしたzoo.cfgで指定:

# can put this number much higher if desired 
maxClientCnxns=35 

今すぐジョブを数時間実行することができ、ZKクライアントリストのピークは12エントリになります。次のパラメータの

0

チェック:

のZooKeeperセッションタイムアウト(zookeeper.session.timeout) - >の増加とテスト

チェック - >増加と

飼育係のticktime(tickTime)をチェックしてみてくださいulimit(Linuxコマンドでhadoop/hbaseが実行されているユーザを確認)specificat

ulimitの場合、followinパラメータは多少高い値に設定する必要があります。

開いているファイルは、このやや32K以上

最大ユーザプロセスを作るこれらの変更を行った後、このように無制限

は、おそらくエラーが、私は時にそこに接続損失を見てきました

関連する問題