Hadoopの環境をVMwareイメージ(OS:CentOS5.5-x86_64)上に作成しSourcefoge.jpにイメージを公開しています。その作成手順について記載しています。VMware Player3.1.4 build-385536で作成しています。VMwareイメージのバージョンとしてはWorkstation6.5-7.xです。イメージを動作させるために対応したバージョンのVMwarePlayerなどのソフトウェアが必要です。VMware Playerはこちらからダウンロードすることができます。イメージが圧縮ファイルを解凍すると約3.1GBの容量になります。
VMware playerの詳細についてはVMware Player に関する FAQをご覧ください。
Hadoopは大規模分散システムのOpen Source 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サーバの各ノード名称を以下に記載します。
名称 | 役割 | Master | Slave |
HDFS | Hadoop Distributed File System の略称、分散、複製の機能を備えた大規模ファイルシステム | NameNode | DataNode |
MapReduce | 大規模分散システム上でのプロセス並列化のフレームワーク | JobTracker | TaskTracker |
HDFS、MapReduceそれぞれのノードについての名称と概略を以下に記載します。
名称 | 概略 | Master or Slave |
NameNode | DataNode上の情報をメタデータで管理、複製の配置や整合性の管理 | Master |
DataNode | 実データの保存、状態の報告 | Slave |
Secondarynamenode | 障害対策の1つ、一定の間隔でNamenodeのバックアップを取得 | Master |
名称 | 概略 | Master or Slave |
JobTracker | jobの受付、処理の割当、管理 | Master |
TaskTracker | JobTrackerから割当てられた処理を実行するワーカー | Slave |
それぞれの詳細についてはCommon、HDFS、MapReduceをご覧ください。
また動作モードとしてローカルモード、擬似分散モード(pseudo)、完全分散モードがあります。ここではローカルモードと擬似分散モードについて記載しています。それぞれの概略は以下のとおりです。
名称 | 概略 |
ローカルモード | 1台での実行、Hadoopとしての機能は使わずJavaの機能を使用 |
擬似分散モード | 1台でMasterとSlaveの実行 |
完全分散モード | 複数台でMasterとSlaveの実行 |
各動作モードの詳細についてはGetting Startedをご覧ください。
CDHはCloudera社提供されている『Cloudera Distribution for apache Hadoop』の略称です。CDHではHadoopとHadoopの関連プロジェクト(以降、コンポーネントと記載)であるHbase、Pig、Hiveなどとの整合性をある程度とりリリースされています。このためHadoopおよびコンポーネントの導入が比較的容易になっています。
本手順ではCDH3beta4(2011年4月1日当時の最新)で記載しています。2011年4月14日にCDH3がリリースされました。詳細についてはCDH3+Installation、Distribution Detailsをご覧ください。
CDH3beta4に含まれるhadoop-0.20.2を使用しています。またhadoop.apache.orgで公開されているHadoopの最新版は0.21.0です。0.20.xと0.21.xでは機能やAPIなどに変更があります。詳細についてはrelease 0.21.0 available をご覧ください。
VMware Player3.1.4 build-385536の仮想マシン上にCentOS5.5-x86_64をインストールし設定を行います。CentOSのインストール後CDH3beta4のリポジトリを追加しHadoopと主要コンポーネントをインストール、設定を行い、ローカルモードと擬似分散モードでの動作確認をしています。
また今回は使用していませんが、Cloudera社からVMwareイメージも公開されています。詳細についてはこちら>をご覧ください。
VMware ハードウェア構成は以下のように設定しています。
CPU:2 Memory:1GB HDD:20GB(split 2GB、事前にGB使用しています。) Network:bridge
主なアカウント情報を以下に記載します。
ユーザー :beat パスワード :beatcraft rootパスワード :beatcraft
『Base、DevelopmentTools、Editors、FTP Server、Legacy Network Server、Network Servers、Server Configuration Tools、Text-based Internet、Web Server、Windows File Server』
Firewall SELinux は共にDisableに設定しています。その他はHDDパーティニング等はデフォルトインストールにしています。
インストール完了後、アップデートを実行します。
# yum install yum-fastestmirror (導入されていますがリポジトリのチェックのため実行しています。) ...<略> Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp # yum update
標準インストールで日本時間を選んでも正しい時刻を取得できていないことがあります。まず時刻を確認し日本ntpサーバと時刻あわせをします。またその情報をハードウェアに書き込みntpの設定に日本のntpサーバが含まれていない場合追加します。また起動時にntpdが起動するように設定しています。
# yum install ntp (注:ntpがインストールされていない場合のみ実行します) # date # ntpdate -s ntp.nict.jp # clock -w
ntp/step-tickersに以下の3つの国内ntpサーバを追加します。
# vi /etc/ntp/step-tickers ntp.nict.jp ntp.jst.mfeed.ad.jp ntp.ring.gr.jp
完了後ntpを再起動し、時刻の確認をします。あわせてサービス登録をしておきます。
# /etc/init.d/ntpd restart # date # chkconfig ntpd on
予め/etc/bashrcにJAVA_HOME、HADOOP_HOMEとPATHに/sbin、/usr/sbinを追加します。/sbinと/usr/sbinにPATHを追加しているのはコマンド(ifconfig、alternatives)などのタイプ数を減らすためです。
# tail -n 5 /etc/bashrc fi # vim:ts=4:sw=4 export JAVA_HOME=/usr/java/latest export HADOOP_HOME=/usr/lib/hadoop export PATH=/sbin:/usr/sbin:$HADOOP_HOME/bin:$PATH
一般ユーザにbeatとhadoopを追加します。beatは一般ユーザ用、hadoopはCDHインストール時にhdfsというユーザ名に変更されます。hdfs(hadoop)ユーザはHadoopでの作業用として作成しています。またhadoopはpassword無しの設定をしています。ご使用の環境に合わせて適宜変更してください。
# useradd beat # passwd beat
# visudo ...<略> ## Allow root to run any commands anywhere root ALL=(ALL) ALL beat ALL=(ALL) ALL hdfs ALL=(ALL) ALL
# useradd hadoop # passwd -d hadoop beatユーザからhadoopユーザへの切り替え $ su hadoop
本VMwareイメージではrootでのログイン許可をしています。またhadoopユーザにて鍵作成をしていますが、空PASSWORDも許可しています。ご使用の環境に合わせて適宜設定を変更してください。
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa Generating public/private rsa key pair. Created directory '/home/hadoop/.ssh'. Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:zz:zz:<略>:xx hadoop@localhost.localdomain $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
# vi /etc/ssh/sshd_config #LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #RhostsRSAAuthentication no # similar for protocol version 2 #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes PermitEmptyPasswords yes PasswordAuthentication yes
JDKのインストールをします。以下のサイトから最新版JDK (jdk-6u24-linux-x64-rpm.bin)をダウンロードしここでは/home/beat/jdkディレクトリに配置しました。またインストールの際はrootで実行します。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
$ mkdir jdk $ cd jdk/ $ ls jdk-6u24-linux-x64-rpm.bin $ chmod +x jdk-6u24-linux-x64-rpm.bin $ su パスワード: # ./jdk-6u24-linux-x64-rpm.bin Unpacking... Checksumming... Extracting... <略> # ls -l /usr/java/ 合計 4 lrwxrwxrwx 1 root root 16 4月 12 13:03 default -> /usr/java/latest drwxr-xr-x 9 root root 4096 4月 12 13:03 jdk1.6.0_24 lrwxrwxrwx 1 root root 21 4月 12 13:03 latest -> /usr/java/jdk1.6.0_24
/etc/bashrcで設定したJAVA_HOMEとディレクトリ位置があっているかを確認してください。
# tail -n 5 /etc/bashrc fi # vim:ts=4:sw=4 export JAVA_HOME=/usr/java/latest export HADOOP_HOME=/usr/lib/hadoop export PATH=/sbin:/usr/sbin:$HADOOP_HOME/bin:$PATH
不要なサービスの停止をします。起動しているサービス一覧をみるには chkconfig --listを使用します。本VMwareイメージではrunlevel3で起動しています。ご使用の環境に合わせて不必要なサービスがあれば停止もしくは起動をしてください。
# chkconfig --list NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ...<略> sendmail 0:off 1:off 2:on 3:off 4:on 5:on 6:off ...<略>
サービスの停止、起動の書式については chkconfig --level <name> <off|on>で実行してください。chkconfigだけで実行するとオプションの説明メッセージが表示されます、またはman chkconfigを参照してください。ここではiptablesをoffに設定します。
# chkconfig --list ...<略> iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# chkconfig iptables off
# chkconfig --list iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
以上でCentOS上での基本的な設定は完了です。
CDH3beta4のリポジトリを追加しCDHを導入します。以下のようにリポジトリを追加します。
# vi /etc/yum.repos.d/cloudera-cdh3.repo [cloudera-cdh3] name=Cloudera's Distribution for Hadoop, Version 3 mirrorlist=http://archive.cloudera.com/redhat/cdh/3/mirrors gpgkey = http://archive.cloudera.com/redhat/cdh/RPM-GPG-KEY-cloudera gpgcheck = 0
リポジトリを追加後yumの更新をします。
# yum update yum
Hadoopの主要コンポーネントと擬似分散モード用設定のインストールをします。
yum searchコマンドを使って、Hadoop-0.20.2に対応する主要コンポーネントを確認しインストールします。yum install コマンドは文書中改行をしていますが、実コマンドはyumから-yまで1行で実行しています。またそれぞれのコンポーネントの関係は以下のとおりです。secondarynamenodeは一定の間隔でNamenodeのバックアップを取るためのサービスです。本VMwareイメージではこのサービスは使用していません。またyumコマンドの末尾『-y』はyum実行中のすべての質問に『y(yes)』と返すオプションです。
# yum install hadoop-0.20 hadoop-0.20-namenode hadoop-0.20-datanode hadoop- 0.20-secondarynamenode hadoop-0.20-jobtracker hadoop-0.20-tasktracker hadoop- 0.20-conf-pseudo -y
各コンポーネントの関係を以下に記載します。
名称 | HDFS or MapReduce | Master or Slave | 概略 |
hadoop-0.20-namenode | HDFS | Master | DataNode上の情報をメタデータで管理、複製の配置や整合性の管理 |
hadoop-0.20-datanode | HDFS | Slave | 実データの保存、Namenodeへの状態報告 |
hadoop-0.20-secondarynamenode | HDFS | Master | 障害対策の1つ、一定の間隔でNamenodeのバックアップを取得 |
hadoop-0.20-jobtracker | MapReduce | Master | jobの受付、処理の割当、管理 |
hadoop-0.20-tasktracker | MapReduce | Slave | JobTrackerから割当てられた処理を実行するワーカー |
hadoopをインストール完了後、mapred,hdfsユーザが追加されていることを確認します。
またCDH3beta4を導入した際、作成していたhadoopユーザがhdfsユーザに切り替わります(パスワードは空のまま引き継がれます)。
# tail -n 4 /etc/passwd beat:x:500:500::/home/beat:/bin/bash ntp:x:38:38::/etc/ntp:/sbin/nologin mapred:x:101:157:Hadoop MapReduce:/usr/lib/hadoop-0.20:/bin/bash hdfs:x:501:501:Hadoop HDFS:/home/hadoop:/bin/bash
Hadoopの動作モードにはローカルモード、擬似分散モード、完全分散モードがあります。まずローカルモード用の設定を使用します。本VMwareイメージでは設定をしませんが追加設定として設定ファイル(conf.bc_cluster)を追加しています。
hadoopでは/etc/hadoop-0.20/以下にconf、conf.empty、conf.pseudo(擬似分散用設定ディレクトリ)があります。またconfはhadoop-0.20-conf-pseudo(擬似分散モード用設定)のsymlinkに設定されています。このsymlinkをalternativesコマンドで変更しローカルモード、擬似分散モード、完全分散モードなど各設定でのHadoopの起動が可能になります。
ここではローカルモード用の設定conf.localと完全分散用の設定conf.bc_clusterを作成します。各コピー元ファイルはconf.emptyとしconf.emptyは削除しないようにします。conf.emptyにはほぼ設定が記載されていないためです。
設定の切り替えにはalternativesを実行し切り替えを行います。alternativesを用いてhadoop-0.20-confのステータスとバージョン(symlinkの優先度)の確認をします。
# cd /etc/hadoop-0.20/ # ls -l 合計 8 lrwxrwxrwx 1 root root 34 4月 12 13:14 conf -> /etc/alternatives/hadoop-0.20-conf drwxr-xr-x 2 root root 4096 4月 12 13:14 conf.empty drwxr-xr-x 2 root root 4096 4月 12 13:14 conf.pseudo # cp -r conf.empty conf.local # cp -r conf.empty conf.bc_cluster
# alternatives --display hadoop-0.20-conf hadoop-0.20-conf -ステータスは自動です。 リンクは現在 /etc/hadoop-0.20/conf.pseudo を指しています。 /etc/hadoop-0.20/conf.empty - 優先項目 10 /etc/hadoop-0.20/conf.pseudo - 優先項目 30 現在の「最適」バージョンは /etc/hadoop-0.20/conf.pseudo です。
# alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf /etc/hadoop-0.20/conf.bc_cluster 60 # alternatives --display hadoop-0.20-conf hadoop-0.20-conf -ステータスは自動です。 リンクは現在 /etc/hadoop-0.20/conf.bc_cluster を指しています。 /etc/hadoop-0.20/conf.empty - 優先項目 10 /etc/hadoop-0.20/conf.pseudo - 優先項目 30 /etc/hadoop-0.20/conf.bc_cluster - 優先項目 60 現在の「最適」バージョンは /etc/hadoop-0.20/conf.bc_cluster です。
# alternatives --set hadoop-0.20-conf /etc/hadoop-0.20/conf.local # alternatives --display hadoop-0.20-conf hadoop-0.20-conf - ステータスは手動です。 リンクは現在 /etc/hadoop-0.20/conf.local を指しています。 /etc/hadoop-0.20/conf.empty - 優先項目 10 /etc/hadoop-0.20/conf.pseudo - 優先項目 30 ...<略>
1台で擬似的なmaster、slaveを設定せずにMapReduceのアプリケーションのdebugなどに使用します。
ローカルモード用のconf.localに必要な設定を記載します。
# tail -n 5 hadoop-env.sh ...<略> # A string representing this instance of hadoop. $USER by default. export HADOOP_IDENT_STRING=bclocal # The scheduling priority for daemon processes. See 'man nice'. # export HADOOP_NICENESS=10
# cat core-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>hadoop.tmp.dir</name> <!-- Local Disk Directory for hadoop data --> <value>/tmp/hadooplocal</value> <!-- its value --> </property> </configuration>
# cat mapred-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapreduce.jobtracker.address</name> <!-- JobTracker Address --> <value>local</value> <!-- its value --> </property> </configuration>
# cd tmp/ # mkdir hadooplocal # chmod -R 777 hadooplocal/
# su hdfs $ export HADOOP_CLASSPATH=/usr/lib/hadoop-0.20/
hadoop-0.20.2-CDH3B4-examples.jarを実行します。この際にjavaについてのエラーが発生した場合は、JAVA_HOMEの設定を確認してください。
$ hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-0.20.2-CDH3B4-examples.jar An example program must be given as the first argument. Valid program names are: aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files. ...<略>
hadoop-0.20.2-CDH3B4-examples.jarに含まれるpiを実行します。このExamplesの引数はmap数10、100回施行するExamplesになります。
$ hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-0.20.2-CDH3B4-examples.jar pi 10 100 Number of Maps = 10 Samples per Map = 100 11/04/12 17:20:07 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Wrote input for Map #0 ...<略> 11/04/12 17:20:12 INFO mapred.JobClient: SPLIT_RAW_BYTES=1090 11/04/12 17:20:12 INFO mapred.JobClient: Reduce input records=20 Job Finished in 4.704 seconds Estimated value of Pi is 3.14800000000000000000
以上でローカルモードの動作確認は終了です。
1台のVMwareイメージ上で擬似的にMasterとSlaveを設定しそれぞれのサービスの起動を行うモードです。上記インストール済みの擬似分散用設定ファイルconf.pseudoを用います。また端末上でのブラウジングをする場合テキストブラウザを適宜インストールしてください。
# yum install w3m -y
ローカルモード後に実行する場合は擬似分散モードへhadoop-0.20-confを切り替える必要があります。alteranativesを用いてhadoop-0.20-confの設定確認をします。(下記ではconf.localの優先項目も60に設定しています)
# alternatives --display hadoop-0.20-conf hadoop-0.20-conf - ステータスは手動です。 リンクは現在 /etc/hadoop-0.20/conf.local を指しています。 /etc/hadoop-0.20/conf.empty - 優先項目 10 /etc/hadoop-0.20/conf.pseudo - 優先項目 30 /etc/hadoop-0.20/conf.bc_cluster - 優先項目 60 /etc/hadoop-0.20/conf.local - 優先項目 60 現在の「最適」バージョンは /etc/hadoop-0.20/conf.bc_cluster です。
hadoop-0.20-confはconf.localに設定されていますので、先ほどの手順同様『alternatives --set』を用いてhadoop-0.20-confをcond.pseudoに変更します。alternatives --display hadoop-0.20-confを実行しhadoop-0.20-confはconf.pseudoに設定されていることが確認します。
# alternatives --set hadoop-0.20-conf /etc/hadoop-0.20/conf.pseudo # alternatives --display hadoop-0.20-conf hadoop-0.20-conf - ステータスは手動です。 リンクは現在 /etc/hadoop-0.20/conf.pseudo を指しています。 /etc/hadoop-0.20/conf.empty - 優先項目 10 /etc/hadoop-0.20/conf.pseudo - 優先項目 30 /etc/hadoop-0.20/conf.bc_cluster - 優先項目 60 /etc/hadoop-0.20/conf.local - 優先項目 60 現在の「最適」バージョンは /etc/hadoop-0.20/conf.bc_cluster です。
conf.pseudoに既に設定値が記載されていますので、変更を加える必要はありません。ご使用の環境に応じて適宜設定を変更してください。
# cd /etc/hadoop-0.20/conf.pseudo/
# tail -n 5 hadoop-env.sh ...<略> # A string representing this instance of hadoop. $USER by default. export HADOOP_IDENT_STRING=bcpseudo # The scheduling priority for daemon processes. See 'man nice'. # export HADOOP_NICENESS=10
# cat core-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/var/lib/hadoop-0.20/cache/${user.name}</value> </property> <!-- OOZIE proxy user setting --> <property> <name>hadoop.proxyuser.oozie.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.oozie.groups</name> <value>*</value> </property> </configuration>
# cat hdfs-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <!-- specify this so that running 'hadoop namenode -format' formats the right dir --> <name>dfs.name.dir</name> <value>/var/lib/hadoop-0.20/cache/hadoop/dfs/name</value> </property> <!-- Enable Hue Plugins --> <property> <name>dfs.namenode.plugins</name> <value>org.apache.hadoop.thriftfs.NamenodePlugin</value> <description>Comma-separated list of namenode plug-ins to be activated. </description> </property> <property> <name>dfs.datanode.plugins</name> <value>org.apache.hadoop.thriftfs.DatanodePlugin</value> <description>Comma-separated list of datanode plug-ins to be activated. </description> </property> <property> <name>dfs.thrift.address</name> <value>0.0.0.0:10090</value> </property> </configuration>
# cat mapred-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:8021</value> </property> <!-- Enable Hue plugins --> <property> <name>mapred.jobtracker.plugins</name> <value>org.apache.hadoop.thriftfs.ThriftJobTrackerPlugin</value> <description>Comma-separated list of jobtracker plug-ins to be activated. </description> </property> <property> <name>jobtracker.thrift.address</name> <value>0.0.0.0:9290</value> </property> </configuration>
hdfsユーザに切り替え各サービスを起動する前に既に起動しているHadoopのサービスがあれば停止します。ここでは一括でhadoop-0.20-の関連サービスを停止しています。
# su hdfs $ for service in /etc/init.d/hadoop-0.20-*; do sudo $service stop; done
HDFSを正常に起動させるために、hdfsユーザでHDFSをFormatします。
$ sudo -u hdfs hadoop-0.20 namenode -format 11/04/12 18:55:07 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = localhost.localdomain/127.0.0.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 0.20.2-CDH3B4 STARTUP_MSG: build = -r 3aa7c91592ea1c53f3a913a581dbfcdfebe98bfe; compiled by 'root' on Mon Feb 21 17:31:12 EST 2011 ************************************************************/ Re-format filesystem in /var/lib/hadoop-0.20/cache/hadoop/dfs/name ? (Y or N) Y 11/04/12 18:55:09 INFO util.GSet: VM type = 64-bit <略> 11/04/12 18:55:10 INFO common.Storage: Storage directory /var/lib/hadoop-0.20/cache/hadoop/dfs/name has been successfully formatted. 11/04/12 18:55:10 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at localhost.localdomain/127.0.0.1 ************************************************************/
先ほど一括でサービスを停止したコマンドと同様に一括でサービスを起動します。
$ for service in /etc/init.d/hadoop-0.20-*; do sudo $service start; done Starting Hadoop datanode daemon (hadoop-datanode): starting datanode, logging to /usr/lib/hadoop-0.20/logs/hadoop-bcpseudo-datanode-localhost.localdomain.out [ OK ] Starting Hadoop jobtracker daemon (hadoop-jobtracker): starting jobtracker, logging to /usr/lib/hadoop-0.20/logs/hadoop-bcpseudo-jobtracker-localhost.localdomain.out [ OK ] Starting Hadoop namenode daemon (hadoop-namenode): starting namenode, logging to /usr/lib/hadoop-0.20/logs/hadoop-bcpseudo-namenode-localhost.localdomain.out [ OK ] Starting Hadoop secondarynamenode daemon (hadoop-secondarynamenode): starting secondarynamenode, logging to /usr/lib/hadoop-0.20/logs/hadoop-bcpseudo-secondarynamenode-localhost.localdomain.out [ OK ] Starting Hadoop tasktracker daemon (hadoop-tasktracker): starting tasktracker, logging to /usr/lib/hadoop-0.20/logs/hadoop-bcpseudo-tasktracker-localhost.localdomain.out [ OK ]
各サービスごとの起動は以下のとおりです。
$ sudo /etc/init.d/hadoop-0.20-namenode start
$ sudo /etc/init.d/hadoop-0.20-datanode start
$ sudo /etc/init.d/hadoop-0.20-jobtracker start
$ sudo /etc/init.d/hadoop-0.20-tasktracker start
起動後以下のURLでNameNodeとMap/Reduce AdministrationのWebUIが閲覧できます。
$ w3m http://localhost:50070
$ w3m http://localhost:50070
ローカルモード同様、hadoop-0.20.2-CDH3B4-examples.jarを実行します。この際にjavaについてのエラーが発生した場合は、JAVA_HOMEの設定を確認してください。
$ hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-0.20.2-CDH3B4-examples.jar An example program must be given as the first argument. Valid program names are: aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files. ...<略>
ローカルモードと同じExamplesのhadoop-0.20.2-CDH3B4-examples.jarに含まれるpiを実行します。このExamplesの引数はmap数10、100回施行するExamplesです。
$ hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-0.20.2-CDH3B4-examples.jar pi 10 100 Number of Maps = 10 Samples per Map = 100 Wrote input for Map #0 Wrote input for Map #1 Wrote input for Map #2 ...<略> 11/04/12 19:55:03 INFO mapred.FileInputFormat: Total input paths to process : 10 11/04/12 19:55:04 INFO mapred.JobClient: Running job: job_201104121855_0001 ...<略> 11/04/12 19:55:51 INFO mapred.JobClient: Map output records=20 11/04/12 19:55:51 INFO mapred.JobClient: SPLIT_RAW_BYTES=1160 11/04/12 19:55:51 INFO mapred.JobClient: Reduce input records=20 Job Finished in 48.321 seconds Estimated value of Pi is 3.14800000000000000000
この際Map/Reduce AdministrationのWebUI「Completed Jobs」にjob_201104121855_0001が表示されます。
#ref(): File not found: "localmapreduce.jpg" at page "Hadoop/VMware"
一括でのサービス停止は以下のように実行します。
$ for service in /etc/init.d/hadoop-0.20-*; do sudo $service stop; done
もしくは各サービスごとの停止は以下のとおりです。
$ sudo /etc/init.d/hadoop-0.20-namenode stop
$ sudo /etc/init.d/hadoop-0.20-datanode stop
$ sudo /etc/init.d/hadoop-0.20-jobtracker stop
$ sudo /etc/init.d/hadoop-0.20-tasktracker stop
以上で擬似分散モードの動作確認は終了です。
CDH3beta4ではHadoopの主要コンポーネントの他に以下のHadoopの関連プロジェクトをサポートしています。CDH3 beta4から入手できるコンポーネントとインストール時のパッケージ名の対応は以下の通りです。
コンポーネント名 | パッケージ名 | 概略 | 参照URL |
Flume | Flume | データローディングインフラ | http://archive.cloudera.com/cdh/3/flume/Cookbook/index.html |
Sqoop | Sqoop | MySQLからHadoopへのデータインポートツール | http://archive.cloudera.com/cdh/3/sqoop/SqoopDevGuide.html |
Hue | Hue | Hadoop User Experience(HadoopのUI) | http://archive.cloudera.com/cdh/3/hue/ |
Pig | hadoop-pig | データセットを探索するための対話的インターフェース | http://archive.cloudera.com/cdh/3/pig/ |
Hive | hadoop-hive | SQLライクな言語 | http://hive.apache.org/ |
HBase | hadoop-hbase | Bigtable Storage System。HDFSとは逆に細かい大量のデータを扱うためのHDFS上に作成するFile System | http://hbase.apache.org/ |
ZooKeeper | hadoop-zookeeper | 設定情報、名前付けなどの設定、保守サービス | http://zookeeper.apache.org/ |
Oozie server | Oozie | ワークフローエンジン | http://archive.cloudera.com/cdh/3/oozie/ |
Oozie client | oozie-client | ワークフローエンジン | http://archive.cloudera.com/cdh/3/oozie/ |
Whirr | Whirr | AmazonEC2のようなクラウドとの連携API | http://archive.cloudera.com/cdh/3/whirr/index.html |