kiy271の日記

インフラエンジニアの備忘録

「エンジニアのための時間管理術」を読んで

2006年10月の初版なので、IT関連の書籍では少し前になるのかもしれないが、ブクログでずっと"読みたい"にマークしてあった、「エンジニアのための時間管理術」を読んだ。

エンジニアのための時間管理術

エンジニアのための時間管理術

主にシステム管理者(書籍内ではSA:System Administrator)向けに書かれた少しマイナーな書籍なのかもしれないが、今の自分の仕事との関係も深く、とても楽しみながら読めた。内容も技術書と言うよりはライトな読み物になっており、読みやすく、数日の会社の往復と、帰宅後の数時間でさらっと読むことができた。


印象に残った箇所として、

  • 能力は重要な作業のために温存しておく(p5)

頭のなかをなるべくクリアにしておく。記憶しておくべきことは外部ストレージ(書籍ではPDA,PAAだが、現代ではクラウドなのだろう)にまかせておく。

  • 集中と割込みへの対処(2章)

割り込みは必ず生じるものであり、その対処に工夫する。委任、記録、実行がキモ。また、同僚と相互不可侵条約を結び、時間帯によって、割り込みに対処する担当を分けるなど興味深い。(なかなか実践できないケースが多いかもしれない)

集中への対処して、集中できる時間をコントロールする、例えば早朝の朝1時間早く出社する。その他、気の散りやすい環境を排除する。IM通知、メール通知、他のウィンドウを見ないためにWindowsスクリーン切り替えのアプリなど。

  • 自分の記憶力を信用しない(p58)

PDAに記録する。そして、持ち歩くとのこと。このことは一日前の自分は別人と考えている自分の考えにもしっくりきた。また、著名な宋文洲さんに至っては1分前(1秒前?)の自分は別人ということらしいので妙に納得感があった。

  • サイクルシステム(作業リストとスケジュール)

毎朝10分で一日の予定を立てる。その際に、優先度をA(期限が今日で今すぐ終わらせる必要がある)、B(期限が近づいている)、C(それ以外)で分類し、必然的にタスクを割り当てる。そして、その日のしごとが終わったら、すべて翌日以降のタスクに振り返るとのこと。とても納得。

  • サイクルシステム(カレンダーの管理)

カレンダーは仕事、プライベートで一つ(に見えるよう)にする。カレンダーツールに記憶させる。また、1年の閑散を読み、スケジュールを調整すると良い。

  • サイクルシステム(人生の目標)

仕事、プライベート両面で、ひと月、1年、5年で目標をリストアップし、計画する。定期的な見直しも必要。

  • 優先順位

特にプロジェクトの優先順位が印象深かった。どこかの会社でも似たようなことをやっている気がする。

大きな成功を収めている企業では、困難だが必要なプロジェクト(カテゴリB)に挑戦する社員を優遇するような経営努力をしています。

  • 上司からの要求

上司からの要求は優先度が高い。

なぜこのことが重要なのでしょうか。あなたの次の給与査定をするのは上司です。これ以上何かいう必要があるのでしょうか。

もっともであるが、少し釈然としない。自分と上司の考え方、知識レベル、考察の深さなどに敬意を払えていれば、納得もするのだろうか。また、同時に上司マネジメントが必要とも言及している。

  • ストレスの管理

ストレスに上手く対処するよう書かれている。そして、休暇は会社からのプレゼントではなく、リラクゼーション管理やストレス解消プログラムの一環とも。ピープルウェアにも通じる箇所もあり、大いに納得。

  • 電子メールの管理

電子メールは理想はワンタッチ(閲覧)で削除。メールボックスに溜め込まない。最近はGMAILがあるので、そうでないケースも多いが。

  • 時間の浪費

時間の浪費とは、費やした時間に対する利益の割合が低い活動を指す。こうした活動は効率よくおこ泣くことを試みることよりも、排除したほうがよいだろう。

大いに納得。やらないことで生産性を向上。 また、「SAにとっての究極のタイムマネジメントテクニックとは、優れたITインフラストラクチャである。(中略)つまり、床を拭くのをやめて、水濡れしている蛇口を修理する事ができる。」とも。

  • 文書化

文書化によるメリットは自明だと思う。仕事を他の人に振りやすくするともある。 顧客視点のリポジトリ社内ITリポジトリWikiで管理するのが良いのではと。

  • 自動化

やはりこの手のSYSADではよく話題になる自動化の重要性。


そして、最後の「おわり」が最も印象深かった。

この手の話題では、たいてい新たに創出できた時間を「付加価値の大きい頭の使う仕事に当てよう」、「今までできなかった仕事にチャレンジしよう」みたいな、仕事の生産量を増やすことが正しいというような方向へ収束することが多いが、本書はストレートにそれらと異なっていた。

タイムマネジメントをして創出できた)

「新しい」自由時間をどうするか

週40時間の労働を宣言し、家族との生活を取り戻してください。

週に40時間働いたら家に帰る。

大切な相手と過ごす時間を増やす

子どもと過ごす時間を増やす

両親やあなたの人生において重要な人に電話する。

...

リタイアした後、または極端には人が息を引きとる直前に、「もっと仕事をしておけば良かった」と思う人がどれだけいるのだろうか。もちろん仕事は人生に必要不可欠なもので、有意義なことも多いのだが、多くの人は人生の時間の大部分を仕事に費やしており、十分であろうと思う。

その点で本書は、人生を豊かにするためのエンジニアの処世術タイムマネジメントみたいなものなのかと感心し、大いに共感できた。

Tokyo Impala Meetup 2014.10に参加してきました

Tokyo Impala Meetup 2014.10に参加してきました。

Impala辺りはClouderaのHadoop管理者向けトレーニングにで軽く動かした程度で、実際に運用しているわけではないが、最近、Tezあたりも盛り上がってきているので、技術情報キャッチアップなどを目的として参加してきました。

やはりこのような場に参加すると、当たり前だが、今の自分の社内とは異なる環境で努力されている方々の話を聞くことでとても刺激なり、また2時間という短い時間にもかかわらず、とても濃度の高いプレゼンを聞くことが出来ました。

また、自分はImpalaをプロダクション環境で運用していないのでまだ実感はないことが多かったが、実際の運用者の工夫や、プロダクト評価者の鋭い視点をこのような場でシェアしていただくことで、自分の記憶の一部残り、とても有意義な勉強会でした。

以下、備忘のため各セッションのメモを記します。

@shiumachi Impala の最新バージョンの情報(仮)

かなり駆け足だったが、Impala2.0の機能改善の紹介。大幅に変わっているみたい。 2.0というメジャーバージョンアップということだが、Disk Spillが大きいのではないかとのこと。 詳細はスライド参照。

・Impala1.4の機能  HDFS cashing UTF-8対応 ・Impala2.0  Diskに大きいテーブルをSpillできるようになった。

・パフォーマンス改善  HDFS cashing  Partition Pruning 3000 => 30000へ

 DiskへのSpill機能がある。2.0の目玉かな。   → Swapよりはマシな管理をしてくれる。メモリ容量以上をつかってもデーモンが落ちなくなった。

 Subqueryがかけるようになった。  分析関数うが増えた。集約関数ももろもある。

 APPX_COUNT_DISTINCT 正確さを犠牲にしつつ高速化をする。大体の値が欲しいなど。

 CREATE TABLE ... LIKE PARQUIET

 new data types  DECIMAL(Impala1.4) VARCHAR , CHAR

 SHOW PARTITIONS

 SUMMARY コマンド 簡単に処理を確認できる。

・RESOURCE MANAGEMENT Admission Control(Impala1.3)

 YARN and Llama Llama; Low Latency AM HA 機能もある。 → クエリーが最後まで終わるか?   Llama単体で、失敗した時にはクエリーはキャンセルする。   Llama自体はリソース管理しかしていない。  YARN上で動かせる。

・Security  Sentryで実装。Hive,Impala用のもの。  GRANT REVOKEができる。  Kerberosもあり。どの程度か。

・Text + Gzipがサポート

・Gluster Sizing Guidelines for Impala。

@sudabon Impala のいい話(仮)

Impalaを利用するにあたっての、苦労話や、システム上での工夫を惜しげも無くプレゼンしてくれました。 とくに"wimpy"の話は面白かった。

Impalaのハードウェア要件 128GBなど "wimpy" もともと古いサーバを大量に並べていた。   → 一台のノードは4GBで8台ぐらい。

Web行動履歴の検索用データベース → 管理画面からアドホッククエリを投げている。

マルチテナントで運用している。お客さん用のデータ。   → パーティションで分けている。

クエリーの対象のデータサイズはそれほど多くない。  サマライズしているし、圧縮もしているので少ない。1TBぐらいのデータ。

課題 ・メモリ以上のデータを使うとクラッシュ、失敗する。   → 定常バッチでは使わない、アドホックのみ。 ・行単位の更新ができないなど、   → データ更新はRDBMSから変更して、Sqoopからやった。   HiveとImpala用のクラスタを分けた。   RDBMSからHDFSへのデータコピーで工夫している。 ・フォーマット変換   → HiveクラスタとImplaraクラスタで異なる。

Impala2.0でパフォーマンス劣化?

Cloudera Manager で管理しているが、勝手に再起動してくれるので、あまり障害に気づかない。 データ依存や、クエリー依存での障害の方がどちらかというと多い。 データフォーマットは気をつけている。(データベースでクレンジングなど)

@tosugiya YJでのImpala評価~導入(仮)

ClouderaWorldと同じ内容ということ。 検証レポートについて興味深い内容でした。パーティションとブロックサイズ(HDFS,PARQUEST)の組み合わせや、並列クエリによるレスポンス検証など。

(スライドがシェアされたらいいなぁ。。。)

データボリューム。何かの集計処理、ID処理。

・11億行/日 ・12GB/日

データ構造 30台ノードで検証 ストレージフォーマット RCFILE,SEQUENCEFILE,AVRO,PARQUEST ストレージフォーマットはPARQUET。複雑な処理をしていないので、それほど問題がなかった。

パーティションとブロックサイズ PARQのブロックサイズも適切にする。

dfs.block.size > parquet.block.size とのこと

・ブロックサイズ比較でのパフォーマンス評価  ファイル数、HDFSブロックサイズ、PARQUESTブロックサイズでそれぞれ評価し、最適なところを探した。

・検証データ全量テストでは初回アクセスでは、数分かかっていたが、2回目以降は10数秒でできた。

並列クエリによる検証  25並列だと4,5秒の性能劣化があった。   → 同じブロックへのアクセス集中が起こった。同じクエリだとかたよる。   → IDによってクエリを分けたが、並列度が上がった。

Metastoreの作成はHiveを使用して、Oozieアクションを実行。 → あるときからメモリ不足に陥った。M/Rのメモリチューニングを行なった。

処理時間のイメージ  Impala:数秒~数10秒  MapReduce:数分  HBase:数ミリ秒

向いているサービス  時系列のデータ参照、明細、履歴など

今後の課題・関心

どのくらいスケールするか。HBaseとの共存など。(クラウデらさんはあまりいい顔をしないらしい。。。)

@kuni_nakaji USERDIVEのimpala導入へのミチ

UNCOVER TRUTHの立ち上げメンバーということ。 UX解析ツール USERDIVE - 離脱ユーザーの全てが解るUX解析ツール「USERDIVE」、ヒートマップや動画分析でユーザー行動を可視化しUI改善します。

USERDIVEのデータ量推移 サイト内解析システムでImpalaを利用。 導入クライアント、現在は150社ぐらい。

ここでもセラン須田さんと同じく、メモリ要件(128GB推奨)が厳しく、スタートアップ企業にはクラウドを利用するにしても厳しいとのことだった。 また、MySQLを使わなかった理由は、データ量の心配からということ。

adachij SQL on Hadoop の比較検証

NTTデータ 安達さん 書籍「Hadoop徹底入門」の著者の方と同じチームに属しているらしい。

Impala、Presto(FaceBook)、Hive on Tez(HortonWorks)について、検証をしたレポート。 モチベーションは「ベンダーの検証は信用ならない」ということ。

(プレゼン資料公開してくれたら嬉しいなぁ。。。) →11/5公開していただけたようです。

パフォーマンス結果については、この界隈の人達は必見な内容だと思います。プレゼン資料を公開してくれたら嬉しいなぁ。。・   → 対Hive速度比での比較でまあまあImpalaは良く、Tezもその次かな。   → 特にまとめは必見。

  → Prestoは0.6でバージョンが異なるとまた違う結果があったかも。

感想

  • SQL on Hadoopはやはり人気がありますね。たしかDoug Cuttingさんが、将来的にHadoopトランザクション処理などもできるようになり、できなくなることの方が少なくなる、オープンソースの力を信じていると語っていたと思いますが、そのアプローチのデファクトの一つとしてSQL on hadoopが担うのかもしれません。
  • ClouderaとしてImpalaをオープンソースにするとのことを言っていたと思いますが、今は企業としての商業的戦略が優先しているのでしょうか。
  • あとどうでもいい事かもしれませんが、プレゼンターの方々が楽しそうに取り組んでいて、やはり自分たちのシステムを見るのは楽しそうだなぁと感じました。

主催者の方々、プレゼンターの方々、どうもありがとうございました。

参考リンク

プログラミング Hive

プログラミング Hive

Cent OS 6.3にVNCサーバインストール

手順

VNCサーバのインストール

yum -y install tigervnc-server

パスワード設定

vncpasswd

起動

vncserver :3 -geometry 1280x800

エラーが出たので以下をインストール

yum install -y pixman libXfont

再度起動して完了

参考

TigerVNC を使いリモートデスクトップ

CentOS6.3にVNCサーバをインストール - 猫型エンジニアのブログ

Linuxでのタイムゾーン(Timezone)の変更

手軽にHadoop界隈の仮想環境を試そうとすると大体タイムゾーンがPDTなので、JSTに変更する必要がある。その手順メモ。

# date
Sat Sep  6 08:20:23 PDT 2014
# cp /etc/localtime /etc/localtime.org
(ファイルの入れ替え)※再起動は必要ない。
# cp -p /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
(確認)
]# strings /etc/localtime
TZif2
TZif2
JST-9
# date
Sun Sep  7 00:22:08 JST 2014

Lubuntu 14.04でOracle JDKのインストール

Synapticパッケージマネージャで入らなかったのでメモ書き。 また、tarで入れるもの面倒だったので。。。

Java SE - Downloads | Oracle Technology Network | Oracle

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

HadoopのHDD構成について

HadoopHDFS)では通常、サーバHDD構成で一般的なRAID構成が使われることなく、JBOD構成が用いられる。これはそもそもHDFSはデフォルトで3つの複製を持ち、ハードウェアレベルでの冗長性が必要とされる理由が少ないということと、パフォーマンスの観点でのデメリットが大きい。

ただ、一般的にはサーバディスクにRAID構成を用いることで、サーバ単体としてのDISK IOパフォーマンスが向上するので、Hadoop HDFSにも同様にこれを適用することで、数十台、数百台などのHadoopクラスタ全体の性能を大きく上げられるのではないかということである。

この点については、象本にも記載があったと思うが、その元となっているのが、Yahoo!クラスタで実施されたベンチマークテスト結果だったと思う。 ここではRAID0にするよるとJBODよりも性能が劣るため、一般論としてHadoopRAID不要ということになっている。

また、IOパフォーマンスという点で、Hadoop複数のサーバノードでひとつのコンピュータなのだから、その内部バスである、ネットワーク接続を高速化することの方が、大きなメリットがあると感じている。HDFSでは通常デフォルト3つの複製をもつが、あるノードに1ブロックの書き込みがある場合、2ブロック目が同一ラックの別ノード、3ブロック目が別ラックのノードというように、圧倒的にネットワーク転送がボトルネックになる気がしている。

ネットワーク分野も最近は10GbpsNIC、スイッチ接続、Uplinkで40Gbpsインターフェースなども一般化してきているので、ファブリックネットワークのさらなる進化と、ネットワークコモディティ化の進行により、高性能化に期待できるのではとも思う。

参考

Hadoopオペレーション ―システム運用管理ガイド

Hadoopオペレーション ―システム運用管理ガイド

HBaseのお勉強をする。

「 7つのデータベース7つの世界」を読んだ。

MongoDB、Riakなど興味深い面白そうな技術をいい加減、キャッチアップしなきゃなと痛感。

まずはHBaseの基本をマスターしようと思う。

7つのデータベース 7つの世界

7つのデータベース 7つの世界