サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
open-groove.net
Sparkにおける主要な概念にRDD (Resilient Distributed Dataset)というものがある。 すごく平たく言えば「データセットを抽象化したもの」ということになるか。 ドキュメントより一部訳してみると。 Sparkの基本抽象要素。パラレルに処理が行われる、イミュータブルで分割された要素のコレクションを表す。(略) 各RDDは以下5つの主なプロパティにより特徴づけられる。 パーティションのリスト 各分割のコンピューティング用のファンクション 他のRDDsに対する依存関係のリスト オプションとして、key-value RDDs用のパーティショナー オプションとして、各スプリットにとっての好ましいロケーションのリスト (つまり、HDFSファイルのブロックロケーション) ….って言われてもうーむ、だよな。RDDsの英論文があり、そこに詳しい話ががっつり書いてあるのだが、これ
Linuxサーバ OS編。マニュアルドキュメントについて。 以前whichとwhereisの違いって?という記事を書いた時、whatisコマンドについて言及した。 whatisコマンドは、指定したキーワードについて「whatis データベースから完全な単語を 検索する」ものである。 このそっけない表現のためつい流してしまったが、本来の目的はマニュアルドキュメントの 検索であり、man -f と全く同じ意味のコマンドだというのを、後で知った(遅い?)。 ついでに、whatisコマンドはキーワードとの完全一致で検索、aproposコマンドは部分一致 で検索する、ってことだそうだ。どちらも、whatisデータベースから検索される。 まとめると、以下のようになる。 $ whatis keyword or $ man -f keyword キーワードと完全一致するマニュアルドキ
前置き。今回の実行環境はHadoop疑似分散環境(CDH5.2)上のCloudera Searchとなるが、コミュニティ版のサンプルを借用して使っている。コミュニティ版でもCloudera Searchでも、インデックス作成場所がローカルかHDFSかの違いだけで、やることは同じである。環境詳細は過去記事参照。 本題。コミュニティ版の$SOLR_HOME/example/exampledocsにはPOST用のpost.sh, post.jarとサンプルドキュメントとしていくつかのxmlファイルが格納されている。サンプル用のcollection1も作成済みなので、post.shの引数にファイル名を指定するだけで簡単にPOSTできる。 参考 Solr in 5 minnutes が、このpost.sh,post.jarはxmlファイルをPOSTすることを前提にしているので、json,csv形式の
Fluentdの組み込みプラグインに、 in_exec / out_exec というのがある。 in_exec 任意のコマンド/プログラムの実行結果をイベントのソースとする out_exec イベントのMsgをファイルとして任意のコマンド/プログラムに渡す。そのファイル名が引数となる。 インターバルを指定し、その間隔においてプログラムが実行される。 …と聞いても分かったような分からないような微妙な心境なので、とにかく動かす。実行環境はAWS上のCentOS6.5 1台。td-agentはインストール済み。 in_execの動作を確認してみる。こんなスクリプトを用意。 random_number.py #!/usr/bin/env python # -*- coding: utf-8 -*- import random for i in range(0, 30): print random.
前回投稿で未解決だった問題、簡単に解決したので書いておく。 前回投稿でkuromojiがどうのこうのとやったが、今回の目的には必要なかった。目的は、前回投稿にも載せているが、以下のまぬけなグラフをなんとかしたいだけである。 つまり「キリン/一/番/絞り」を、普通に「キリン一番絞り」と表示できればよいのだ。要するに「分かち書き」が回避できればいい。で、この目的のためにはElasticsearchでmappingの定義をしてやればいいだけだった。 参考 fluentdからElasticSearch+kibana3に転送した文字列が分かち書きされるのを回避する 参考ページではmappingの定義をcurlリクエストで行っているが、今回は設定でやってみた。/etc/elasticsearch 配下にtemplatesディレクトリを作成し、そこにmappingを定義した適当な名前のjsonファイルを
しれっと久しぶりに投稿です。 Elasticsearchに日本語検索最適化プラグインkuromojiを入れてゴニョゴニョやってみたので、その記録など。 さらにKibanaで可視化したらどうなるか、を試してみた。(長いです) つい最近 Elasticsearch 1.4beta、Kibana 4betaがリリースされたのでせっかくだからそっちで試してもよかったのだが、チラ見したところkibana 4ではインターフェースがガラっと変わったらしく(またか)、そこでハマるわけにはいかないので安心の Elasticsearch 1.3、Kibana 3という環境で実施。マシンはAmazon EC2のm1.small, CentOS 6.5。 参考 Kuromojiで日本語全文検索 – AWSで始めるElasticSearch(1) ElasticSearch に Kuromoji プラグインを導入す
Amazon Kinesis についてヒントになりそうなリンクをピックアップしただけ、という投稿です。 日本語情報なんてまだほとんどないと思っていたら、意外と出てきてた。とはいえ、つい先日ポストされたばかりという記事もいくつかあり、やはりかなり新しい領域であることには変わりない。ちなみにAmazon Kinesis は何かっていうと、言わずと知れた(えっ)リアルタイムストリーミング処理をAWS上で実行できるサービス。 Amazon Kinesis(公式) Amazon KinesisはRedshiftに匹敵する破壊力 ─Hapyrus藤川氏に聞くAWSビジネスのトレンド RubyからAmazon Kinesisを操作する AWS SDK for PHP 2を利用してAmazon Kinesisを操作してみた [aws]ストリームデータ処理サービスAmazon Kinesisについて調べた結
主要なHive文字列関数のまとめ。ネタは、こちらのサイトより引用なのだが、ネタ元のサイトが見づらいので自分のところに書いてしまう。簡単な英語なんだが一応翻訳。 Functions in Hive The string functions in Hive are listed below: Hiveでの文字列関数は以下リストの通り: ASCII( string str ) The ASCII function converts the first character of the string into its numeric ascii value. ASCII関数は文字列の最初のキャラクタを数値ASCIIに変換する。 例1: ASCII(‘hadoop’) 結果: 104 例2: ASCII(‘A’) 結果: 65 CONCAT( string str1, string str2… )
MongoDBシェルをいちいちコンソールに入らないで実行するにはどうすればいいんだろう、と思ってググったら意外と回答をgetするのに手間取ったので、ここに書いておく。超コネタではあるが、書いておかないとすぐ忘れるし(ちなみに参考にした元ネタURLも忘れてしまった…)。 ローカルからの実行であれば。 $ mongo --eval "printjson(db.serverStatus())" リモートなら、以下。 $ mongo --host mongo-host001 --eval "printjson(db.serverStatus())" MongoDB shell version: 2.4.9 connecting to: test { "host" : "mongo-host001", "version" : "2.4.9", "process" : "mongod", "pid"
いつもの需要ガン無視超マイナーネタ。おいらはそもそも、どこへ向かおうとしているのか、自分でもよくわかりません。 さておき、めぐりめぐってたどり着いた、deeplearning4j(DL4j)。 deeplearning4j.org 元ネタはこの辺。 A startup called Skymind launches, pushing open source deep learning Nervana Systems raises $3.3M to build hardware designed for deep learning deeplearning4jとは。以下ミニノート。 スタートアップのSkymind社による、Java deep-learningライブラリ。 Skymind社が商用サポートするが、オープンソースプロジェクトでもある。※ RedHat/Linux的な関係 out-o
Spark standaloneモードとYARN、それぞれの詳細を翻訳してまとめてみた。表内で特に重要そうなプロパティは太字にしてる(個人的基準)。なお、情報は2014年8月時点のもの。 出典 Spark Standalone Mode Running Spark on YARN Environment Variable spark-env.sh内で利用できる項目。
ここのところMachine Learning (機械学習)周辺が水面下でザワザワ蠢いて(うごめいて)いるようなので、覚え書き。 先日、こんな記事を読んだ。 Apache Mahout, Hadoop’s original machine learning project, is moving on from MapReduce — Tech News and Analysis Apache Mahoutは、MapReduceからの離脱を進めている。in-memory data-processing フレームワークであるApache Sparkで動作する新しい機械学習エンジン H2Oを開発中、といった内容。 ここしばらくHadoop周辺でMapReduce離れの動きをチラホラ聞くようになっていたけれど、ここでも”out of vogue”(流行遅れ、廃れて)と書かれている。日本ではこの業界で
Sparkの設定やチューニングにおいてはいくつかの方法があり、かつSpark standaloneなのかYARNなのかによってもやり方が変わってわかりにくいのでまとめてみた。 (追記:情報は2014年8月時点のものです) Sparkのプロパティをセットするにはいくつか方法があるが、コード中にハードコーディングする方法がある。 val conf = new SparkConf() .setMaster("local") .setAppName("CountingSheep") .set("spark.executor.memory", "1g") val sc = new SparkContext(conf) (Sparkドキュメントより引用) 特定のプロパティをSparkConf内でハードコードしたくない場合、初期化状態でSparkConfを定義した後、オプションで任意のプロパティをセット
sshd_configの設定は、最低限の設定だけしておいてあとは放ったらかし、という状況が多いかも。何のことかわかっていない項目も実はあったりするので、おさらいしてみた。とはいえ、全て網羅するのはしんどいので、気になるところだけあげてみる。 ・・・と、その前に注意点を。 sshd_configにおいて#で始まる項目は実は全てのデフォルト値である。 (本当のコメントにはスペースが入っている) 例えば以下はコメントがついてるから無効、ではなく有効なデフォルト値となる。 #PasswordAuthentication yes これらのデフォルト値は#を外しても設定行を削除しても、設定そのものは変化しない。 設定を変更したい場合に、sshd_configの作法に沿って記述するのであれば、以下のようになる。 #PasswordAuthentication yes PasswordAuthentica
先日やっとDockerいじってみたので演習の記録など。 Dockerについてはとりあえずこの辺を参考に。 http://www.atmarkit.co.jp/ait/articles/1406/10/news031.html Dockerはローカルマシン内でも導入可能だが(注)、あまり環境いじりたくないのでAmazon ec2マシン上に構築した。Dockerはコンテナ型仮想化エンジンなので、VM内部でも仮想環境を構築可能である。これよいね。 追記(2014/08/06) (注)について。正確に言うと、OSXのネイティブでは動作しないので、Vagrantなどの仮想機構の上にLinux環境を用意する必要がある。ちょっと冗長な感じがするのだよね。 実行環境 Amazon ec2 m1.medium, CentOS6.5 epelリポジトリを利用可能にしておく。 インストール & 起動。 $ su
構成管理ツールAnsibleの語源となった超光速通信デバイスが登場する、オーソン・スコット・カードのSF小説 “Ender’s Game”(エンダーのゲーム)を読んだ。 Ansibleというデバイスは「エンダーのゲーム」に限らず他のSF小説にも登場する。wikiによるとオリジナルはアーシュラ・K・ル=グウィンのSFシリーズ・ハイニッシュ・ユニバースでありカードの作品はその影響下にある、という位置づけ。細かいことはさておき、「エンダーのゲーム」が一番よく聞くタイトルだったのでAmazonでポチった次第。(ハヤカワ文庫/新訳版) で、読み始めて数ページで「やばい、面白ろすぎる!!」となりガーっとほぼ一気読み!! しかし。 読めど進めど、Ansibleが登場しない。 どんどん読む。 出てこない。あれ…。 下巻に突入。 ガンガン読む。 Ansilbe出てこない… ひょっとしておいらは、何か間違って
追記(2014/07/25) KairosDBに関して、HBaseは現在サポートしていないことが判明したので一部修正し、リンク先も現状のアドレスに変更しました。nobusueさん、情報ありがとうございます! わりと最近時系列データベースという単語を聞くようになったが、告白すると寝耳に水状態でちょっとあせったので軽く調べてみた(きっかけはこの過去記事)。 時系列データベースとやらは国内だとサーバー監視・モニタリングの分野から広まり始めてる印象だが、元々はセンサーデータ、M2M、IoTといったキーワードと相性がいいものらしい。 (ところで IoT: Internet of Things って日本では直訳調で「モノのインターネット」と言われるが、これだと何のことだかわからん。この言い方じゃ普及しないと思うぞ…) 「時系列データベース」と書いたが、プロダクトによってはデータベースという定義ではなく
一応日本国内で、100名程度はその名を知っているであろう、ビジュアライゼーションツールのZoomdata。 割と最近そのZoomdataがMongoDBの入力ソースに対応したので、Fluentd + MongoDB + Zoomdataでログ可視化やってみた。前回のElasticsearchの時は頓挫したが、今度はできた。(淡々と書いているがかなりうれしい) 実行環境は以下の通り。もう手っ取り早く、「おひとり様」で済ませた… Amazon ec2 m1.medium, CentOS6.5 – td-agent, mongod, zoomdataセットアップ済み。 Zoomdata自体がMongoDBを使うので、間借りしてデータを投入し、それを入力ソースとした。この辺のセットアップは過去記事参照願う。fluentdの入力ソースは、いつもapacheログじゃつまらんなー、と思いつつ手っ取り早い
HiveにおけるThriftに悶々とした次は、HBase版。Thriftは概要のまとめ、後はHBaseでRESTリクエスト処理を演習した記録など。ちなみにこの記事長い。 HBaseではThrift、REST、Avro用の外部サーバが付属しており、実装すればゲートウェイサーバとして機能する。これによりサーバー内のリージョン情報がキャッシュされ、パフォーマンスの向上が期待できる。とはいえそれぞれのサーバタイプによりpros and consがあり、馬本によるユースケース例は以下のようなもの。 REST リバースプロキシやその他のキャッシュ技術との相性に優れている。多数のRESTサーバを並列に実行し、それらの間で負荷を分散させるプランニングを行う。例えばRESTサーバを各アプリケーションサーバ上で実行させ、アプリケーションとサーバを一対一の関係にする。リクエスト数がそれほど多くなく、ただしサイズ
過去記事でFlumeからElasticsearch(以下ES)にデータを送る、というのをやってみた。このときは 送信元 Flume -> ES という風に直接送信していたが、real world では「送信元 -> 集約ノード -> データストア」の構成をとるケースが多いと思われる。 Flumeで複数のデータフローをまたがる場合の決め事として、各フローのつなぎ目に相当する部分のインターフェースがavroプロトコルになる(thriftもOKだったかな)。つまり、送信元のsink typeと, 受け取る側のsource typeは共にavroとする。このつなぎによるデータフローは、任意に増やすことが可能。よって、中継するだけのノードはsource type, sink typeともにavroになるはず。 と、説明だけ書いても実際どうするのよ、という話なので集約ノードを通す場合の設定例を挙げてお
前回のyarn-site.xmlに引き続き、YARN用の主要な mapred-site.xml のプロパティをまとめてみた。CPUコア/メモリリソース周りはyarn-site.xmlのプロパティと合わせた上で、矛盾がないように設定する必要があるので注意(その辺で重要そうなプロパティ名は太字にしてある)。前回投稿Hadoop YARN – yarn-site.xmlの設定もよければ参考に。 # テーブル終端でスクロールするとDescriptionが読めます。見辛くてすみません。 mapred-site.xml NameDefaultsDescription
世の中の様子とかHadoop Conference Japan 2014の様子とか見ていると、「YARNに手こずってるのは他も同じなんだな、やっぱり」と分かる。(どうでもよいが前回に比べるとスーツ姿が減っていた。SIer率減少?あ、夏だから?) MRv1に比べるとリソース管理の概念が大幅に変わったし、設定のプロパティ名もややこしいのがあってトラップ満載。ConferenceのセッションではVMからパクってくる、ambariから設定するなどの案があったが、意味がわかってないとトラブルシューティングやチューニングができないのだよね。手っ取り早く動かしたいだけなら最初はパクリでいいと思うが、結局のところ自分で理解を深めるプロセスは不可避ではないかと。 YARNについては過去の投稿でも何度か書いてきたが、混沌としてきたので自分なりにyarn-site.xmlの主要なプロパティについてまとめてみた。
いわゆるログ収集プロダクトとしては言うまでもなくFluentdが大人気なわけだが、個人的には国内では今いちマイナーなFlumeもよいプロダクトだと思っている。堅牢だし、「sink」という単位でフローを組み合わせる概念は分かりやすい。 で、タイトルの件。FluentdからElasticsearchにログ送信する、というのは過去記事でもやっていて簡単にできることは分かってるのだが、Flumeにもelasticsearch sink機能があるのでやれるはずだ!とやってみた。 実行環境は以下の通り。どちらもJDK1.7を導入済み。 データ送信ノード:Amazon EC2 m1.small, CentOS6.5, flume-ng-agentをインストール ElasticSearchノード:Amazon EC2 m1.mideum, CentOS6.5, elasticsearchをインストール 本
前回投稿でインストールしたSparkを、pysparkから軽く触ってみる。 環境はAmazon ec2上のCentOS 6.5、CDH5(beta2)。 その前にテストデータを用意しておく。過去記事にも書いたダミーデータ生成ライブラリでこんなCSVを作った。データは10000行。ダミーデータ作るのも面倒だったらログファイルとか、テキストデータなら何でもいいと思う。 29297,Ms. Jolie Haley DDS,2014-03-19 09:43:20 23872,Ayana Stiedemann,2014-03-03 10:31:44 23298,Milton Marquardt,2014-03-26 22:19:41 25038,Damian Kihn,2014-03-23 03:30:08 23743,Lucie Stanton,2014-03-14 20:53:33 28979,
しばらく前にMongoDBのバックアップスクリプトのサンプルを探してみたが、mongodumpの例が多かったみたいだな。シングル構成のmongoでmongodumpをシェルで実行とか。こういっちゃ何だけど、それで済むならググらない。 レプリカセットのセカンダリで取得、かつ環境はAmazon EC2だからスナップショット取得するのがいい、という条件が重なると結局自作か。で、Pythonで書いてみたのが以下。本来は切り詰めてもっとスマートにするべきなのだが、ここではベタにやることそのまま書いている。でないと、書いた本人も忘れるから。 追記 AWSの認証情報は、/etc/boto.cfgに記載している前提です(過去記事参照)。 mongo_backup_ec2.py #!/usr/bin/env python # -*- coding: utf-8 -*- from pymongo import
dummyデータ生成のサイトはいくつかあるのだが、いわゆる個人情報を想定していたり、データタイプの自由度が今イチだったり、大量データは無理だよね…ってことで、結局プログラムで生成するのが現実的。Pythonだったらfake-factoryというのがあり、これが簡単でいい。 実装方法は以下参照。 http://qiita.com/airtoxin/items/964b80b40318eadddb6b Macにインストールしようとしたところ、pipがこけた。。調べるのが面倒なので以下よりtarボールをダウンロード。これでも普通に使えます。使用方法詳細も以下を参照。 https://pypi.python.org/pypi/fake-factory これより、解凍したtarボール内で作業。 以下スクリプト例。ほぼ参照サイトさんから拝借しているが、出力ファイル名にユニークな日付時刻を付与する、など
タイトルの件、SBTでのビルド&実行にハマって頭痛が痛くなったので一旦保留にしていた矢先に、以下記事が公開されたのでトライしてみた。今回はMavenでビルドしてみるパターン。 How-to: Run a Simple Apache Spark App in CDH 5 Sparkでワードカウントしてみる SBTの時ほどハマらなかったが、それでも少しはハマったので記録しておく。環境はAWS上のCentOS 6.5で、CDH5の疑似分散モード。 Mavenが入ってなかったらインストール。 $ wget http://ftp.kddilabs.jp/infosystems/apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz $ tar xvzf apache-maven-3.2.1-bin.tar.gz #抜けていた
前回からの続き。 以下に沿って、Spark & YARNモードでサンプルプログラムSparkPi を実行してみた。環境はAWSのm1.mideumマシン + CentOS6.5、CDH5のHadoop疑似分散環境にSparkも同居。Sparkのバージョンはまだ0.9.0。 Running Spark Applications (CDH5) jarファイルをHDFSにコピー。 $ hadoop fs -mkdir -p /user/spark/share/lib $ hadoop fs -put /usr/lib/spark/assembly/lib/spark-assembly_2.10-0.9.0-cdh5.0.0-hadoop2.3.0-cdh5.0.0.jar \ /user/spark/share/lib/spark-assembly.jar spark-env.shは、以下プロパ
しばらく前から気になっていたタイトルの問題、以下ブログに詳細が書かれており、やっと点が線につながってきた… Apache Spark Resource Management and YARN App Models 寝かせておくといつになるか分からない、かつ、読む気と書く気が失せるので、個人的に気になった点だけ今ここで要約しておく。意訳/誤訳/勝手に追記したりしてるので参考はほどほどに。 以下… MapReduceモデルでは最も上位の計算ユニットはJobだが、Sparkはその上にapplicationというレベルが存在する。applicatinsはJobをシーケンシャルに、もしくはパラレルに実行することができる。 Applicationはexecutorsと呼ばれるプロセスを持つ。executorはジョブが走っていない時でも起動している(データをメモリに保持し、タスクに対して素早く対応するこ
次のページ
このページを最初にブックマークしてみませんか?
『OpenGroove – Be Futuristic.』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く