Dremelの論文読んで、Impalaのアーキテクチャも少し調べてみた
最近、趣味で検索エンジンみたいなの作ってるし、仕事でも大規模データを扱う話が増えてきた。初心者向け分散処理勉強会なんてのも有志で立ち上げて色々勉強中。
さて、ちょっと前にClouderaがImpalaなるものを出した。Googleが2010年に発表したDremelというシステムに関する論文にインスパイアされて作ったらしい。
勉強会のネタにもなるし、まずはDremelの論文を読んで分かる範囲で説明して、その後Impalaのアーキテクチャについて調べてみる。
(間違い等があればご指摘頂けると助かります)
続きを読む「マイIP」を使って自宅Linuxサーバーに固定IPを割り当て
自宅サーバーに外からアクセスできるようにしたい
カフェとかで仕事したいしー。考えた選択肢は以下の2つ。
- 固定IPを取得
- IPv6で接続
以前OCNのIPv6サービスを使っていたけど、安定感とかその他で何となく使いづらかった記憶があったので、今回は固定IPを取得する方法にした。
固定IPを振ってもらえるプロバイダーに切り替えるって手もあったけど、今回はインターリンクの「マイIP」というサービスを使うことにした。
ちなみに、インターリンクは以前からずっと固定IPのサービスを結構全面に押しているプロバイダー。10年くらいまえに自宅サーバーを運用してた時もここを使っていたので、再びお世話になることに。
ウサギィさんに遊びに行った
誘われたいきさつ
見覚えのあるアイコン
仕事上で仲良くさせてもらっている人から
「知り合いで面白い会社があるんですけど、今度遊びに行きません?」
みたいに誘われた。こういう話は基本的に断らないので二つ返事でOKした。ちなみに会社名を聞いてみると
「ウサギィっていうんですけど」
うーん、どっかで聞いたことあるなぁと思って、ググってみたら、何か見覚えのあるうさぎの絵。
でも、どこで見たのか思い出せずに数日位経ったら、TwitterのTLで見覚えのあるアイコンが、どうやらフォローしてたらしいしフォローもされていたらしい。
世間って狭い
なんでウサギィさんをフォローした(されたのか)は覚えていない。
ちなみに、その誘ってくれた人とウサギィの社長の町さんは麻雀仲間だとか。
再び自宅サーバー族に
メモリが欲しい
過去何回か、「検索エンジンを作る(予定)」ってエントリーを書いている。詳しくはそっちを見て欲しいけど、Apache NutchとHBaseをベースとした検索エンジンみたいなのを作っている。直近の回でHBaseをスタンドアローンモードから分散モードに移行したんだけど、メモリ2GBのVPS x 2台だとほとんどまともに動かない。
2GBのインスタンスを沢山用意すればいいかなとも思ったんだけど、HDFSのデータノードとHBaseのリージョンサーバーは同一ホストが良いらしいし、そもそもほとんどのプロセスは、1つのプロセスで2GB以上のメモリが必要っぽい。
サーバー買った!
結論から言うとサーバーを買った。
てことで、神田の「おっと」で中古サーバーをとりあえず2台買いましたよ。合計104,580円也・・・
自宅サーバーを持つなんて何年ぶりだろう。
スペック
- CPU: クアッドコア x 2
- メモリ: 24GB
- HDD: 146GB x 2
今後
あと1〜2台欲しい
これで問題なく稼働するようになったら、もう1〜2台欲しいなぁ。でも、机の上に1Uサーバー4台とかちょっと困る。重さ耐え切れるんだろうか・・・あと、電気代いくら位かかるのかな。
誰か、サーバー置き場をシェアしません?
自宅にあると便利な半面、うるさかったり、場所が必要だったり、色々面倒。お金に余裕ができたら、田舎に安いアパートでも借りてそこで運用する事も検討中。誰か相乗りする人いませんか??
出来ること、あげられるもの、欲しいもの、して欲しいこと
give and take
最近、ココナラとかWishScopeみたいに自分の出来ることを登録して、安価に(あるいは無料で)簡単な仕事を受ける、みたいサービスがちょこちょこあって、自分もたまに使ってるんだけど、こっちのブログにも同じようなことを書いておこうと思った。広い意味でのスキルセット・履歴書兼Wishリストって感じ。
個人的には少額のお金をもらうよりは、その人に色々意見をもらったり、その人に出来る事を何かしてもらう、金銭以外の give and take の方が嬉しいです。
提供できること
サーバー・インフラの構築とか
自分がつながっている人は技術者が多いから、この辺は大体問題無いと思うけど、例えばこんなの出来ます。
- Amazon EC2のインスタンス設定、ネットワーク設定
- ELB(ロードバランサー)の設定
- サーバー監視の設定
- メールサーバー、アーカイブ、スパムフィルターの設定
- MySQLのチューニング
インフラ関連では、O'Reillyさんで連載書かせてもらってますよっと(一応宣伝・・・)。
英語
海外で仕事してて、技術書とかビジネス書だったらさらっと読めるけど、日本生まれ日本育ちなので、発音とか会話はイマイチ。例えばこんなことなら出来るかなー。
- 英文の資料の調査
- 英語のMLに代理で質問
個人的な方針により、基本的には翻訳はやんない予定。
飲み会の幹事とか勉強会の企画
何かしらないけど、みんな面倒臭がるせいか、飲み会の幹事が自分に回ってくる事が多いような・・・
あと、#rpscala という勉強会の最初期にはATND立てたりWiki更新したりよくやってたような。最近は参加するだけだけど(@qtamaki さん、ありがとうございます!)。最近は #bunsan っていう勉強会を始めたり。
飲み会やりたい!勉強会始めたい!って人は声をかけてもらえれば、面倒な作業は代行・・・するかも。
その他
- ベース弾く → 最近あまり弾いてないけど、そんな難しくない曲なら&完コピとかを求められないなら、いけるはず・・・
- 手作りの味噌 → うちの親が最近味噌作りにはまってるらしく、結構たくさんあるので、近くに住んでる人はおすそわけします。
他にあれば随時追記予定。
欲しいもの
サーバーとか
最近分散処理からみでクラスタの実験とかしてるんだけど、手持ちの台数が少ない&メモリが少ない、という理由であまり捗らず。
使ってないサーバーを安く売ってくれる人とか、安いVPSとかクラウド環境知ってれば教えて欲しいっす。
1台あたりメモリ4GBは欲しいdeath・・・
MovableTypeで出来たブログをWordPressに移行してくれる人
昔書いていたMovableTypeで出来た個人ブログで、以下の問題が。
- sqliteのファイルに不整合があるっぽい(外部制約か何か)
- 大量のスパムコメントにより、サイズが大きくなってる(2GB)
これはoDeskで頼もうかなぁとも考えているけど、もし上の問題を解決してWordPressに移行してもいいよって人がいたら、是非お願いしたいです。
ビジネスとはこういうもんだ!って教えてくれる人
今年から本格的に個人で仕事することになったものの、ビジネスって何?美味しいの?って感じなので、色々厳しい指導してくれる人がいればよろしくお願いします!自分でも勉強はしてるんですが。・・・
最先端の技術の動向
ビッグデータとかモバイルとかそういう流行りモノじゃなくて、まだ研究段階のものとかでもいいので、そういう系統で面白い論文を教えてくれたり解説してくれる人っていませんか。
田舎の一軒家
いや、これは願望です。来年くらいには東京から脱出したいな。
まとめ
こうやって書いてみると、自分が人に役に立てる分野って中々少ないね。逆に、欲しいものも具体的なものは少なくて、(ここには書いていないけど)何か漠然としてものばっかりのような・・・
上に書いたような事に興味を持って下さった方がもしいましたら、是非 @k4200jp までご連絡を〜。
検索エンジンを作る(予定)その4 〜 NutchをHBase分散モードで動かす
NutchがHBaseのクラスターを使うようにする
前回、HBaseを分散モードに移行したので、NutchがそのHBaseのクラスターを使うようにする。
Nutch側の設定変更は1点だけ。
NUTCH_HOME/runtime/local/conf/hbase-site.xml の内容を、前回のエントリーで書いたものと同じにする。HBaseのどれかのノード上でNutchを動かすのであれば、/etc/hbase/conf/hbase-site.xml からシンボリックリンクを貼ればOK。
データ移行
次に、スタンドアローンモード時のデータを分散モードHBaseに移行する。やることは簡単で、以下の2つだけ。
ディスクの空き容量が十分かを確認してから実施する。
export
旧インスタンスを起動し、以下のコマンドを実行。
$ hbase org.apache.hadoop.hbase.mapreduce.Export webpage /data/export/webpage
webpage というのが、エクスポートするテーブル名。その次がエクスポート先のディレクトリ。ディレクトリは事前に存在していてはいけない。上の例の場合、/data/export まで作成しておけばOKで、/data/export/webpage は作っちゃだめ。
終了したら旧インスタンスは停止し、データディレクトリも削除してOK。
移行先でテーブル作成
インポートなんだけど、事前にテーブルが存在していないと以下の様なエラーが出る。
13/02/06 09:54:21 WARN client.HConnectionManager$HConnectionImplementation: Encountered problems when prefetch META table: org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in .META. for table: webpage, row=webpage,,99999999999999
ということでテーブルを事前に作成する必要がある。
TODO: テーブル構造のエクスポート→インポートが出来ないか後で調べる。
Nutchの場合初回起動時にテーブルが作成されるので、自分の場合、最初にnutch injectだけ動かして、その後テーブルをtruncateという作業を行った。
import
注意点は2点。
- mapred ユーザーで実行する
- エクスポートしたデータの指定方法はfile://で始める
具体的なコマンドは以下の通り。
[root@host ~]$ sudo -u mapred hbase org.apache.hadoop.hbase.mapreduce.Import webpage file:///data/export/webpage/
HBase 0.90.4のバグ?
データ移行とは直接関係ないけど、Nutch 2.1 + HBase 0.90.6(分散モード)で動作させる際、1つ問題があったので書いておく。
Nutch 2.1のパッケージにはhbase-0.90.4.jarが含まれているんだけどこれに問題があるみたいで、NutchからZooKeeperへの接続数が際限なく増えていき、最大数に達して異常終了する。
解決策は、hbase-0.90.6-cdh3u5.jar に入れ替えること。
詳しくはこの辺。
まとめ
次回はチューニングとか、実運用に関連することを書こうかなと。