DataNode やTaskTracker の効率の良い監視方法について

179 views
Skip to first unread message

Saburo

unread,
Jan 30, 2013, 2:52:44 AM1/30/13
to hado...@googlegroups.com
こんにちは、

Hadoop の DataNode やTaskTracker の効率の良い監視方法について、
アイデアをご教授頂きたく、質問を post させて頂きました。

NameNode は、それなりにFail Over 対策を行いますし、巷に情報も
ありますので別段懸念は無いのですが、DataNode やTaskTracker
の状態監視をどうしたものか思案しています。

Hadoop の機能としてカバーされますから"緊急"ではありませんが、
問題が発生した状況を、気づかずそのまま放置する訳にはいきません。

WebUI で随時確認は出来ますが、能動的な作業が必須になりますし、
出来れば"障害の発生とその通知"をシステム側からさせたいと思います。

(zabbix や Ganglia を使った運用の部分では無く、)各プロセスの状態を
検出する直接的な手段について、選択肢は、下記があるかと思います。

1. Hadoop のログを随時解析して dead を検知する
2. DataNode やTaskTrackerが稼動するNodeでjava/jps を行い
   プロセスの生死を確認する
3. NameNode の WebUI をプログラムでたたいて、Dead Node の値を
   検出する

但し、それぞれリスク等ある為、一寸選択し辛いものと感じています。
理想としては、API として、NamdeNode が認識している DataNode や
TaskTracker の一覧が取れればもっともシンプルではないかと感じて
います。

近い感じでは、NameNode の JMX から、
Hadoop
- NameNode
-- FSNamesystemState
--- 操作
---- numDeadDataNodes

で、Dead DataNode(s) が取得出来るようですから、ここが 0 以外に
なったら通知を出して、その後、手作業で何処が死んだか確認する
と言うのが割と近い手段かなと感じています。

もし、他にもっと適切な手段があれば、ご教授頂きたいと考えています。

Sho Shimauchi

unread,
Jan 30, 2013, 4:01:43 AM1/30/13
to hado...@googlegroups.com
Saburo さん、

Cloudera の嶋内と申します。
弊社が公開している管理ソフト Cloudera Manager Free Edition を使えば、REST API によってjson形式でサービスの死活情報を取得することが可能です。
'http://{Cloudera Manager のサーバアドレス}/api/v2/clusters/{クラスタ名}/services/{サービス名}/roles' と入力すれば、以下の結果が返ってきます(分かりやすくするため情報量を削減しています)
単純に停止しているかどうかのみを確認するのであれば roleState を、それが異常なのかを検知するには healthSummary を追加で監視すれば Saburo さんが考えている監視については実現可能かと思います。

{
  "items" : [ {
    "name" : "hdfs1-NAMENODE-1",
    "type" : "NAMENODE",
    "configStale" : false,
    "hostRef" : {
      "hostId" : "nn1.localdomain"
    },
    "healthSummary" : "GOOD",
    "roleState" : "STARTED",
    "serviceRef" : {
      "serviceName" : "hdfs1",
      "clusterName" : "TestCluster"
    },
    "haStatus" : "ACTIVE"
  }, {
    "name" : "hdfs1-DATANODE-1",
    "type" : "DATANODE",
    "configStale" : false,
    "hostRef" : {
      "hostId" : "dn1.localdomain"
    },
    "healthSummary" : "GOOD",
    "roleState" : "STARTED",
    "serviceRef" : {
      "serviceName" : "hdfs1",
      "clusterName" : "TestCluster"
    }
  }, {
    "name" : "hdfs1-DATANODE-6",
    "type" : "DATANODE",
    "configStale" : false,
    "hostRef" : {
      "hostId" : "dn6.localdomain"
    },
    "healthSummary" : "BAD",
    "roleState" : "STOPPED",

    "serviceRef" : {
      "serviceName" : "hdfs1",
      "clusterName" : "TestCluster"
    }
  }, ]
}

API の詳細については下記ページをご覧ください。
Cloudera Manager については下記ページをご参照ください。




2013/1/30 Saburo <sf0...@gmail.com>


--
 
---
このメールは Google グループのグループ「Hadoopユーザー会」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、hadoop-jp+...@googlegroups.com にメールを送信します。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
 
 



--
Sho Shimauchi
Customer Operations Engineer, Cloudera
Reply all
Reply to author
Forward
0 new messages