Elasticsearchで大量データ挿入でのエラー(queueのcapacity)
これはなに
前回のMysqlからESにデータを200万件くらい入れるとエラー出て5000件くらい喪失してた件。 MysqlからElasticsearchにデータを入れる - mazeltov7のweb断片
ログをチェックすると、esrejectedexecutionexception queue capacity 50
とか出てて、このあたりっぽい。
exception - EsRejectedExecutionException in elasticsearch for parallel search - Stack Overflow
ここも参考。
fluentd -> Elasticsearch 大量データ転送でトラブル | diaspora
とりあえずbulkのqueueのキャパを増やして再トライ
elasticsearch.ymlで、
threadpool.bulk.queue_size: 100 // デフォルト50
結果:ES内データ2068221
(Mysqlのデータ2068246
)
惜しい・・20件くらいどっか行ってる・・
次は、
threadpool.bulk.queue_size: 130 // デフォルト50
でトライ
結果:ES内データ2068246
(Mysqlのデータ2068246
)
YAY!
ただ、途中で以下のこのエラーやっぱり出てるの気になるな・・
[99]: index [.marvel-es-1-2016.09.20], type [index_stats], id [AVdG8wYaTnsUn8dLrCLT], message [RemoteTransportException[[Avarrish][127.0.0.1:9300][indices:data/write/bulk[s][p]]]; nested: EsRejectedExecutionException[rejected execution of org.elasticsearch.transport.TransportService$4@3a0e97f2 on EsThreadPoolExecutor[bulk, queue capacity = 130, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@4c6977a4[Running, pool size = 8, active threads = 8, queued tasks = 130, completed tasks = 7362]]];]]
まぁ、データ入ったので、ちと保留
MysqlからElasticsearchにデータを入れる
embulkを入れる
GitHub - embulk/embulk: Embulk: Pluggable Bulk Data Loader. http://www.embulk.org
$ brew install embulk
ドキュメントのGetting Startedやって雰囲気をつかむ。
embulkのpluginのembulk-input-mysql, embulk-output-elasticsearchを入れる
embulk-input-jdbc/embulk-input-mysql at master · embulk/embulk-input-jdbc · GitHub
GitHub - muga/embulk-output-elasticsearch
$ embulk gem install embulk-input-mysql $ embulk gem install embulk-output-elasticsearch
で、入れるmysqlのデータ、ESのデータのconfigurationのconfig.ymlを書く。
in: type: mysql host: localhost user: $user_name password: $password_name database: $database_name table: $table_name select: "*" out: type: elasticsearch index: $index_name index_type: $index_type_name nodes: - {host: localhost, port: 9300}
で、
$ embulk preview config.yml // 確認 $ embulk run config.yml // 実行
PS: 200万件くらい入れたら、途中数回エラーが出て5000件ほど入ってなかったので確認をば。queueのcapacityが50にしてて、そのを越えた?っぽい。ので調整で再トライ。esrejectedexecutionexception queue capacity 50
この辺ぽい
node, nvm, npmセッティング(OSX)
node入れようとする
brewで入れると最新バージョン取ってくるので、今だと以下の6.5.0を取ってくる。
まぁ、いいけどメジャーなrecommendedの方が良さそうな気がするので、バージョン切り替えしやすいようにしておくためにnvmを入れる。
(brewで入れたnodeとnvmで入れたnode併存し得るので、nvmだけでnode入れる)
nvm入れる
$ brew install nvm $ mkdir .nvm $ vim .zshrc # 以下を追加 export NVM_DIR="$HOME/.nvm" . "$(brew --prefix nvm)/nvm.sh"
node入れる
$ nvm ls # ローカルに入ってるnodeを一応確認 $ nvm ls-remote # リモートのnodeバージョン確認 $ nvm install OOO # 希望のバージョンをインストール $ node -v
てか、npmはnode入れると入ってるぽい
Elasticsearch + kibanaのセットアップ
検索とかメインじゃなくて、データ表示がメインです。
Elasticsearchをダウンロード
公式サイトからzipをダウンロードする。
(brewで入れてもいいんだけど、plugin使うならpathが微妙だったので、そのまま入れる)
Download Elasticsearch Free • Get Started Now | Elastic
公式ドキュメントのgetting startedに沿ってやる
Elasticsearch Reference [2.4] | Elastic
kibanaも入れて、公式ドキュメントに沿ってやる
Download Kibana Free • Get Started Now | Elastic
次にESを監視できるmarvelを入れて、以下略
こちらはplugin Download Marvel • Monitoring for Elasticsearch | Elastic
いい感じにjsonのquery書けるsenseを以下略
これもplugin Sense Documentation | Elastic
oculus製品版をセットアップして、遊んだ
新Win機を開封
なんだか久々のwindowsよろしく。結構本気構成
[スペック]
OS:Windows10 64bit
CPU:Intel Core i7-6700CPU @ 3.40GHz
GPU:GeForce GTX 1070
HDD:ST2000DM001 [2TB SATA600 7200]
SSD:BX200 CT480BX200SSD1 [480GB]
メモリ:16G RAM
Oculus開封
oculusのアプリをインストールして立ち上げると、機器のつなげ方とかチュートリアルが出てくるのでそれに沿ってやる。設定の最後にデモがあるので、そこまでいけばセットアップ完了。
問題発生(大きめのソフトが動かない)
ストア上で大人買いを発揮しまくっていたところ、サイズの大きいソフトが動かないことが発覚。。
ソフトを起動すると、THE [Appname] IS TAKING A WHILE TO OPEN etcetc
と表示されて起動しなかった。
例えば、このclimbのアプリ。
www.youtube.com
で、climbのフォーラム見に行くと似た現象のスレがちらほら。
http://www.theclimbgame.com/forum/viewtopic.php?f=7&t=15
最新のドライバーじゃなかったり、適切なグラボ積んでても、そっちを見に行ってないことがあるっぽい。
1. ドライバーを最新に
NVIDIA Geforce Experienceのアプリを立ち上げて、ドライバーが最新かどうかを確認。
2. グラボの状況を確認
コントロールパネル->ハードウェアとサウンド->デバイスマネージャーで、ディスプレイアダプターを確認。
ここで、Intelグラボ
とGeforceグラボ
が2つ表示されてて、この辺怪しいと。
原因はディスプレイからつなげるのに、hdmi使ってて、これがグラボ側とつながってて、oculus側のhdmi接続はPC側に接続されててこれがダメだった。ただ、これを入れ替えると、ディスプレイの方でnvidiaコントロールパネルが立ち上がらなくなったりと面倒そうだったので、DisplayPortのコードに変えてグラボ側に接続。これで再度ディスプレイアダプター確認すると、NVIDIAのグラボだけが表示された。で、ソフト起動して無事プレイ成功!ふぅ、なるほど。
*ちなみに、アプリ起動中にどのグラボ使われてるとか見えるようにしておくと便利。コントロールパネル->ハードウェアとサウンド->NVIDIAコントールパネルで、デスクトップのタブ開いて、GPUアクティブティアイコンを通知領域に表示する
をチェックすると通知のところに出てきて確認できるので良い。
とりあえず、最高
session_set_cookie_paramsとかセッション
これはなに
適当にsession_set_cookie_params付けてたけど、よくわかってなかった。el capitanにして、localhostの環境がlocalhost/~username/appname
みたいな感じでやるようになって、セッション消えたり、他アプリと共通化されたりおかしくなったので、調べた。
session_set_cookie_params(0, '/~username/appname/');
とかすると、第一引数はセッションクッキーの持続時間、0にすると制限時間無しになる。第二引数にはセッションクッキーが有効なpathを記載する。これでアプリ毎のセッションクッキーをセットできるようになる。
セッションの保存先だけど、php -i | grep session.save_path
すると見れる。設定はphp.iniでsession.save_path = "/var/lib/php/session"
とかするとそこに書かれていく。デフォルトだと/tmp
になってるぽい。
追記:php.iniにsession.save_path設定すると某アプリのログインcallbackでこけるな…おや…
MBPでel capitanクリーンインストール
1. ファイル・写真etcを同期する
これを機にファイル・写真は全てDropboxに同期するようにしました。Dropbox内にフォルダ作って、ローカルからそこにリンク貼る形にして、自動同期。
あと、brewで入れてるやつとかもさっと同期するために、brew bundle dump
とかしてBrewfileを作成。Dropboxとかに入れて、綺麗にした後にbrew bundle
できるようにしておく。
2. アプリ内のデータを同期する
アプリ内のデータで必要なものを同期。
Apple系のもの(Notesとか)はこちらでできる。
iCloud データをアーカイブまたはコピーする - Apple サポート
(今回はdropboxのpaperにコピペした)
3. 認証ある系のものを解除する
Adobe製品やicloud, itunesとか解除する。
Apple系はこちら。
Mac を売却または譲渡する前に - Apple サポート
4. バックアップ取る
Time Machineとかでバックアップをとっておく。
5. クリーンインストール!!
6. 諸々設定
- chrome, google ime入れる
- キーボード系(caps lockをctrに。spotlightをctr+spaceに。言語切替をctr+spaceに。ブラウザ内window切り替えをoption+tabに。)
- 諸々はこことか。
OS Xをクリーンインストールした後に行う初期設定のまとめ – OTTAN.XYZ - アプリ群を入れる(dropbox, github, evernote, skype, firefox, opera, iterm2, sublime, vagrant, virtualbox)
7. 開発環境をセットアップ
- dropboxと同期して諸々リンク貼る。(documents, pictures, productsなど)
- xcode, homebrew入れる
- Brewfileから諸々入れる
brew bundle
する - local開発環境つくる(docker for macでやるのが良さそう。が、いつもどおりSitesでapacheでやる場合はこちらの通りにやるとできる。)
Apache, MySQL, PHP on OSX 10.11 El Capitan for Local Development