タグ

ブックマーク / yohei-a.hatenablog.jp (75)

  • Spark の RDD、DataFrame、DAG と Glue の DynamicFrame などについて - ablog

    Sparkとは ビッグデータを支える技術―刻々とデータが脈打つ自動化の世界 (WEB+DB PRESS plus) 作者: 西田圭介出版社/メーカー: 技術評論社発売日: 2017/09/22メディア: 単行(ソフトカバー)この商品を含むブログ (3件) を見るP.100 「Apache Spark」も、MapReduce より効率の良いデータ処理を実現するプロジェクトとして開発が進められています。Hadoop の延長線上にある Tez とは異なり、Spark は Hadoop とは別の独立したプロジェクトです。Spark の特徴は大量のメモリを活用して高速化を実現することです。(中略)コンピュータが異常停止すると途中まで処理した中間データは消えてしまいますが、そのときには処理をやり直して、失われた中間データをま作れば良いというのが Spark の考え方です(図 3.8)。 (中略) S

    Spark の RDD、DataFrame、DAG と Glue の DynamicFrame などについて - ablog
  • AWS の VPC(Virtual Private Network) についてメモ - ablog

    ※以下は個人的なメモです。最新の正確な情報はAWSの公式ドキュメントを参照してください。 VPC とは Virtual Private Cloud (VPC) は、AWS アカウント専用の仮想ネットワーク。以下のコンポンーネントがある。 AWS Black Belt Online Seminar 2017 Amazon VPC from Amazon Web Services Japan VPCに使うアドレスレンジ VPCに設定するアドレスは既に使っている、もしくは使うであろうネットワークアドレスを避けるのがポイント 推奨: 172.31.0.0/16 RFC1918レンジ、/16 (65,534アドレス) 作成後変更はできないので注意が必要 VPCあたりのサブネット作成上限数はデフォルト200個 CIDRに/16 を設定した場合の各サブネット数と使えるIPアドレス数 サブネット

    AWS の VPC(Virtual Private Network) についてメモ - ablog
  • 列指向データベースのページのデータ構造 - ablog

    行指向データベースは行単位でページ(Oracle Database でいうデータブロック)にデータを格納しているのに対して、列指向データベースは列ごとにページに格納している。クエリ実行時に結果セットを返す際に列別にバラバラのページに格納されているデータをどうやってタプル(レコード)に復元している*1のかと思ったがやはり行IDのようなものを持っているようだ。 行ID は C-Store では pid、MonetDB では BAT(Binary Association Tables) の oid と呼ばれている。 The Design and Implementation of Modern Column-Oriented Database Systems NSM(N-ary Storage Model): 行方向でブロック(ページ)にデータを格納する方式 DSM(Decomposition

    列指向データベースのページのデータ構造 - ablog
  • カーネギーメロンのデータベースの講義の資料・映像 - ablog

    前にも呟いたけどカーネギーメロンのデータベースの講義の資料・映像全部と紹介されてる論文読破すれば簡単に僕以上のトランザクションの専門家になれるしみんなもっと気軽に挑戦して欲しい。https://t.co/p9LXqTOFXKhttps://t.co/c8oRpXnNu0— くまぎ (@kumagi) 2017年3月24日 id:kumagi さんがステキなツイートをされてたのでメモ。 Schedule - CMU 15-721 :: Database Systems (Spring 2016) 要チェックやで。

    カーネギーメロンのデータベースの講義の資料・映像 - ablog
  • プロセスがファイルに読み書きしてる内容を覗き見する - ablog

    確認方法 ファイルディスクリプタ番号を確認して ls -l /proc/<PID>/fd tail で見てみる tail -f /proc/<PID>/fd/21 実行例 $ while :; do date; sleep 5; done > foo.log & [1] 23801 $ ps -elf|egrep [2]3801 1 S oracle 23801 22232 0 76 0 - 16525 wait 11:03 pts/2 00:00:00 -bash 0 S oracle 23813 23801 0 76 0 - 14732 - 11:03 pts/2 00:00:00 sleep 5 $ ls -l /proc/23801/fd total 0 lrwx------ 1 oracle oinstall 64 Mar 20 11:03 0 -> /dev/pts/2 l-w

    プロセスがファイルに読み書きしてる内容を覗き見する - ablog
  • よく使う strace のオプション - ablog

    Linuxstrace を使ってシステムコールのトレースを調べる時によく使うオプションをメモ。 特にお気に入りのオプションは -T、-c、-ff & -o です。 書式 システムコールを詳細に追う tt: 行頭にタイムスタンプを出力(マイクロ秒) T: 行末にシステムコール内での所要時間を出力(マイクロ秒) ff: 子プロセスのシステムコールもトレースし、-o との併用でプロセス(スレッド)毎に別ファイルに出力 o: 指定したファイル名に出力。-ff と併用すると、ファイル名. に出力 s: 出力文字数を指定。デフォルト32文字。read/write システムコールなどで読み書きした内容を全て確認したい場合は、大きくする。 p: プロセスIDを指定。 $ strace -Ttt -ff -s 1500000 -o <ログ出力先ファイル名> -p <PID> もしくは $ strace

    よく使う strace のオプション - ablog
  • DBサーバの空きメモリサイズの見方(Oracle Database on Linux) - ablog

    JPOUG Advent Calendar 2015 の5日目のエントリーです。 昨日は [twitter:@discus_hamburg] さんの Mac De Oracle: OTHER_XMLの中身 でした。 LinuxOracle Database を使っている場合の”実質的な”空きメモリサイズの算出方法を紹介します。 絵は 「シンプルでシステマチックなLinux性能分析方法」 @ db tech showcase 東京 2014 - ablog で使った資料から抜粋しています。 RHEL/Oracle Linux 5 空きメモリサイズ = /proc/meminfo の MemTotal - ( vmstat の used (= free の used(-/+ buffers/cache)) … カーネル + プロセス + ipcs -um の pages resident

    DBサーバの空きメモリサイズの見方(Oracle Database on Linux) - ablog
  • 2種類の非同期I/O - ablog

    非同期I/Oの「非同期」の意味が2つあって、紛らわしくなった背景を書いてみた*1。 Unix では (non)synchronizedと(a)synchronous という用語が使われているが、英語(自然言語)だと紛らわしい*2 (a)synchronous はI/O処理を待つかどうか、(non)synchronized はディスクに書き終わってから折り返すかどうかを意味する 例えば書込みの場合、 synchronized: ディスクに書き終わってから折り返す "non"synchronized: ディスクに書き終わってなくても折り返す synchronous: OSカーネルのバッファに書き終わってから折り返す "a"synchronous: I/Oリクエストを投げたらユーザー空間にデータが残っても折り返す 「非同期I/O」は "a"synchronous I/O の日語訳なので、I/O

    2種類の非同期I/O - ablog
  • Linux のページ回収まわりのカーネルパラメータ - ablog

    Linux(kernel 2.6.32-303 以降)のDBサーバでメモリ16GB、スワップ領域16GBの場合、ざっくりこんな感じが良いかなという妄想メモ。 vm.swapiness=1 vm.overcommit_memory=2 vm.overcommit_ratio=80 vm.min_free_kbytes=524288 vm.extra_free_kbytes=1048576(kernel 3.5以降) vm.swappiness=1 でページアウトよりページキャッシュ解放を優先させる。kernel 2.6.32-303 以降、0 にすると OOM Killer が発動しやすくなるらしいので、1 にする。 vm.overcommit_memory=2 でオーバーコミットしないようにして、OOM Killer が発動しにくくする vm.overcommit_ratio=80 で仮想

    Linux のページ回収まわりのカーネルパラメータ - ablog
  • NFSの排他制御について - ablog

    NFSの排他制御についてメモ(Linux限定) Managing NFS and NIS: Help for Unix System Administrators 作者: Mike Eisler,Ricardo Labiaga,Hal Stern出版社/メーカー: O'Reilly Media発売日: 2001/08/15メディア: ペーパーバックこの商品を含むブログを見る 11.2 NFS and file locking Mandatory locking and NFS NLM supports only advisory whole file and byte range locking, and until NFS Version 4 is deployed, this means that the NFS environment cannot support mandatory

    NFSの排他制御について - ablog
  • NFS のマウントオプションの hard と soft について調べたメモ - ablog

    NFS のマウントオプションの hard、soft について調べたメモ(Linux限定)。 まとめ hard の動作 NFS サーバが応答するまで書込を永遠に繰返す。 アプリケーションはI/Oを発行した後、完了待ちでスリープし続ける。 hard と intr を併用するとシグナルを送ってI/Oを停止することができる*1。 kill -s SIGINT or SIGQUIT or SIGHUP <PID> soft の動作 retrans で指定された回数書込に失敗すると、I/Oを発行したアプリケーションにエラーを返す。 どちらが良いか 整合性が求められるデータを読み書きに使う場合は hard にすべき。 不完全な書込*2や読込*3が発生する可能性があるため。 実行可能ファイルを置く場合も hard にすべき。 実行可能ファイルのデータをメモリに読込中やページアウトされたページを再読込中に、

    NFS のマウントオプションの hard と soft について調べたメモ - ablog
  • Linux のページテーブルのサイズの見方と見積式 - ablog

    Linux Kernel 2.6 (x86-64) でのページテーブルのサイズの確認方法と見積式を調べてみた。 あっているか自信のないところもある&まだ書きかけ。 ページテーブルのサイズの見方 OS全体のページテーブルのサイズ $ cat /proc/meminfo MemTotal: 16158544 kB MemFree: 13134056 kB (中略) PageTables: 34428 kB ★ 34MB プロセス毎のページテーブルのサイズ $ cat /proc/10225/status # 10255 は PID Name: zsh State: S (sleeping) Tgid: 10225 Pid: 10225 PPid: 10222 (中略) VmPTE: 124 kB ★ 124KB ページテーブルのサイズの見積式 見積式 (プロセスが使用している物理メモリサイズ

    Linux のページテーブルのサイズの見方と見積式 - ablog
  • プロセスのランキュー待ち時間とI/O待ち時間を調べる - ablog

    cat file|awk では実行時間 < CPU時間となっていますが、cat が I/O wait していないとは限りません。実行時間は単純に終了時間 - 開始時間で算出しますが、CPU時間はプロセスのCPU時間を getrusage システムコールで取得します。catのプロセスと awk のプロセスが並列実行されている期間があるため、実行時間 < CPU時間となっています。例えば、CPUバウンドな2プロセスがほぼ完全に並列実行されると、実行時間 * 2 ≒ CPU時間 となったりします。 (中略) 大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog と書きましたが、プロセスの ランキュー待ち時間は /proc//sched の2列目(sched_info.run_delay) I/O待ち時間は /proc//schedstat の se.stati

    プロセスのランキュー待ち時間とI/O待ち時間を調べる - ablog
  • pgrep で子プロセスの PID を調べる - ablog

    子プロセスの PID を取得したい場合、人間が見るには pstree が便利だけど、 $ pstree -alp $$ zsh,13840 ├─pstree,14216 -alp 13840 ├─zsh,13940 │ └─sleep,14213 10 └─zsh,13992 └─sleep,14215 10 シェルスクリプトで子プロセスの PID を取得して何か自動処理したいときには pgrep が便利そう。 P: 親プロセスの PID を指定 d: デリミタを指定 $ pgrep -d: -P $$ 13940:13992 参考 子プロセスのプロセスIDを取得するコマンド - アウトプットができる技術者に

    pgrep で子プロセスの PID を調べる - ablog
  • ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog

    大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog を書きましたが、awk file > file より cat file|awk > file が速い環境は稀なようなので、私の環境でなぜ cat file|awk > file のほうが速いのか調べてみました。プロセススケジューラが関係しているようです。 ↑はPerf + Flame Graphs で、awk file > file 実行時のコールスタックと所要時間を可視化したものです。 結論(たぶん) SSDの暗号化・復号をカーネルスレッドで行なっているのと、プロセススケジューラが awk とカーネルスレッドを同じ CPU にスケジューリングしていた(他に空いている CPU があるのに)。 awk file > file では暗号化データを復号するカーネルスレッドと awk のプロセスをプロセススケ

    ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog
  • 大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog

    以下、長々と書いてますが、結論は ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablogに書いてます はじめに awk file より cat file|awk のほうが速いという以下のブログエントリが興味深いので調べてみました。 ちなみに cat file|awk が速くなる環境は稀で、巷では awk file のほうが速い環境のほうが多いようで、どちらが速いかは環境依存です。 [root@localhost sample]# cat command1 awk '$5 ~ /((26|27|28|29|30)\/Jun|(01|02|03)\/Jul)/{ print }' sample.txt > result1.txt (中略) [root@localhost sample]# time sh command1 real 0m53.92

    大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog
  • strace でシステムコールの所要時間を調べる - ablog

    システムコールの所要時間は strace の -T オプションで調べることができる。 上はEXCELでピボットテーブルを使ってグラフ化したもの I/Oレスポンス(read システムコールの所要時間)は5〜15ミリ秒であることがわかる 例 strace でシステムコールのトレースを取得する $ strace -ttT -o strace-T_fs_`date +'%Y%m%d%H%M%S'`.log dd if=OVMRepo.vmdk of=/dev/null iflag=direct bs=1M count=1000 -T: システムコールの所要時間(秒.マイクロ秒)を出力 ※マイクロ秒=1/1,000,000秒 -tt: タイムスタンプをマイクロ秒で出力 -o: トレースを指定したファイルに出力 出力結果 $ less strace-T_fs_20150111143101.log [.

    strace でシステムコールの所要時間を調べる - ablog
  • Javaのスレッドダンプの読み方 - ablog

    あなたとスレッドダンプ - スレッドダンプ入門 - この国では犬が が非常にわかりやすく、自分でブログエントリを書く必要はないが、Oracle DatabaseLinux の性能分析に携わる者の観点から Java のスレッドダンプについて整理してみた。具体的なスレッドダンプの分析方法はサポートエンジニアが語るWebLogic Serverトラブルシュートのノウハウがとてもわかりやすい。 WebLogic のスレッドダンプの見方については id:yamadamn さんの スレッドダンプから見るWebLogic Serverの世界 #javaee - yamadamnのはてな日記 がわかりやすい。 スレッドダンプとは Javaのスレッドのスナップショット。 取得した瞬間のJava仮想マシン(JVM)内に存在するスレッド(ID、名前、状態、タイプなど)とコールスタックを見ることができる。

    Javaのスレッドダンプの読み方 - ablog
  • /proc/meminfo の Inactive は利用可能なメモリ領域ではない - ablog

    ちょくちょく、/proc/meminfo の Active が使用中、Inactive は使用可能な領域ですよねと聞かれることがあり、違いますよと話すことがあるので、出典をメモっておく。 がちゃぴん先生のブログ Activeはページキャッシュや無名ページ(注3)のうち、最近利用したり、まだストレージとの同期が取れていない「捨てられない」ページです。Inactiveは、同じくページキャッシュや無名ページのうち、最後にアクセスされてからある程度時間がたち、ストレージとの同期も完了していて、すぐに捨てられるページです。よって、/proc/meminfoの出力でいうところの MemFreeとInactiveを足すことで確実に利用可能なメモリ量を算出することができます。 (実際に利用可能なメモリ量)≒(MemFree+Inactive) この値を利用し、一定量を下回らないようにするのが、簡単・確実な

    /proc/meminfo の Inactive は利用可能なメモリ領域ではない - ablog
  • dstat + fluentd + Elasticsearch + kibana でノートPCをモニタリングする - ablog

    id:kazeburo さんの dstat + fluentd + Elasticsearch + kibana でサーバモニタリングする - blog.nomadscafe.jp を参考に自分のノートPCを dstat + fluentd + Elasticsearch + kibana でモニタリングできるようにした。 Kibana の設定が一番難しかった。GUIでポチポチ設定するだけだが、思うようなグラフにならず苦労した。もう少し使いこなせるようになったら、kibana の設定方法を書きたい。 使用感 dstat で取得したCPU使用率をグラフにしたものです。 環境 Oracle Linux 6.4 (2.6.39-400.17.1.el6uek.x86_64) httpd-2.2.15-26.0.1.el6.x86_64 Elasticsearch 1.4.1 Ruby 1.9.3

    dstat + fluentd + Elasticsearch + kibana でノートPCをモニタリングする - ablog