イタリア旅行

9月下旬にリフレッシュ休暇でイタリアに行ってきました。

ネット環境はいままではWifiルーター使ってたんですが、繋がらないことも多かったので今回はSIM買いました。
値段も安いし、ちゃんと繋がるし良いですね。

機内ではFire HD 10にNetflixでダウンロードしたテラスハウスをずっと見てました。
普段はkindle使いなのですが、こういう動画視聴デバイスを何にするか出発前に考えていて、最初はiPadにしようかと思ったんですが、値段高いのでFire HDへ。Fire HDは雑誌読む時にカラーなのが良いのと動画見るのには向いてます。

フライトは成田からデュッセルドルフ経由でミラノに入りました。帰りは逆になります。
ミラノのマルペンサ空港からミラノ中央駅へはシャトルバスを使いましたが、これは楽でいいです。
スーツケースを持ち運ばなくていいし、空港からバス乗り場も近い。

僕は マルペンサ空港からミラノ市内へのアクセスまとめ を参考にTerravision社のバスを使いました。

ミラノカードなるものを事前に購入してこれを現地で受け取ってそれを使って地下鉄でDuomoへ

View this post on Instagram

Duomo

wyukawaさん(@wyukawa)がシェアした投稿 -


ガッレリア

View this post on Instagram

ヨーロッパっぽい

wyukawaさん(@wyukawa)がシェアした投稿 -

ブレラ絵画館は僕のような美術全く興味無い人間でも結構楽しめます。

死せるキリスト


イタロでベネチアへ。
電車は日本でレイルヨーロッパで全部予約しました。イタロ良いです。座席のグレードが3つあって僕は真ん中のPrimaにしました。
参考 イタロの予約と座席、サービスについて - 乗車レビュー

ベネチアは特別な街でミラノのような都会ではないですが、駅でてすぐ下記のように川と橋が見えて良い感じです。

View this post on Instagram

ベネチアの駅出てすぐこんな感じです。

wyukawaさん(@wyukawa)がシェアした投稿 -


サン・マルコ広場へ行き鐘楼に登ってそこからの眺め

View this post on Instagram

上からの眺め

wyukawaさん(@wyukawa)がシェアした投稿 -

他は ヴェネチアの勧め - Chikirinの日記 を参考に僕はサン・ロッコドガーナに行きました。
ベネチアは道が狭くしかも橋を渡らないといけない箇所もあってGoogle Map使っていてもちょいちょい迷いましたが、広くは無いので徒歩で割となんとかなります。水上バスのヴァポレットも使いましたが、遅いので1回乗れば十分な気がします。

ベネチアのレストランはここがお勧めです。ネット予約もできます。
Hostaria Osottoosopra (ベネチア) の口コミ675件 - トリップアドバイザー

ベネチアの次はフィレンツェへ。

フィオレンティーナの試合も見てきました。


電車でピサにも行ってきた。

View this post on Instagram

傾いてるな

wyukawaさん(@wyukawa)がシェアした投稿 -


フィレンツェ観光後はミラノに戻ってサッカー観戦。サン・シーロスタジアムです。

View this post on Instagram

始まりました

wyukawaさん(@wyukawa)がシェアした投稿 -

そのあとトリノに移動してユベントス戦観戦

View this post on Instagram

試合画像

wyukawaさん(@wyukawa)がシェアした投稿 -

ローマへ移動

トレビの泉

View this post on Instagram

トレビの泉

wyukawaさん(@wyukawa)がシェアした投稿 -


スペイン広場

View this post on Instagram

スペイン広場

wyukawaさん(@wyukawa)がシェアした投稿 -


ローマのレストランはここがお勧めです。
Ristorante Nerone (ローマ) の口コミ694件 - トリップアドバイザー



ナポリへ移動して観光
地下鉄の1日券買ったのに乗り場行こうとしたらその日は閉鎖されていたので徒歩で、ヌオーヴォ城の方へ行きました。

View this post on Instagram

城からの眺め

wyukawaさん(@wyukawa)がシェアした投稿 -


ローマに戻って観光してたら、ローマのユニフォームきたお姉さんが観光地でローマダービーのチケット売ってたのでうっかり購入して試合見てきました。
お姉さんに中田英寿知ってるか?って聞いたら知らんとのこと。まあ20代っぽかったしな。

View this post on Instagram

後半キックオフ

wyukawaさん(@wyukawa)がシェアした投稿 -

そういえば旅行来る前に

読んでて中田がペルージャにきてからもう20年もたつのかあという。
ローマ時代の思い出のところの記事が良いです。もちろんあのユベントス戦のこともかかれているし、なによりもモンテッラのくだりが熱い。
プロフェッショナルとはこうなんだなという。


そんなわけで約二週間のイタリア旅行でしたが、天気がずっとよくて、昼間は暑かったです。
心配してた治安も問題なく、不満といえばホテルがしょぼいぐらいですね。狭いし朝食の種類が少ない。ここに関してはイギリスの方がはるかに上。
これでイギリス、フランス、ベルギー、ドイツ、イタリアに行ったので次はスペインに行きたいなあ。

Hadoopのworker系nodeでのkernel panic

6月ごろからHadoopのworker系nodeつまりdatanode, nodemanager, presto workerが動いているnodeでkernel panicが多発するようになって困っていてまだ解決はしていないのですが、メモっておきます。

ログ分析基盤として使っているHadoopクラスタで深夜帯にバッチを動かします。
load averageは100を超えることもあり、マシンスペックはメモリ256GB、CPUは40プロセッサ、HDDは3TBが12本ささってます。
OSはCentOS 7.2.1511です。
データ量が増えてきたこともあり、ディスクだけじゃなくコンピューティングリソースももりもり使ってます。

だいたい午前6時から8時にkernel panic起こることが多くて、ひどいときは短い時間に3台kernel panicが起きて、マシン再起動、サービス起動が間に合わずmissing blockになってjobが失敗することもありました。
負荷がピークの時に起きているわけではないのがちょっと不思議なのですが、別の負荷がそんなに高くないHadoopクラスタでは全く起きてないので負荷が原因のひとつではありそう。

この状況はさすがに辛いので、ジョブのスケジューリングを変えて負荷を平準化するとともに、インフラチームから提案のあったkernelアップグレードをやったところ回数こそ減ったもののまだ週一回程度起きます。
さらに仮にkernel panicしても、マシン再起動したらdatanode, nodemanager, presto workerが自動起動するようにsystemctlにType=oneshotで仕込みました。

ただ

Wants=network-online.target
After=network-online.target

とかやっても期待通りに動かなかったので、

After=network.target remote-fs.target nss-lookup.target ambari-agent.service

とかしてさらにsleep 45してマシン再起動時にambari apiをたたいてdatanode, nodemanagerを起動するようにしました。


kernelは3.10.0-514.2.2から3.10.0-862.9.1にあげました。

マシン再起動が必要で3台同時にやるとmissing blockになってジョブがこけるので多くても2台まで同時に作業しました。ここは完全に手動で温かみのある作業です。40台でだいたい4時間かかりました。

その後まだkernel panicが起きたのでkdumpを仕込みました。元々kdump自体はインストール済みだったので設定だけ少し変えて起動しときました。
どこを変えたかというとvmcoreはそれなりの容量になる気がしたので、OSとは別のパーティションに出力するように変更しました。

そしてkernel panicがまた起きてcrashコマンドでの解析を試みましたが、よくわからずcentosにissue登録しました。
0015216: 3.10.0-862.9.1.el7.x86_64 kernel panic and crash under hadoop environment - CentOS Bug Tracker

メッセージに

[exception RIP: find_busiest_group+869]

とあったのでfind_busiest_groupでググる
https://qiita.com/nhiroki/items/2fa7bb048118145b00cd
が見つかりずいぶん参考になりました。
負荷が高いときにスケジューラ周りのバグを踏んだんじゃないかという気がしますが、その後centos teamから返信がきて、最新のkernel 3.10-862.11.6を試してくれない?って言われます。
タイミング悪く3.10.0-862.9.1にあげた後にすぐ3.10-862.11.6が出たようです。
cpu hot plug関連でcpu core数が正しく表示されないbug 0015108: cpu core counts change unexpectedly - CentOS Bug Trackerが関係してそうでそれがkernel 3.10-862.11.6でfixされているとのことでした。

バージョン一覧がどこにあるのかよくわからんですが、例えば下記で見れるようです。
ftp://ftp.riken.jp/Linux/cern/centos/7/updates/x86_64/repoview/kernel-devel.html

3.10.0-862.9.1と3.10-862.11.6の差分は下記で見れます。
https://git.centos.org/compare/rpms!kernel.git/refs!tags!imports!c7!kernel-3.10.0-862.11.6.el7..refs!tags!imports!c7!kernel-3.10.0-862.9.1.el7

kernel upgradeのansible playbookはこんな感じで作りました。

    - name: chattr -i
      command: chattr -i /boot/grub2/grub.cfg

    - name: upgrade kernel
      yum: name=kernel state=latest

    - name: chattr +i
      command: chattr +i /boot/grub2/grub.cfg


3.10.0-862.11.6にあげても残念ながらkernel panicは起きました。ただメッセージは違いました。

 [exception RIP: __hrtimer_get_next_event+52]

その旨を報告すると、関連しそうな部分を直したものが含まれる3.10.0-862.11.6.el7.centos.plus.2を試してくれと言われます。

plus.1だったら

yum install --enablerepo=centosplus kernel-plus

とかすれば入りましたが、plus.2はkernel-plusにはないようなのでrpmで入れます。playbookはこんな感じ。

    - name: chattr -i
      command: chattr -i /boot/grub2/grub.cfg

    - name: install kernel-plus
      yum: name=http://.../kernel-plus-3.10.0-862.11.6.el7.centos.plus.2.x86_64.rpm state=present

    - name: grubby --set-default
      command: grubby --set-default=/boot/vmlinuz-3.10.0-862.11.6.el7.centos.plus.2.x86_64

    - name: chattr +i
      command: chattr +i /boot/grub2/grub.cfg

で、今は様子見中です。今までの頻度を考えると1週間何も起きなかったら解決したと思っていい気がします。

yanagishimaとElasticsearch

Elasticsearch 6.3になってSQLがサポートされたのですが、KibanaからだとDiscoverからはクエリ投入できなくてDev Toolsから実行するしかないです。

https://www.elastic.co/guide/en/elasticsearch/reference/6.3/xpack-sql.html

そのうちDiscoverからはクエリ投入できるようになりそうですけど、yanagishimaでサポートしても悪くあるまいということで進めてます。

Elasticsearch JDBC Driverを自前で実装してyanagishimaから使っています。
https://github.com/wyukawa/elasticsearch-jdbc-driver
自前実装といっても下記を参考にしてますし、全メソッドを実装しているわけではなくyanagishimaで使うものだけ実装しています。
https://github.com/tokuhirom/unofficial-elasticsearch-jdbc-driver

SQLからLuceneクエリに変換するAPIも用意されていたので、それも別途取り込んでます。
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/sql-translate.html

maven repoにjar登録するの面倒かなと思ったんですが、調べつつやったらそんなに大変でもなかった。下記がプロジェクト申請時のissueです。
https://issues.sonatype.org/browse/OSSRH-41141

社内で軽く使い始めてみましたが、group byに1つしかかけない、case/union allをサポートしてない、sum(if())みたいにifを関数として使えない、などまだ機能が足りてない感じなので今後に期待といったところです。
関数も少ないですね。
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/sql-syntax-show-functions.html

個人的にはyanagishimaでsqlからtranslateしてそこからkibanaにリンクできると面白いかなと思ってます。

yanagishimaのバージョンは今14.0ですが、15.0で正式にElasticsearch SQLをサポートしようと思ってます。

ディス・イズ・ザ・デイ

ディス・イズ・ザ・デイ

ディス・イズ・ザ・デイ

全22チームある架空のJ2の最終節を舞台とした連作短編集です。
11試合+プレーオフの合計12編あって、それぞれホーム側、アウェー側のサポーターの視点から話が進んでいきます。
個人的には4話目が熱い。どちらかというと重苦しいトーンなのだが抜群に良い。

僕はFootのファンなのですが、津村さんはそこから知っていろんな小説、たとえば、この世にたやすい仕事はない なんかは好きです。作者は僕と同年代で、主人公は働く独身女性というパターンが多い気がします。

http://www.youtube.com/watch?v=O0iOY1hIJ6U

で、このディス・イズ・ザ・デイは僕が思うに津村さんの最高傑作なのではと思いました。
サッカー好きな人はもちろんそうでない人も楽しめるんじゃないかと。

Elasticsearch/Kibanaを6.2.2から6.3.0にupgradeした

6.3.0のrelease blogはこちら
https://www.elastic.co/blog/elasticsearch-6-3-0-released
https://www.elastic.co/blog/kibana-6-3-0-released

6.3.0からX-Packが標準で含まれるようになったのでインストールは不要で、最初からBasic Licenseが適用されています。

SQLもBasicに含まれていますが、JDBCは有償です。
https://www.elastic.co/subscriptions

なので
https://github.com/tokuhirom/unofficial-elasticsearch-jdbc-driver
をコピペして軽くJDBC Driverを作り始めましたが、進捗0です。
https://github.com/wyukawa/elasticsearch-jdbc-driver
他に良さそうなやつがあれば捨てて乗り換えます。


upgradeのやり方は
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/rolling-upgrades.html
にある通りですが、注意点として古いバージョンのx-packをremoveする必要があります。

https://github.com/elastic/elasticsearch/issues/31465
https://github.com/elastic/kibana/issues/19957

で、上げた翌日にはKibanaのグラフが自動更新の際にチカチカするんだけど、、、という話があり、どうも下記を踏んだ模様。criticalなものではないと思うけど、気になる人は次のバージョンを待った方がいいかも。
https://github.com/elastic/kibana/issues/20240

Kibana 6.3.0からインデックス管理もできるようになったのですが、index templateの更新はできなそうなのでcerebroは依然として使う予定です。

今日cerebroを0.8.1にupgradeしたらクラスタ設定もいじれるようになっており進化を感じます。

Elasticsearch実践ガイドを読んでみた

目次

第 1 章 Elasticsearch とは
1-1 Elasticsearch が登場した背景
1-2 Elasticsearch の特徴
1-3 Elastic Stack について
1-4 Elasticsearch のユースケース
1-5 Elasticsearch の導入事例
1-6 まとめ
第 2 章 Elasticsearch の基礎
2-1 用語と概念
2-2 システム構成
2-3 REST API による操作
2-4 Elasticsearch の導入方法
2-5 まとめ
第 3 章 ドキュメント/インデックス/クエリの基本操作
3-1 ドキュメントの基本操作
3-2 インデックスとドキュメントタイプの管理
3-3 さまざまなクエリ
3-4 まとめ
第 4 章 Analyzer/Aggregation/スクリプティングによる高度なデータ分析
4-1 全文検索と Analyzer
4-2 Aggregation
4-3 スクリプティング
4-4 まとめ
第 5 章 システム運用とクラスタの管理
5-1 運用監視と設定変更
5-2 クラスタの管理
5-3 スナップショットとリストア
5-4 インデックスの管理とメンテナンス
5-5 refresh とflush
5-6 まとめ
第 6 章 Elastic Stack インテグレーション
6-1 Elastic Stack
6-2 X-Pack の活用
6-3 まとめ
索引

僕は管理者、ログ分析の文脈でElasticsearchを使っていて、検索エンジンとしてはあまり使っていません。
Analyzerとかクエリの書き方とかは全然わかってなくて本当に雰囲気で触っているのだが、
そういう人にとっては、もちろん普通にElasticsearchに入門する人でも、本書は役立つと思う。特に3,4章とか

運用管理者の視点からも5章はアップグレード方法だったり、Luceneのインデックスファイル構造まで書かれていて参考になった。

Elasticsearch絡みの日本語書籍は結構古くなっていて、最近で本書以前では下記があったのだが、こちらはFluentdも含めたログ分析基盤の観点から書かれた本なのでElasticsearch自体にはあまり踏み込んでいなかった。

Elasticsearch実践ガイドは逆にFluentdのような周辺システムにはあまり触れずにElasticsearchについて必要なことが書かれている。ただ本書が対象としているElasticsearchのバージョンが6.2だが、最近6.3が出たのはちょっとタイミングが悪かったかもしれない。6.3からX Packは別途インストールする必要なくなったしね。とはいえ本書はElasticsearchについて学ぶのに良書だと思う。

南魚沼グルメマラソンにいってきた

5年連続5回目の参加です。結果はネットタイムが2時間1分1秒でした。
参加した5回のなかではおそらくもっとも気温が低く走りやすかったと思うけど、練習不足でした。

06:08東京発の新幹線にのり浦佐駅には07:36到着。
今回はゼッケンや計測チップは事前発送だっただけど紛失したので1000円払って再発行して走りました。

ゴール後はごはんとつまみとビール。このあとカレーも食ってお腹いっぱい。

自分のいままでの人生においてもっともビールがうまかった瞬間ベスト5を上げろと言われれば、全て南魚沼グルメマラソンの時だろうなというぐらい今回もうまかったです。