夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

Apache Spark Streamingの論文を読んでみます(1章

こんにちは。ここ何回かでApache Spark自体の機構は大体わかりました。 そのため、今度はApache Sparkを基にしたストリーム処理基盤であるApache Spark Streamingについても確認してみます。読んだ論文は以下です。 「Discretized Streams: A Fault-Tolerant…

Resilient Distributed Datasetsに関する論文まとめ(1章〜5章

こんにちは。Resilient Distributed Datasetsに関する論文 「Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing」 (http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf) について、概念と動作概…

Resilient Distributed Datasetsに関する論文を読んでみます(5章

以下論文を読んでみようの続きで、今回は第5章です。「Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing」 (http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf)内容としては、「Implementati…

Resilient Distributed Datasetsに関する論文を読んでみます(4章

こんにちは。以下論文を読んでみようの続きで、今回は第4章です。「Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing」 (http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf)内容としては、「…

Resilient Distributed Datasetsに関する論文を読んでみます(3章

こんにちは。以下論文を読んでみようの続きで、今回は第章です。「Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing」 (http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf)内容としては、「Sp…

Resilient Distributed Datasetsに関する論文を読んでみます(2章

こんにちは。以下論文を読んでみようの続きで、今回は第2章です。「Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing」 (http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf)内容としては、「…

SpringXD=リアルタイム解析やバッチ処理同士をつなぐ汎用、分散、拡張可能なデータ統合基盤?

こんにちは。最近色々手を出し過ぎな気もしますが、気になったものがあったのでちとまとめてみます。 それは、Spring XDです。 http://www.springsource.org/spring-xdぱっとトップページを見てみるとやたらと使えそうに見えたので、 実際にチュートリアルを…

Resilient Distributed Datasetsに関する論文を読んでみます(1章

こんにちは。前回、前々回でApache Spark、Spark Streamingの概要がわかりました。ですが、内部で使用している共有分散メモリ機構であるResilient Distributed Datasets(RDDs)が 鍵となる割に概要しか資料からはわからなかったため、論文を読むことでもう一…

Apache Spark Streaming=大規模準リアルタイムストリーム処理?

こんにちは。Sparkについて調べてみよう企画第2段(?)です。 1回目はまずSparkとは何かの概要資料を確認してみました。 その先はRDDの構造を説明している論文と、後Spark Streamingというストリーム処理基盤の資料がありました。とりあえず、そんなわけ…

Apache Sparkってどんなものか見てみる(その1

こんにちは。Kafkaを試している最中で微妙ですが、最近使えるのかなぁ、と情報を集めているのが「Apache Spark」です。MapReduceと同じく分散並行処理を行う基盤なのですが、MapReduceよりも数十倍速いとかの情報があります。 ・・・んな阿呆な、とも思った…

VMWare ESXi 5.1update1をIntel マザボのPCにインストールした記録

こんにちは。最近Stormで複数のバージョンを確認する等1台のマシンでは不便で仕方がない状態になってきたため、 「Vagrant-Vsphere」を使ってこのあたりの環境をお手軽に管理しようと思い立ち、 家でサーバ用途として使っていたマシンにVMWare ESXi 5.1upda…

StormのMLで流れていた情報まとめ(2013/07〜2013/08)

こんにちは。情報が確定では無かったり、内部の話になってすぐどうという話ではない情報をちょくちょくMLから拾ってきていますが、 このまま死蔵するのも何なので、記事として残しておきます。 ・・・さすがに、最近は新規の情報は減ってきたのでペースは以…

StormのMasterSourceをビルドしてみる

こんにちは。最近外を移動する際に日陰を移動できるルートを確認しながら移動する癖がつきつつある今日この頃です。 別に日光に当たったからと言って黄色い汁になって溶けてしまったりはしないんですが、まぁ一応w さて、前回Storm0.8.2系のビルド手順を確…

Clojure勉強日記(その28 データ型(その2

前回はまって1回では終わりませんでしたが、続けます。前回データ型を定義して動くことが確認できたので、 今回は実際の中身を実装してみる形になりますね。まず、実際にCryptoFilterの中身を実装したコードが以下のようになりました。 src/reader/crypto.c…

Storm0.8.2をビルドしてみる

こんにちは。ここ数日暑過ぎて半分溶けている感覚がする今日この頃です。溶ける・・・とは全く関係ないのですが、 最近Stormのコア側に一部修正を入れて試してみたいことがあったので、ビルドをした時の手順をまとめてみます。 対象バージョンはまずは現状の…

Clojure勉強日記(その27 データ型(その1

徐々に抽象度・・・というか単体では動かしにくいコードが揃ってきましたが、 とりあえず続けます。前回はプロトコルを使って既存の型に新たなメソッドを追加する方法を見てきました。 次は、Clojureで新たな型を作りたくなったらどうするか?を実現する「デ…

Apache Kafkaを動かしてみる

こんにちは。これまで以下のような記事で実際にKafkaとは何か、や 実際にビルドしてみていまいちうまくいかないとかを繰り返してきましたが、 本家サイト側でついに最新版である0.8.0(β)のバイナリリリースが公開されたということもあり、 実際に環境を構…

Clojure勉強日記(その26 インタフェース/プロトコル

1.インタフェース Javaの場合前回の投稿のようなケースをどうするかというとインタフェースを切って、 実装クラスを追加することで拡張する方式を取ります。インタフェースは以下のような利点があります。 実体クラスは複数のインタフェースを実装することが…

Clojure勉強日記(その25 抽象化に向けたプログラミング

こんにちは。今回からまた話題が変わります。「抽象化」というJavaでもよくつかわれる技法がClojure独自の抽象化方式で どう表されるのか・・という内容です。 元々、Clojureはproxyとgenclassを用いて「Javaの抽象化をうまく利用できる」という方針でした。…

Apache Kafkaのレプリケーション

こんにちは。前回に続いて、Apache Kafkaのネタです。今期の最新バージョンからレプリケーション機能が追加されたとのため、 レプリケーション機能の設計を実際に確認してみます。 https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Replication レ…

Apache Kafka 0.8.0の新機能/変更点

こんにちは。最近Clojureのお勉強投稿ばかりでしたが、Kafkaについて肝心なことを見落としていたので記述しておきます。Kafkaは現在0.8.0が最新バージョンで開発が進められています。 かつ、0.8.0で大きく信頼性が向上しているようなので、実際何が新しくな…

Clojure勉強日記(その24 SnakeGameをClojureで書いてみる(その3

こんにちは。いよいよ大詰め。 今まではコマンドライン上でしか動作しなかったゲームをGUI上で表示してみます。■snake.clj:Graphicの塗りつぶし処理 ; Fill-Points (defn fill-point [graphic pt color] (let [[x y width heignt] (point-to-screen-rect pt…

Clojure勉強日記(その23 SnakeGameをClojureで書いてみる(その2

こんにちは。では、SnakeGameの状態更新部分を進めていきます。 今回、状態が更新されるタイミングは以下の3つです。 ゲームを開始する。 ターンごとにヘビが位置を更新する。リンゴが食べられていたらヘビの長さを伸ばし、リンゴを再配置する。 ヘビの向き…

Clojure勉強日記(その22 SnakeGameをClojureで書いてみる(その1

こんにちは。今まで確認してきた状態管理のAPIを使い、「SnakeGame」を作ってみます。 と言いつつ、そもそもSnakeGameを起動するところからしてはまったのでそこから(汗まず、前提として「https://github.com/stuarthalloway/programming-clojure」からダウ…

Clojure勉強日記(その21 varを使用したスレッドローカルな状態管理

こんにちは。STMの機構を用いた状態更新が完了し、次はvarの確認に入ります。 defやdefnの呼び出しは、メタデータ:dynamicが与えられると動的なvarになるとのことです。・・・わかりませんね(汗 なので、やはりこちらも一度書いて試してみます。 ルート束縛…

Clojure勉強日記(その20 エージェントを使った非同期更新

こんにちは。前回に続いて状態更新ものです。 これまでまとめていたrefとatomは「同期的な更新」を扱っていました。 ここで言う同期的な更新とは、「関数呼び出しが完了した時点で状態の更新も完了している」ということを指します。ですが、Clojureでは非同…

Clojure勉強日記(その19 アトムを使った非協調的、同期的な更新

こんにちは。では続きに入ります。前回はrefを用いたSTMについて書いていましたが、Clojureには別の方式として「アトム」があります。違いとしては・・下記です。 複数のrefの更新はトランザクションを使って協調させなければならなかった。 アトムは単一の…

Clojure勉強日記(その18 ref とソフトウェアトランザクショナルメモリ

こんにちは。前回まででとりあえず関数型プログラミングの流儀の入口のようなものが完了し、 次は並行性、並列性、ロック・・と、今度は関数型を使うことによる具体的な利点を確認する内容です。 1.Clojureが用意する参照型 まず、初めにClojureが用意してい…

Clojure勉強日記(その17 より複雑な再帰

こんにちは。今回は以前試した再帰よりより複雑なケースを用いて再帰を試していく内容のようです。 1.相互再帰 言葉の通り、相互再帰とは2つの関数が互いを呼び合う再帰です。 AがAを呼んでそれがAを呼ぶ・・・という形ではなく、AがBを呼び、BがCを呼び、C…

Clojure勉強日記(その16 より「書かずに」すませる方法

こんにちは。とりあえず遅延シーケンスを体験したので、 次はよりClojureの機能を使って簡単に済ませる方法のようです。 何回パターンが発生する? 下記のようなベクタを考えて、 [:A :B :B :A :A :B] A → Aのようなパターンが発生する回数が何回あるかを考…