5. なぜHadoop?(2) 必要なのは、スケールアップ=マシンのパワーアップではない スケールアウト=分散処理こそが必要 多くの場合、スケーラビリティのネックになっているのはI/O 特にディスクのランダムアクセス性能(IOPS)は、この20年でほとんど伸びていない http://www.youtube.com/watch?v=9eMWG3fwiEU In pioneer days they used oxen for heavy pulling, and when one ox couldn’t budge a log, they didn’t try to grow a larger ox. We shouldn’t be trying for bigger computers, but formore systems of computers. —Grace Hopper
16. Java(これが標準)この他にも状況に応じていろいろなやり方があるので、HadoopConfefence Japan 2009の資料も参考にしてください Hadoopによる入力 (0, Freebase is an open database of the world’s information, covering millions of topics in...) (1, hundreds of categories. Drawing from large open data sets like Wikipedia, MusicBrainz,...) (2, and the SEC archives, it contains structured information on many popular topics,...) (3, including movies, music, people and locations – all reconciled and freely available. This...) (4, information is supplemented by the efforts of a passionate global community of users...) for line in sys.stdin: for word in line.split(): print word + “” + “1” mapタスクによる処理 他のmapタスクによる処理 (Freebase , 1) (is , 1) (an , 1) (open , 1) (database , 1) (MySQL, 1) (is, 1) (not, 1) (proprietary, −5) (database, 119) for aLine in sys.stdin: currentWord= aLine.split()[0] if currentWord == prevWord: count += 1 else: print "%s%d" % (prevWord, count) count = 1 prevWord= currentWord Hadoopによるシャッフル (freebase, [1]) (is, [1, 1]) (an, [1]) (open, [1]) (database, [1, 1]) reduceタスクによる処理 (freebase, 1) (is, 2) (an, 1 (open, 1) (database, 2)
17. 分散ファイルシステムHDFS Hadoop Distributed File System 耐障害性(データブロックの複製) ディスクのシークを減らすためのデータブロック(デフォルト64MB) 大量のデータをシーケンシャルアクセスすることを想定している ネットワークトポロジを意識し、効率的に分散処理を行うためのブロック配置を行う
18. Hadoop/HDFSのいいところ データセンター内のもっとも貴重なリソースは? ネットワーク帯域、次いでディスクの処理能力 「データローカリティ」を意識したデータブロックの複製とタスク配置 複製度3なら、ローカルノード、別ラック内のノード、同一ラック内の別ノードへ タスクはできる限りローカルのデータノード内のデータで処理を行えるように管理される ただし、EMRではラックアウェアネスは実現されない ラックA ラックB ノードA-1 ノードB-1 データノード データノード Data Bloock Data Bloock Data Bloock Data Bloock タスク Data Bloock タスク Data Bloock ノードA-2 ノードB-2 データノード データノード Data Bloock Data Bloock Data Bloock タスク Data Bloock タスク Data Bloock Data Bloock ノードA-3 ノードB-3 データノード データノード Data Bloock Data Bloock Data Bloock タスク Data Bloock タスク Data Bloock Data Bloock
19. ローカル開発環境を用意してみた Linux(CentOS5)とCDH(Cloudera Distribution including Apache Hadoop) ver 3 https://ccp.cloudera.com/display/SUPPORT/Downloads 疑似分散モード(Psuedo Distribution mode)でインストール Yumやaptを使って簡単にできます https://ccp.cloudera.com/display/CDHDOC/CDH3+Quick+Start+Guide https://ccp.cloudera.com/display/CDHDOC/CDH3+Installation+Guide デモンストレーション Wikipediaでwordcount しょぼいサンプルですみません。 ストリーミングでの実行方法は象本に載ってます