Hadoop英語でチケットを書く元気が今ないので、日本語でメモ。最終的には私が見つけたわけではないけど。Cent6.3での話です。2NN等)が正しく正常終了できないという・・。rebootとか叩いた日にはプロセスは正常終了しません・・。Redhat系の場合、再起動はランレベルが6なわけで、例えばDataNodeの場合は以下のようになっています。見ると以下となっています。いうロックファイルが作られていれば、OS停止時にプロセスの停止をしてくれます。した時に以下のファイルが作られます。コメントに、以下の記述があるからです。INFOこーいうコメントを拾って設定しているなんて知りませんでした・・。$LOCKFILEう、うん・・。ないとダメだよね・・。直したらOS停止時にもきちんとSTOP処理が呼ばれるようになりました。CDH4のプロセス全部に当てはまるので、注意が必要です。Fluentdなんかタイトルがラノベっぽい。参加してきたので、その感想でも。--JRの駅からヒカリエに行く方法がわからず、20分ほどうろうろして最終的に駅員さんに聞きました。くやしくなんかないもん。さんの運用の話は、とても良かったです。入れてみて、それっぽく動いている。いうわけでもなく、きちんと検証したんだなーという感じが特に。́・ω・`)そしてangostura11さんがStreamに対してクエリを発行できるものを発表されていて、それってかなり便利なんじゃ。Javaかぁーとか思ったり、Spring_MTさんの話でFluentdがテスト用のドライバを用意しているという事を知り、じゃぁテスト書くの楽なのかもとか思って、会場の後ろの方でpluginをこそこそと書き始めていました。他の発表者の方も、短い時間でテンポ良くしゃべっていて、一部の内容は理解できなかったけど、タメになったなぁという感じです。--もうあちこちで言われているので、わざわざ書く必要もないかもですが、個人的にFluentdの良いところというのは、再送処理を現実的な範囲でそれなりに担保してくれるという事と、in_tailプラグインの存在だと思っています。Webの例なんかはあちこちに出ているので、他の・・例えば400台くらいのゲームサーバがあったとして(昔CEDECで発表されていたの、これくらいでしたよね)、それのログはローカルDISKに書き込むか、専用のログサーバに転送するか、もしくはその両方を行うとかやると思います。ここまでかっちりと作ってあるものなら、まぁ別にそれなりに動きますが、時としてローカルDiskにのみログを出力しているものがあります。ちなみに、(自分が知っている範囲で言うと)オンラインゲーム(ソーシャルゲームじゃないよ)のログというのは、ユーザー比率的にWebのログよりも圧倒的に多く、ちょっと追加しようものなら、ものすごい勢いでDiskを食いつぶしていきます。話はそれましたが、まぁとにかくローカルDiskに書き込むケースが多いわけです。これを何かしらの方法で集約するか、もしくはその各ホスト上で直接分散検索をしたりするわけです。いう問題があるわけです。集約するにしても、バッチ処理的に吸い上げるとスパイクな負荷がかかります。これもあちこちで言われている話なので言うまでもないですね。in_tailの何がすばらしいかというと、既に作ってあるアプリケーションに対して何も変更を行うことなく、外部プロセスでStreamで他所の場所に集約できるという点です。これ、かなり嬉しかったです。イイね!と話した記憶があります。標準のpluginで入れているのは実は凄く素晴らしい事なんだと思っているわけです。--話を聞いて、まぁ私もPluginを書いてみるかと思うわけですが、実際に書いてみると、コピペをしない場合は最終的にソースを見る羽目になるわけです。テストを書くにしてもドキュメントを見ると、out_fileのテストを参考にしなって書いてあるし、何を継承するかとか、親クラスは何のパラメータを持っているのかとか、ソースを見ないと分からない(分かりづらい)わけで。なんかは一部のTwitterと一部のBlogにちょろっと出てくるくらいです)、新しい発見があって、fluentdに限って言えば、pluginを1回書いた方が理解が深まるなと思いました。その肝心のpluginの作り方ですが、pluginを○時間で書いたとかいう話をPlugin製作者が言ってますが、実際そーいうレベルの時間で書くことができました。outputプラグインに関しては、驚くほど抽象化されているので、やりたい事だけをペイッと書くだけです。めんどくさい処理はMixinで提供されいるので、楽ちんです。このドキュメントに載っていないので、複数のPluginのソースを参考にして、fluentdやpluginのソースを検索しまくりでした。テストもドライバが用意されているので、TDDで書くことができます。--そんなわけで、ArangoDBに書き込むためのpluginを書いてみました。ソースはこちらに、Gemはこちらにあります。ArangoDBは最新版ではbulk_importを持っているのですが、rubyのclientであるashikawa-coreがまだサポートしていないので、1件ずつ書いています。(そういえば、Collection勝手に作るから、wait_syncのパラメータが必要かも)使い方はこんな感じです。SetTagKeyMixinをincludeしているので、それらのパラメータも指定する事ができます。詳しくはREADMEに記載しています。実際にArangoDBのWebUIから確認をすると、データが入っています。何かまずい点をみつけたら、ご指摘いただけると嬉しいです。fluentdFluentdに負荷をかけたいなと思いまして・・。前回作ったapache-loggenを使っても良いのですが、あれだと一度diskに出力する事になるし、Rubyなので複数コアがあるホストだと何プロセスも起動するのは嫌だなーと。いうわけで、今回はマルチプロセスで直接Fluentdにmsgpack形式のデータを投げるものを作ってみました。in_forwardで受け付ける形式は何個かあるみたいですが、今回は以下の形式のものを。}実際の実行画面のキャプチャです。́・ω・)parallelでforkするので複数コアを活用します。情報はUNIXSocketで親プロセスへ集めて表示はCursesを使っています。それぞれの子プロセスの情報とそれぞれを集計した情報を出力しています。灰色でマスクしているところには設定が表示されています。上記の画面では、毎秒10リクエスト、1リクエストで50レコード、つまり毎秒500レコード。それを4プロセスで送りつけているので、毎秒2000レコードの負荷をかけているものになります。全開でまわせば、L社の初期の流量くらいは出せると思います。負荷をかけるFluentdのホスト名。デフォルトはlocalhost。負荷をかけるFluentdのポート番号。デフォルトは24224。1秒間に送信するリクエスト数。デフォルトは制限無し。1回のリクエストで送信するレコード数。いわゆるArrayの要素数。負荷をかけるプロセスの数。ログの形式を指定する。これは会社依存のオプションなので詳細は無し。ダミーログの時間を元ファイルの時間のまま送る場合に指定する。指定しなければ現在の時間に直して送信される。アプリの実際のログを元に生成しています。このままでは公開はできないのですが、ここを除去すれば問題ないので気が向いたらやろうかなと・・。17:47日記2013前期開発CentOS6.3でSSHの公開鍵認証、パーミッションの設定大丈夫なのになんでログインできないのかなーと思ったら、SELinuxが原因でした。ぐぐると、SELinuxをoffにする設定が多いのですが、せっかくなのでSELinuxの設定をどうすれば良いのか試してみた。/root/.sshrootの場合は、こんな感じで良いらしい。3行目だけで良いらしいです。以下だけでできるっぽい。/root/.sshSELinuxわからんぷい。Logohcj2013wお疲れ様でした。Ust録画や講演資料は殆ど公開されているようです。特別企画として、NHNのなんとかモリスさんという方と、TreasureDataのりぴーなんとかさんという方がClouderaをスポンサーにつけてHiveTシャツを作ったそうで、私も1着いただきました。懇親会でHiveの愛を語ると戴けるという体を取っていたのですが、私はキーノートの前に戴いてしまったので、ここでHiveの愛を語ってみようと思います。