タグ

ブックマーク / open-groove.net (15)

  • HBaseのレプリケーション – OpenGroove

    またまたHadoop Hacksからのまるまる引用です。 いつかお世話になるかもしれないのでここに書かせてもらう。 HBaseのクラスタレプリケーション HBaseのクラスタレプリケーションは、MySQLのmaster/slaveレプリケーションと同様の仕組みで行われる。MySQLSQL文の代わりにWALに書き込まれているPut/Deleteなどのデータを利用する。(WAL: Write Ahead Log 書き込みログ。トランザクションを保証するための、ログ先行書き込み機能。RDBMSにも備わっており、一般的な概念。HBaseでは「HLog」と呼ばれ、クラッシュリカバリに必要とされる) この機能を有効にすると、マスタークラスタのHLogを読み込んでテーブル毎にバッファリングし、HBaseクライアントAPIを使ってスレーブクラスタへ書き込む。HLogを読み込む際はレプリケーション対象とな

  • HBaseのメジャーコンパクションとか – OpenGroove

    HBaseの、コンパクションの管理についてまとめてみる。 ほとんどのユースケースではデフォルトの動作で十分だが、ケースによっては分割・コンパクションストームという現象を招く問題がある。リージョンがほぼ同じぺースで大きくなっていく場合、リージョン群ほぼ同じタイミングで分割する必要が生じることになる。分割されたリージョンを書き直すために必要なコンパクションによって、激しいディスクI/Oのスパイクを引き起こしてしまう。対策として、分割処理の自動実行を無効化しhbase.hregion.max.filesizeの値を非常に大きな値(100GBなど)にしておいて、手動もしくはCronAPIをつかってsplitとmajor_compactを実施する、という考え方がある。 コンパクションにはマイナーコンパクションとメジャーコンパクションの2種類がある。 マイナーコンパクション あるStore内で、St

  • Embulkでデータロードする(3) – MariaDBからHadoop HDFS – OpenGroove

    Embulkによるデータロード、今回はMariaDBからHadoop HDFSというパターンでやってみる。環境はCentOS6.6 CDH5.4のHadoop擬似分散環境で、MariaDBも同居。Embulkのインストールまでは過去記事と全く同様。 プラグインのインストールから開始。MariaDBのinputとしてmysql用のプラグインを使用する。 $ embulk gem install embulk-input-mysql $ embulk gem install embulk-output-hdfs MariaDB側対応。この辺も前回までの投稿と同じ。 CREATE TABLE embulktest.access( country_code varchar(10), access_id int, access_time varchar(30) ); CREATE USER embu

  • EMRでHiveメタストアにRDSを利用する – OpenGroove

    EMR (Amazon Elastic MatReduce)ではHive用のメタストア(MySQL)がセットされているが、外部メタストアを利用すれば、EMRを起動していないときでもメタストアの情報を別途保持しておくことができて再利用可能、というメリットがある。というわけで、メタストアとしてRDSを使ってみる。 1. AWSコンソールから、RDSをシングルで起動する。RDSの起動方法は割愛(カテゴリAmazon EMRにて投稿してます)。マシンタイプはマイクロでOK。 2. hive-default.xmlをローカルで編集。書く内容は、マシン上でMySQLをメタストアとする場合と変わらない。javax.jdo.option.ConnectionURLに、上記で作成したRDSのエンドポイントを記載する。適当に名前を付けてS3にUplodadしておく。ここではmy-hive-site.xmlとす

    rsakamot
    rsakamot 2016/08/02
  • ほぼやけくそHive Hacks – OpenGroove

    Hive Hacksあれこれ。内容はほぼO’REILLY Hadoop Hacksからの引用そのまんま。ただの個人メモなのだが、ずうずうしく公開させてもらいます。いろんなところに記録しておいてもすぐに「あれ、あのメモどこやったっけ」となるのでここに書くのが一番なんだよね。書いたからって理解できるわけでもないんだが… (初めに書いておくと、この投稿長いです) 基原則的なこと。 ●UPDATEは回避する 処理速度が遅延するため、UPDATEを多数含むようなSQLをHiveSQLに変換することは避けるべき ●MapReduceタスクのオーバーヘッド Hiveは「高スループットを目指す処理には向いているが、低レンテンシを目指す処理には向いていない」というMapReduce処理の特徴を引き継いでいる。MapReduceタスクのオーバーヘッドが付きまとうことを念頭におく。 ●並列分散ができない処理

  • MySQLのibdataファイルを複数表領域に変更する – OpenGroove

    InnoDBのibdataファイルのサイズは、放っておくと相当肥大化してしまう。10G、20Gなんてフツーにいってしまう。30Gくらいになる例もある。もっと大きくなろうと思えばなれるんだろう。まったく怪物みたいなヤツだな・・・。 と、いうわけで、通常のibdataファイルを複数表領域にしてみる。複数表領域にするときのパラメータはinnodb_file_per_table。通常のibdataファイルでDBが稼働している状態から、複数表領域に変更するときの手順メモ。詳しい仕様の話は割愛させていただく。早く寝たいので。 以下、my.cnfの記述例一部。複数表領域に変更してもibdataファイルは消えない。autoextend:max:4096Mなどと記述することでサイズを制限しておく。 innodb_data_file_path = ibdata1:100M:autoextend:max:409

  • Hiveのメタストアについておさらい – OpenGroove

    Hiveのメタストアは、何かにつけて、ハマる。分かっているつもりで分かってなかったことも、未だにある。このブログ内や他の場所のあちこちに気づいたことを書いているが、散乱しているのでここでまとめてみる。 以下、過去記事からの引用。 メタストアサービスについて Hiveではメタストアサービスと呼ばれるものを利用する。メタストアサービスはテーブル定義、ここでは「テーブルとHDFS上のデータの対応情報」を管理する。メタストア自体はRDBMSを使用してその情報を管理している。メタストアサービスは以下の3種類があり、要件によって使い分ける。 組み込みメタストア もっとも手軽に利用できる形態。HiveにはJavaで実装されたDerbyというDBが組み込まれており、そのDBをメタストアリポジトリとして利用する。hiveコマンド起動によりDerbyも起動する。同時に一人のユーザーしかHiveを利用できない、

    rsakamot
    rsakamot 2016/04/27
    うーん
  • Hadoop YARN覚え書き | OpenGroove

    Hadoop YARNの仕様とか設計について過去記事に書いたことがあるんだけど、も一回まとめ、というか覚え書き。 YARNではスロット数を制御するプロパティがなくなった、とドキュメントや参考書にある。これはMRv1でのmapred.tasktracker.map.tasks.maximum ,mapred.tasktracker.reduce.tasks.maximum のことだろう。実際にはMRv2に対応するmapreduce.tasktracker.map.tasks.maximum ,mapreduce.tasktracker.reduce.tasks.maximumというプロパティが存在しているが書いても無視されるらしく、何故これらが残っているのか謎。ともあれYARNではスロットの概念が消滅した代わりにコンテナという概念が採用され、ジョブのプロセスはコンテナ内で実行される。コンテナ

  • Hadoopチューニング – mapred.map.tasksの意味 – OpenGroove

    Hadoopパラメータのコネタ。 mapred-site.xmlのパラメータで、mapred.map.tasksというのがある。 実は最近まで、mapred.tasktracker.map.tasks.maximumとの違いがよく分からないままスルーしていた。 mapred.tasktracker.map.tasks.maximumは各スレーブノードにおいて同時に並列実行可能なタスク数で、物理搭載コア数を元に適宜値を割り当てる。この辺の基準は参考書その他情報源に書かれている基的なことなのでここで改めて書かないが、ではmapred.map.tasksは一体何なのか。参考書にも「ジョブに対するmapタスク数」としか書かれていなくて、それじゃ意味がわからないんだよなーw と、思っていたが、以下の説明でどうにか腑に落ちた。 mapred.tasktracker.map.tasks.maximum

  • Postfixのメール転送設定 – OpenGroove

    「メール転送だったら/etc/aliasesに転送先を書いてnewaliasesコマンド実行、でいいんでしょ」 とバカのひとつ覚え状態だったが、Postfixの場合微妙に違うようだ。 メール転送機能であるaliasesは、MTA共通の/etc/aliasesとPostfix用の/etc/postfix/aliasesがある。 Postfixを利用している場合でも/etc/aliasesで問題ないようだが、一応きちんとやると どうなるかメモしておく。ただし実際やることはsendmailの場合とほぼ同じ。 1. 以下のように、aliasの定義を/etc/postfix/main.cfに記述する。 alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases 編集後はリロードを実行。 # pos

  • いつか役立つfuserコマンド – OpenGroove

    個人的に普段あまり利用することがないのだが、覚えておきたいfuserコマンドの使い方。 様々な場面で利用する物だと思うが、特にumountでアンマウントできない、 ファイルやディレクトリを削除できない、などという時には、特に。 例えば以下のような状況でイラッとくることがあるので、対処法を書いておこう。 # umount /mnt umount: /mnt: device is busy 上記のように”device is busy”(デバイスは使用中です)メッセージが出てしまった時に umount -lで強制的にアンマウントしてしまったことがあるが、来であれば対象の ファイルシステムを掴んでいるプロセスを割り出してkillするのが正しい手順なのだろう。 (ちなみに-l は”lazy”のことで、「強制的に」とは少し意味合いが違う。ひと言でいうと ファイルシステムから切り離してからアンマウント

  • ssh&sudoでエラーになったら – OpenGroove

    sshでリモートホストにアクセスしてsudoする処理があるスクリプトをcronにしかけると、以下のエラーになってしまう。 sudo: sorry,you must have a tty to run sudo. tty(端末)を持っていない状態でsudoしてるから。これは/etc/sudoersの編集で簡単に解決する。 # visudo Defaults requiretty ↓ ↓ ↓ #Defaults requiretty or Defaults !requiretty 特定のユーザに対して許可したかったら以下のように。 Defaults:system_user !requiretty 別にここでいちいち書くまでもないことだが、解決してうれしかったのでメモ。 追記 -ttオプションをつければ、sudoersを編集しなくてもsudo実行が可能。 $ ssh -tt remote-hos

    rsakamot
    rsakamot 2015/06/15
  • ディレクトリのシンボリックリンクでハマったこと – OpenGroove

    ファイルのシンボリックリンク作成でハマった記憶はあまりないが、ディレクトリでつまづいた。 例えば、リンク元と同名のディレクトリが存在しない状態で以下のコマンド実行、ならうまくいく。 $ ln -s /usr/local/mysql/logs/ /backup/mysql/logs もしくは、/backup/mysql/がカレントディレクトリとして。 $ ln -s /usr/local/mysql/logs/ logs が、もし同名のディレクトリが存在する状態で上記コマンドを実行すると、/backup/mysql/logs/ ディレクトリの配下に/usr/local/mysql/logs/のシンボリックリンクができてしまう。 ディレクトリのシンボリックリンクは「/(スラッシュ)」のありなしで挙動が全然違うので、要注意。 例えば、”ln -s /usr/local/mysql/logs/ /

    rsakamot
    rsakamot 2015/05/29
    ディレクトリのシンボリックリンク
  • LDAPでホスト毎のアクセス制限をするには – OpenGroove

    標題のテーマ、メジャーなようでいてマイナーらしく、探すのにちょっと手間取った。。 結論から言うと、hostアトリビュート、もしくはdescriptionアトリビュートを利用する。 概要をざっくり書くと、LDAPサーバ側でユーザのエントリにhostまたはhostグループ (この場合description)の属性値を追加しておいて、LDAPクライアント側の/etc/ldap.confの pam_filterで、サーバ側で設定した属性値による制限をかける。するとそのホストは適正な アトリビュートを保持するユーザのみがログイン可能となる。 追記(2011/05/28) hostアトリビュートを使用する場合、/etc/ldap.confにてpam_check_host_attr yesとする。 LDAPサーバ側でやること ここではdescriptionアトリビュートを利用する方法を書いておく。 管理

  • ldapmodify: ldifファイルの書式 – OpenGroove

    標題の件、何度かやってもすぐ忘れてしまうのでメモ、、、 ldapmodifyでやれることは、replaceで「置換」、addで「追加」、deleteで「削除」。 (こんな当たり前のことでもどっかに書いておかないと訳が分からなくなってしまう、、、大丈夫か???) 以下、ldifファイルの記述例。 dn: cn=test_user1,ou=People,dc=example, dc=com changetype: modify replace: description <== 既存の属性値を変更する場合はreplace。省略可。 description: DB admin user <== 変更後の属性値を指定 - <== 同一dnに対して複数の変更を実施する場合はハイフンで区切る add: mail mail: testuser@example.com dn: cn=test_user1,o

  • 1