Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hadoop4 #TechLunch

Hadoop4 #TechLunch

2012/05/09(水) @ Livesense TechLunch
発表者:
福田慎太郎

Livesense Inc.

April 23, 2014
Tweet

More Decks by Livesense Inc.

Other Decks in Technology

Transcript

  1. 1 Copyright © Livesense Inc. All rights reserved. Agenda •

    MapReduceプログラムの構成 • Wikipediaリンクカウントプログラム • Wikipediaカウント結果 • 次回予告
  2. 2 Copyright © Livesense Inc. All rights reserved. 1.MapReduceプログラムの構成 •

    MapReduceに最低限必要なクラス • Main Methodを持つクラス • Mapクラス • Reduceクラス
  3. 3 Copyright © Livesense Inc. All rights reserved. 1.MapReduceプログラムの構成 •

    単純なWordCountのソース public class WordCount { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: wordcount <in> <out>"); System.exit(2); } Job job = new Job(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); }
  4. 4 Copyright © Livesense Inc. All rights reserved. 1.MapReduceプログラムの構成 •

    単純なWordCountのソース(Mapper) public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } }
  5. 5 Copyright © Livesense Inc. All rights reserved. 1.MapReduceプログラムの構成 •

    単純なWordCountのソース(Reducer) public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } }
  6. 6 Copyright © Livesense Inc. All rights reserved. 2.Wikipediaリンクカウントプログラム •

    Wikipediaの全情報がXMLファイルでダウンロード可能 • http://dumps.wikimedia.org/jawiki/ • XMLは次のような構成(Header部分) <mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="ja"> <siteinfo> <sitename>Wikipedia</sitename> <base>http://ja.wikipedia.org/wiki/ %E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC %E3%82%B8</base> <generator>MediaWiki 1.20wmf1</generator> <case>first-letter</case> <namespaces> <namespace key="-2" case="first-letter">メディア</namespace> </namespaces> </siteinfo>
  7. 7 Copyright © Livesense Inc. All rights reserved. 2.Wikipediaリンクカウントプログラム •

    XMLは次のような構成(記事部分) <page> <title>言語</title> <ns>0</ns> <id>10</id> <revision> <id>42253729</id> <timestamp>2012-04-27T12:54:20Z</timestamp> <contributor> <username>HIDECCHI001</username> <id>523459</id> </contributor> <text xml:space="preserve">       本文 </text> </revision> </page>
  8. 8 Copyright © Livesense Inc. All rights reserved. 2.Wikipediaリンクカウントプログラム •

    この<page></page>部分の<text></text>で囲まれた箇所から リンクを抽出し、最も多く参照されてる記事を得るのが目的 <page> ~略~ <text xml:space="preserve"> {{言語学}} '''言語'''(げんご {{lang-en-short|Language}})とは、[[コミュニケーション]]のための[[記号]] の体系である。 狭義には[[人間]]の[[音声]]による[[音声言語]]を指すが、広義には[[身振り]]など音声以外 の要素も含む。また、[[動物]]間のコミュニケーションや、[[コンピュータ]]に指示するための [[記号]]体系を指す場合もある。 [[日本語]]や[[英語]]のように自然発生的に生まれた言語を[[自然言語]]と呼び、これに対 して人為的に創作された言語を[[人工言語]]と呼ぶ。後者には、もっぱら人間同士による やりとりを目的とした[[エスペラント]]、コンピュータの操作を目的とした[[プログラミング言 語]]、それから人間にもコンピュータにも適した[[ロジバン]]といったものがある。自然言語 は、[[母語]]とする人々の存在を失うと使用されなくなり[[死語 (言語学)|死語]]([[廃語]])と 呼ばれる。 </text> ~略~ </page>
  9. 9 Copyright © Livesense Inc. All rights reserved. • これがWikipediaの最も多く参照されている記事だ!

    • って言いたかったんですけど – XMLファイルのサイズがでかすぎて • HDDで処理しきれなかったため。。。 3.Wikipediaカウント結果
  10. 11 Copyright © Livesense Inc. All rights reserved. • まずは第30位~第21位まで

    順位 記事タイトル 参照数 21位 DQN 523 22位 腐女子 519 23位 801 512 24位 2008年 492 25位 Hyde 487 26位 ドラえもん 475 27位 日本人 475 28位 ドイツ 447 29位 2006年 437 30位 萌え 433 3.WikipediaUncyclopediaカウント結果
  11. 12 Copyright © Livesense Inc. All rights reserved. • 第20位~第11位まで

    順位 記事タイトル 参照数 11位 神 699 12位 アニメ 681 13位 中二病 680 14位 誰も気にしない 629 15位 東京 616 16位 2ちゃんねる 593 17位 人間 584 18位 2007年 564 19位 ロリコン 559 20位 中国 557 3.WikipediaUncyclopediaカウント結果
  12. 13 Copyright © Livesense Inc. All rights reserved. • 第10位~第6位まで

    順位 記事タイトル 参照数 6位 エクストリームスポーツ 849 7位 アメリカ合衆国 817 8位 アンサイクロペディア 783 9位 ツンデレ 764 10位 アメリカ 759 3.WikipediaUncyclopediaカウント結果
  13. 14 Copyright © Livesense Inc. All rights reserved. • 第5位からの発表の前に・・・1位と2位が普通だったので先に発

    表 順位 記事タイトル 参照数 1位 日本 2596 2位 ウィキペディア 1239 3.WikipediaUncyclopediaカウント結果
  14. 15 Copyright © Livesense Inc. All rights reserved. • 実質3位の第5位

    • なんだと思いますか? 3.WikipediaUncyclopediaカウント結果
  15. 16 Copyright © Livesense Inc. All rights reserved. • 第5位

    3.WikipediaUncyclopediaカウント結果 順位 記事タイトル 参照数 5位 中の人 886
  16. 17 Copyright © Livesense Inc. All rights reserved. • 実質2位の第4位

    • なんだと思いますか? 3.WikipediaUncyclopediaカウント結果
  17. 18 Copyright © Livesense Inc. All rights reserved. • 第4位

    3.WikipediaUncyclopediaカウント結果 順位 記事タイトル 参照数 4位 オタク 902
  18. 19 Copyright © Livesense Inc. All rights reserved. • 実質1位の第3位

    • なんだと思いますか? 3.WikipediaUncyclopediaカウント結果
  19. 20 Copyright © Livesense Inc. All rights reserved. • 第3位

    3.WikipediaUncyclopediaカウント結果 順位 記事タイトル 参照数 3位 156 909
  20. 21 Copyright © Livesense Inc. All rights reserved. • ちなみに、hyde関連だけを抽出してみると

    3.WikipediaUncyclopediaカウント結果 順位 記事タイトル 参照数 3位 156 909 25位 Hyde 487 150位 Hyde (単位) 197 158位 Hydeの身長は156cm 193 159位 156cm 191 1706位 土井八郎 41 6819位 国道156号 12 7498位 日本hydeの身長は156cmじゃないよ協会 11 9179位 日本hydeの身長は156cmだよ協会 9 9180位 日本hydeの身長は256cmだよ協会 9 10589位 156年 7 13927位 1560年 5 27584位 Hydeの身長は平常時156cm 2
  21. 22 Copyright © Livesense Inc. All rights reserved. • ちなみに、hyde関連だけを抽出してみると

    3.WikipediaUncyclopediaカウント結果 順位 記事タイトル 参照数 30901位 ジキル博士とhyde氏 2 30902位 ジキル博士とハイド氏 2 40172位 156m 1 40173位 156キャノン 1 40174位 156㎝ 1 40175位 156回 1 40329位 1hyde 1 42877位 Hyde (馬鹿単位) 1 42878位 HydeCalc 1 42879位 Hydeの身長はテレビ出演時161cm(シークレットブー 1 42880位 Hydeの身長はテレビ出演時161cm(シークレットブーツ) 1 42881位 Hydeの身長は検閲により削除 1 73456位 兵庫県hydeの身長は156cmだよ協会 1
  22. 24 Copyright © Livesense Inc. All rights reserved. 4.次回予告 •

    Webアプリケーションのセキュリティについて