タグ

2010年12月7日のブックマーク (9件)

  • WordCount - HADOOP2 - Apache Software Foundation

    WordCount Example WordCount example reads text files and counts how often words occur. The input is text files and the output is text files, each line of which contains a word and the count of how often it occured, separated by a tab. Each mapper takes a line as input and breaks it into words. It then emits a key/value pair of the word and 1. Each reducer sums the counts for each word and emits a

  • MapReduce デザインパターン (2) - めもめも

    "word co-occurrence problem" (文書内の近くにペアで出現する単語の数をカウントする処理)の2つの基パターンである "Pairs" と "Stripes" から、まずは、Pairs を見てみます。 事前準備 「カラマーゾフの兄弟」のテキストを HDFS に保存しておきます。 $ wget http://www.gutenberg.org/files/28054/28054.zip $ unzip 28054.zip $ hadoop fs -copyFromLocal 28054.txt Karamazov.txt ソースコード 例えば、連続して出現する単語のペアをカウントする場合、次のようなコードが書けます。 pairs/TextPair.java package pairs; /* テキストのタプルを Key に使用するためのクラスです。 像のサンプル・コ

    MapReduce デザインパターン (2) - めもめも
  • Java回顧録 〜独白: 僕は全ての事をJavaから学んだ〜 - 風と宇宙とプログラム

    先日Javaのコードを3年振りくらいで書いてみたら、無性にJavaについて振り返ってみたくなった。Javaの誕生当時をリアルタイムで経験した僕にとってJavaは感慨深いものであり、多くのことをJavaから学び、僕を成長させてくれた原点でもある。 僕とJavaとの関わりはJavaがまだOakと呼ばれていた頃から始まる。1994年の暮れの頃だったと思う。Oakで書かれたWebブラウザはWebRunnerと呼ばれていて、両者はほとんど一体だった。会社の上長からこれを使って携帯情報端末機器を開発することになったから、秘密裏に調査しておくようにと突然指示された。後になって知ったことだが、Oakは家電などの組込み系を想定して開発されたもので、当時Sunは日の多くのメーカに呼びかけてOak を普及させようとしていたようだ。 その頃のインターネット事情というのは、Mozilla(Netscape)が登場

    Java回顧録 〜独白: 僕は全ての事をJavaから学んだ〜 - 風と宇宙とプログラム
    volonte
    volonte 2010/12/07
  • Hadoop MapReduceプログラムを解剖する

    オープンソース・ソフトウェア「Hadoop」のMapReduceジョブは、標準ではJavaで記述します(その他には、Pig、Hive、JAQLといったものがあります)。しかし、意外と初心者には分かりにくいと筆者は感じます。記事では、MapReduceジョブのサンプルコードを使って、できる限り正しくコードの意味を理解し、MapReduceへの入り口を示したいと思います。 HadoopでMapReduceを記述するときに使うAPIが、0.19から0.20に変わるところで新しくなっています。実は、現時点でHadoopプロジェクト体からでさえも、新APIを使ったサンプルが提示されていません。記事では、新しいAPIで筆者が書き直したサンプルを使って解説しますので、このサンプルは0.19以前のHadoopでは動かないことに注意してください。この記事は、0.20.2を使って検証し、解説しています。

  • HadoopでN-gramで転置インデックス作成

    Hadoopのサンプルコードと言えばwordcountぐらいしか見かけないということで,転置インデックスのサンプルを作ってみました. 転置インデックス作成をMapReduceのモデルで表すと以下になります.google論文に習った擬似コードで表します. Map: 単語ごとに文書名を出力しています. 単語の分割をfor each wordとしていますが,日語の場合単語の分割が問題ですが,今回は単純なN-gramで実装しました. map(String key, String value): //key: 文章名 //value: 文章の内容 for each word w in value: EmitIntermediate(w, key); Reduce: 重複を取り除くだけです.valuesでソートするとなお良いかもしれません reduce(String key, Iterato

  • MapReduceのJava実装Apache Hadoopを使ってみた (1/3) - @IT

    MapReduceのJava実装Apache Hadoopを使ってみた:いま再注目の分散処理技術(後編)(1/3 ページ) 最近注目を浴びている分散処理技術MapReduce」の利点をサンプルからアルゴリズムレベルで理解し、昔からあるJava関連の分散処理技術を見直す特集企画(編集部) Apache Hadoopプロジェクトとは何か? 特集では、いま再注目の分散処理技術についていろいろと紹介してきました。前編の「GoogleMapReduceアルゴリズムをJavaで理解する」では、分散処理技術で最近注目を浴びているものとして、グーグルMapReduceアルゴリズムを紹介し、中編の「イロイロな分散処理技術とイマドキのWebサービス」では、MapReduceに至るまでのさまざまな分散処理技術Webサービスについて紹介しました。 そのMapReduceアルゴリズムをJavaで実装したも

    MapReduceのJava実装Apache Hadoopを使ってみた (1/3) - @IT
  • MapReduce デザインパターン (6) - めもめも

    "Graph algorithms" を考えます。 下図の S, A, B, C, D は 5 つの Web ページで、矢印は、Web リンクを表しているとします。(このような関係は、『有向グラフ』と捉えることができます。)このとき、ページ S からスタートして、最低、何クリックで、A 〜 D の各ページに到達するかを計算します。 ___________ ___________ |     ↓| ↓ S → A → B → C ← D ↑____|↑__________|____↑ 再帰的な計算をごにょごにょすれば、何とかなる気がしますが(普通は、ダイクストラのアルゴリズムを使います)、MapReduce の場合は、基的には『端から順番になめていく』タイプの計算しかできないので、次のように考えます。 1. 各ページの求める答えを(最初は不明なので)『?』と定義します。(S 自身は、不明で

    MapReduce デザインパターン (6) - めもめも
  • MapReduce/Hadoop環境構築(Linux編) - 俺の基地

    Hadoop環境構築メモ vmware上にvmとして構築 CentOS5.3のインストール 標準でサーバーとかは入れていない vmware-toolsをインストールしてホストWindowsと楽に連携できるようにしておく 標準でopenjdkが入っているので消しておく yum remove java javaを使うプログラムがごっそりなくなるけど気にしない。 Sunバージョンを使うのでrpmをダウンロードします。 Java SE ダウンロード - Sun Developer Network (SDN) ここらへんから Linux版をダウンロード これ jdk-6u15-linux-i586-rpm.bin chmod +x jdk-6u15-linux-i586-rpm.bin ./jdk-6u15-linux-i586-rpm.bin バージョンチェック java -vers

  • Hadoopサンプル(Hishidama's Hadoop Java sample Memo)

    行毎の合算を行うサンプル 以下のような成績表(試験の点数のCSVファイル)から、各学生ごとの合計点数を算出する例。 #番号,名前, 数学,国語,理科,社会,英語 101,天才, 100, 100, 100, 100, 100 201,無気力, 5, 30, 10, 20, 15 102,ひしだま, 90, 85, 80, 50, 10 202,hoge, 10, 30, 25, 45, 20 103,foo, 60, 60, 60, 60, 25 204,xxx, 80, 77, 90, 40, 44 205,yyy, 65, 90, 55, 80, 65 104,zzz, 40, 60, 60, 70, 20 出力イメージ: 101,天才 500 102,ひしだま 315 103,foo 265 104,zzz 250 201,無気力 80 202,hoge 130 204,xxx 33