Help us understand the problem. What is going on with this article?

さくらのクラウドにAnsibleでhadoopを構築してみた

More than 3 years have passed since last update.

日付が変わり、さくらインターネットは20周年を迎えました。
これまでありがとうございました。これからもよろしくお願いします!!

と言うことで、さくらの聖夜から帰ってきて、日付が変わってしまい恐縮ですが、hadoopについて簡単に書こうと思います。

はじめに

なぜ今になってhadoopの構築を書いてるのか、というところから。

先日、大量のデータに共通の処理をしないといけない事情が発生したため、急遽hadoopのクラスタを構築しました。

以前セットアップして使ったのは4年前の学生時代の時で、当時の記憶が全く残っておらず、ドキュメントを読みながらセットアップしました。

定常的に使うことはないのですが、突発的に必要になることがあるので、せっかくなのでAnsibleのPlaybookにしましたのでご紹介します。

(構築したものの、悲しいことに今回は案件がなくなり不要になってしまいました...)

hadoopとは

簡単に言うと、複数のホストで、たくさんのデータを管理し、それらのデータに対し並列で処理を行うことができる大規模データ分散処理のフレームワークです。

データを管理するHDFS (hadoop File System) と、ジョブを管理するYARN (Yet Another Resource Negotiator) で構成されています。

並列で処理をする手法は色々ありますが、hadoopではMapReduceが使われることが多いです。

MapReduceは、一つ一つのファイルに対してある一定の処理を独立・分散して行い (Map) 、それらの結果を並べ替え (Shuffle) 、集計する (Reduce) というロジックになっています。

例えば、「大量のテキストファイルに対し、語彙ごとの発生数を数える」などに適しています。

この場合、Mapでは一つのファイルに対して、

  1. テキストファイルを形態素に分解
  2. 形態素ごとに発生頻度を数える

と言う処理を行い、Reduceで、

  1. 各ファイルでの形態素ごとの発生頻度を合計する

という流れになります。

hadoopを使えば、MapとReduceの処理さえ自分で書けば、大量のテキストファイルの保管はHDFSが、MapReduceの並列実行はYARNが自動的に行ってくれます。

サーバの準備

今回はさくらのクラウドに6台のサーバを構築用意します。
インターネットに直接つながず、VPCルーターを使い、各サーバにはローカルIPアドレスを付与しました。

OSはちょっと古いですがUbuntu 14.04を使っています。

IP Address Hostname Roles
192.168.11.101 hadoop-01 namenode, datanode, yarn
192.168.11.102 hadoop-02 datanode, yarn
192.168.11.103 hadoop-03 datanode, yarn
192.168.11.104 hadoop-04 datanode, yarn
192.168.11.105 hadoop-05 datanode, yarn
192.168.11.106 hadoop-06 datanode, yarn

さくらのクラウドにサーバを用意するとこのようなマップになると思います。

image

VPCルーターにはL2TP/IPSecを使ったリモートアクセスの機能がありますので、VPNを通してこれらのサーバーにアクセスすることとします。

パスワードは、この後のPlaybookと合わせるために、kotamagoH@doop としておいてください。
(あるいはPlaybookの実行前に、 group_vars/all に記載のパスワードを変更してください)

AnsibleのPlaybook

今回利用するPlaybookを github.com/chibiegg/hadoop-ansible においておきました。

以下のようにすることで、AnsibleのPlaybookを適用することができると思います。

git clone https://github.com/chibiegg/hadoop-ansible.git
cd hadoop-ansible
ansible-playbook -i hosts -KkS -u ubuntu site.yml

HDFSの確認

ブラウザから http://192.168.11.101:50070/ にアクセスすることで、HDFSのステータスを確認することができます。

image

http://192.168.11.101:50070/dfshealth.html#tab-datanode では、各データノードの状態を確認することができます。

image

正常に、6台のデータノードが稼働していることがわかります。

HDFSへのファイルの追加は、hadoopユーザーで以下のコマンドを実行することにより行います。

/usr/src/hadoop-2.7.3/bin/hadoop fs -put [source] [destination]

YARNの確認

YARNのステータスや、実行しているアプリケーションの情報は http://192.168.11.101:8088/ から参照することができます。

image

アプリケーションの実行

今回は、サンプルとして入っている円周率を求めるアプリケーションを実行してみたいと思います。

cd /usr/src/hadoop-2.7.3
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar pi 30 100

円周率だけでなく、単語数のカウントやいろいろなサンプルが hadoop-mapreduce-examples-2.7.3.jar には入っていますので、色々試してみてください。

chibiegg
技術執行役員 兼 CISO。ホスティングサービスの開発や、社内のシステム開発をしています。 (ネットワーク|情報セキュリティ|データベース)スペシャリスト。 得意分野は Python+Django、Golangでのサーバサイド、サーバインフラ、ネットワーク、電子回路設計や組み込みソフトウエア開発。 AS59105所属。写真と旅行♨️が趣味。
http://blog.chibiegg.net
sakura_internet
さくらレンタルサーバ、さくらのVPS、 さくらのクラウド、さくらの専用サーバなどのインターネットサービス・ITプラットフォームを提供しています。
https://www.sakura.ad.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away