Serverを使用し、Hadoopを完全分散モード(クラスタ)で構築します。大きな項目は以下のとおりです。・Ganglia(サーバ監視ソフトウェア)の導入(使用するAtom-Server。Atom-Serverの詳細な写真はこちら)Note本手順では社内でHadoop完全分散モードを構築しHDFS、MapReduceの動作確認をする事を主な目的としています。セキュリティ設定への考慮など不足している箇所がありますのでご了承ください。Projectの1つです。主な特徴はHDFS、MapReduceがあります。HDFSはブロックサイズがデフォルトで64MBと非常に大きく(ex3のデフォルトブロックサイズは4096バイト)、テラバイトからペタバイトのデータサイズを扱う分散ファイルシステムです。MapReduceは並列分散処理のためのフレームワークです。HDFS、MapReduceにはMasterサーバとSlaveサーバが存在しそれぞれにノードがあります。HDFSではデータをメタデータで管理し実データの複製管理などを行っています。MapReduceではjobの並列分散管理などを行っています。MapReduceはMap処理、Shuffle&Sort処理、Reduce処理に分けることができます。大量の小さいファイルの書き込みやファイルの更新には向いていません。この点についてはHBase(Hadoopの関連プロジェクト)や従来のRDBMSと組み合わせることで補うことも可能です。詳細についてはhadoop.apache.orgや、HBaseをご覧ください。HadoopのソフトウェアはCommon、HDFS、MapReduceから構成されています。CommonはHadoopプロジェクトのサポートユーティリティです。HDFS、MapReduceの役割とそれぞれのMasterサーバ、Slaveサーバの各ノード名称を以下に記載します。TaskTrackerHDFS、MapReduceそれぞれのノードについての名称と概略を以下に記載します。MasterNote本手順では実行していませんがHadoopではMasterが単一障害点になるため、その対策として一定の間隔でNamenodeのバックアップを取るためのサービスSecondarynamenodeがあります。Slaveそれぞれの詳細についてはCommon、HDFS、MapReduceをご覧ください。動作モードとしてローカルモード、擬似分散モード(pseudo)、完全分散モードがあります。ここでは完全分散モードについて記載しています。それぞれの概略は以下のとおりです。Startedをご覧ください。Hadoop』の略称です。CDHではHadoopとHadoopの関連プロジェクト(以降、コンポーネントと記載)であるHbase、Pig、Hiveなどとの整合性をある程度とりリリースされています。このためHadoopおよびコンポーネントの導入が比較的容易になっています。本手順ではCDH3beta4(2011年4月1日当時の最新)で記載しています。2011年4月14日にCDH3がリリースされました。Detailsをご覧ください。†CDH3beta4に含まれるhadoop-0.20.2を使用しています。hadoop.apache.orgで公開されているHadoopの最新版は0.21.0です。0.20.xと0.21.xでは機能やAPIなどに変更があります。†AtomServerの各マシンにCentOS5.5-x86_64をインストールし設定を行います。CentOSのインストール後CDH3beta4のリポジトリを追加しHadoopと主要コンポーネントをインストール、設定を行います。一部の設定(固定IP設定、Master、Slaveの各サービス)以外はすべてのマシンで同じ設定を行います。Note本手順でのHadoopと主要コンポーネントとはCommon、HDFSとMapReduceのコンポーネントを指しています。今回使用しているマシンの構成は、同型Atomボード8枚1組で構成されています。Server(このAtomサーバは東京エレクトロンデバイス様のご好意によりお借りしております。Serverを撮影しました。†インストールはCentOS-5.6-x86_64-LiveCD.isoを使用します。isoファイルはこちらからダウンロードをします。†インストールパッケージの選択は以下のとおりです。パスワードは『beatcraft』に設定しています。一般ユーザアカウント設定は以下のとおりです。共にDisableに設定しています。その他のインストール時の設定はデフォルトの設定を適用しています。再起動後ネットワークの設定を行います。†Hadoop完全分散モードでの動作確認のため各Atomボードに固定IPとhost名、FQDNでの名前解決の設定を行っています。本内容ではアドレスは192.168.0.211〜192.168.0.218、ホスト名atomcloud1〜8とそれぞれのAtomボードに設定しています。ご使用の環境に合わせて設定を適宜変更してください。NoteHadoopのクラスタリングではマシン間の通信はFQDNが解決されていないとサービス起動時にディレクトリまたはパスが見つからないというエラーが起こります。そのため固定IPと名前解決のネットワーク設定をしておく必要があります。固定IPの設定は/etc/sysconfig/network-scripts/ifcfg-eth0に記載されています。IPアドレス、Netmask、Gatewayを使用環境にそって適宜変更してください。使用するAtomボードは8枚あるので8台分の設定を記載します。記載事項は設定例ですので使用環境にそって適宜設定を変更してください。自マシン(ここではatomcloud2)のホスト名宛のpingコマンドで設定しているFQDNとIPで応答があるかを確認します。msNoteping実行時にlocalhost.localdomainで応答がある場合、HDFS起動時にファイルパスが見つからないというエラーが起こることがあります。/etc/hostsの設定を確認してください。†Hadoopの完全分散モードでのマシン同士の通信はsshを用いて行います。各マシンのsshdの設定(sshd_config)を記載します。ここでは設定例としてパスワード認証、rootでのログインを許可する設定にしています。使用環境およびセキュリティに考慮して設定を変更してください。6設定完了後sshdを再起動します。時刻を確認し日本ntpサーバと時刻あわせをします。その情報をハードウェアに書き込みntpの設定に日本のntpサーバが含まれていない場合追加します。-wntp/step-tickersに以下の3つの国内ntpサーバを追加します。/etc/ntp/step-tickersntp.nict.jpntp.jst.mfeed.ad.jpntp.ring.gr.jp完了後ntpを再起動し、時刻の確認をします。dateNote標準インストールで日本時間を選んでも正しい時刻を取得していないことがあります。JAVA_HOME,HADOOP_HOME、hadoopへのPATH、/sbinと/usr/sbinをPATHに追加します。/sbinと/usr/sbinにPATHを追加しているのはコマンド(ifconfig、alternatives)などのタイプ数を減らすためです。/etc/bashrcNoteJAVAの実行時およびHadooのサービス起動時および実行時にエラーが発生した場合はJAVA_HOME、HADOOP_HOMEが正しく設定されているかの確認をしてください。†runlevelrunlevelはデフォルトで5(GUI起動)に設定しています。サービス使用しないサービスを停止します。以下chkconfigコマンドで登録されているサービス一覧を表示します。6:off...<略>sendmailこの手順ではsendmailは使用しないのでsendmailの停止とサービス停止をし再起動後でもサービスとして起動しないようにします。(jdk-6u24-linux-x64-rpm.bin)をダウンロードし、インストールを実行します。/usr/java/jdk1.6.0_24上記で設定したJAVA_HOMEとディレクトリ位置があっているかを確認してください。以上でCentOS上での基本的な設定は完了です。今回のテストでは意識してセキュリティに関する事象を除外しています(sshdのrootログインなど)。†CDH3beta4のHadoopバージョンは0.20.2です。CDH2およびstableバージョンではhadoop-0.18とhadoop-0.20の混在環境が一部含まれているため今回はCDHの2011年4月1日時点での最新版CDH3beta4を使用しています。CDH3beta4に含まれるHadoopをインストールするためCDH3beta4のリポジトリを追加します。Documentation』をご覧ください。0追加したリポジトリを含めるようyumの更新をします。yumNote2011年4月14日にCDH3がリリースされました。詳細についてはこちらをご覧ください。先ほど更新したyumを使用しHadoop(hadoop-0.20)をインストールします。searchコマンドでHadoopのパッケージ情報を取得できていることを確認しインストールします。searchコマンドを使って、Hadoop-0.20.2に対応する主要コンポーネントを確認しインストールします。-y注:文書では改行していますが、実コマンドはyumから-yまで1行で実行しています。Note本手順ではsecondarynamenodeのインストールはしていますがサービスとして実行はしていません。Hadoopインストール完了後、mapred,hdfsユーザが追加されていることを確認します。HDFS:/usr/lib/hadoop-0.20:/bin/bashNote事前にhadoopユーザを作成していた場合CDH3beta4ではhadoopのインストール時にユーザ名がhadoopからhdfsに変更されています。本手順では使用しませんが、設定参考のため擬似分散モード用設定をインストールします。-yまた端末上でのブラウジングのためテキストブラウザをインストールします。beta4から入手できるコンポーネントとインストール時のパッケージ名の対応は以下の通りです。†Hadoopのモードは完全分散モード(クラスタ)設定を使用します。Hadoopの完全分散モード用の設定、確認について記載しています。以下の設定は各マシン同じです。ディレクトリをscpなどでコピーすることで作成時間を短縮できます。完全分散モードに必要な設定ディレクトリをconf.bc_clusterという名前で作成します。/etc/hadoop-0.20/conf.emptyから/etc/hadoop-0.20/conf.bc_clusterをコピーをします。hadoop-0.20/conf.bc_clusterNoteconf.emptyは設定が記載されていないテンプレートです。これを元に幾つかの設定を作成し、設定を切り替えてHadoopを起動するためにconf.emptyからコピーをしています。core-site.xmlcore-site.xmlにはHadoopの共通設定を記載します。hadoop.tmp.dirはここでは/hadoopに設定しています。本手順ではMasterにatomcloud2を設定しています。</property></configuration>hdfs-site.xmlhdfs-site.xmlにはHDFSに関する設定を記載します。ここではdfs.permissionsをfalseにしhdfsユーザ以外でもHDFSを扱えるようにしています。複製数の設定replicationを3にしています、適宜数値を変更してください。</property></configuration>Notereplicationは実データを複製する数です。Slaveが1台の場合はreplication数は1に設定します。mapred-site.xmlmapred-site.xmlはMapReduceに関する設定を記載しています。mapred.job.trackerのポートは上記core-site.xmlのポート+1に設定しています。ポート番号は変更する必要はありません。setup内のcore-site.xml、hdfs-site.xml、mapred-site.xmlをご覧ください。mastersmastersにはMasterの役割をもつホスト名を明記します。本手順ではmastersファイルにatomcloud2を設定します。/etc/hadoop-0.20/conf.mycluster/mastersatomcloud2slavesslavesにはSlaveの役割をもつホスト名を明記します。本手順ではatomcloud1、atomcloud3〜8にします。Slaveの台数によって適宜増減し設定します。†hadoo-0.20-confの優先順位設定は/usr/sbin/alternativesを使用します。alternativesは設定ファイルとそのシンボリックリンクを切り替えるためのコマンドです。その他にも明示的にパスを指定しその設定を反映させることもできます。hadoop-0.20-confの現在の設定の確認をします。-ステータスは自動です。