2013年01月29日

Qを諦めてVMware fusionに。。。

Windowsマシンを潰してHadoopクラスターに供出したため、Windows 7のライセンスが1つ余った。
これを iMac に仮想マシンとしてインストールしてやろう。
そう思って Q を使ってインストールを試したものの、どうしてもホスト PC の CD-ROM ドライブを認識してくれない。
ブータブルISOイメージを作ろうとしたがこれも失敗。

半日かかって埒が明かず、とうとう諦めてVMware fusionを導入した。
さすがにこれは何の苦労も無くインストール開始でき、現在インストール中。

なんだか悔しい。
タグ:Qemu VMware
posted by K/I at 14:17 | 東京 ☀ | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2013年01月08日

iTunesでiPhoneとカレンダー同期ができなくなった

先日、今更ながら iMac の OS を Mountain Lion にアップグレードした。
おそらくその時から iPhone の同期がおかしくなっってしまったがく〜(落胆した顔)
iMac 上でカレンダーを更新しても iPhone に反映されないし、iPhone のカレンダーも iMac のカレンダーに反映されない。

いろいろ試したけれど、結局 Apple サイトに情報が書いてあってこれで解決しました:
http://support.apple.com/kb/TS2481?viewlocale=ja_JP&locale=ja_JP
posted by K/I at 15:37 | 東京 ☀ | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2013年01月03日

完全分散モードの Hadoop 導入手順 (CDH3)

Cloudera's Distrubution for Hadoop (CDH) を利用して、完全分散モードの Hadoop を導入したメモ。
今回は以下の構成とした。
マスターノード (CentOS 5.7)
ホスト名: master
Hadoop の NameNode/JobTracker
スレーブノード (Fedora 14)
ホスト名: slave
Hadoop の DataNode/TaskTracker
SecondaryNameNode は無し。
また、NameNode と JobTracker は分けたほうがよいようだが、今回はとりあえずこれで。
【参考】
  • http://codezine.jp/article/detail/2485
  • http://oss.nttdata.co.jp/hadoop/cdh.html
  • https://ccp.cloudera.com/display/FREE4DOC
  • http://wiki.apache.org/hadoop/
インストール前に、「Supported Operating Systems for CDH3」で CDH3 がサポートする OS かどうか確認しておく。
バージョンにも気をつける必要がある。
衣か、Hadoop のインストールまでは、マスターノード、スレーブノードほぼ共通。

1. Java Development Kit インストール

Java Development Kit (1.6 以上) をインストールする。
今回は、OpenJDK をインストールした。
【RedHat系】
# yum install java-1.6.0-openjdk java-1.6.0-openjdk-devel
【Debian系】
# apt-get install openjdk-6-jdk

2. CDH3 インストール

CDH3 を「CDH3 Installation」の手順に従ってインストールする。
【RedHat系】
# yum --nogpgcheck install http://archive.cloudera.com/redhat/cdh/cdh3-repository-1.0-1.noarch.rpm
# rpm --import http://archive.cloudera.com/redhat/cdh/RPM-GPG-KEY-cloudera
マスターノードの場合:
[root@master]# yum install hadoop-0.20 hadoop-0.20-native \
hadoop-0.20-namenode hadoop-0.20-jobtracker

スレーブノードの場合:
[root@slave]# yum install hadoop-0.20 hadoop-0.20-native \
hadoop-0.20-datanode hadoop-0.20-tasktracker

【Debian系】
# wget http://archive.cloudera.com/one-click-install/squeeze/cdh3-repository_1.0_all.deb
# dpkg -i cdh3-repository_1.0_all.deb
# apt-get update

マスターノードの場合:
[root@master]# apt-get install hadoop-0.20 hadoop-0.20-native \
hadoop-0.20-namenode hadoop-0.20-jobtracker

スレーブノードの場合:
[root@master]# apt-get install hadoop-0.20 hadoop-0.20-native \
hadoop-0.20-datanode hadoop-0.20-tasktracker

3. SSH 設定

マスターノードとスレードノードとは SSH でやり取りするので、パスワード無しで SSH ログインできるようにしておく (秘密鍵をパスワード無しにするか、ssh-agent などを使う)。
hdfs アカウントのホームディレクトリは /usr/lib/hadoop-0.20 に設定されているので、/usr/lib/hadoop-0.20 の下に .ssh ディレクトリを作成し、そこに鍵ペアを作る。
# mkdir /usr/lib/hadoop-0.20/.ssh
# chmod 02775 /usr/lib/hadoop-0.20/.ssh
# chgrp hadoop /usr/lib/hadoop-0.20/.ssh
# ssh-keygen -t rsa -N "" -f /usr/lib/hadoop-0.20/.ssh/id_rsa
# chmod 0660 /usr/lib/hadoop-0.20/.ssh/id_rsa
# chmod 0664 /usr/lib/hadoop-0.20/.ssh/id_rsa.pub
# touch /usr/lib/hadoop-0.20/.ssh/known_hosts
# chmod 0664 /usr/lib/hadoop-0.20/.ssh/known_hosts
# chmod 0755 /usr/lib/hadoop-0.20/.ssh
公開鍵を互いの /usr/lib/hadoop-0.20/.ssh 内に authorized_keys ファイルを作成して書き込み、互いに hdfs アカウントでパスワード無しにログインできることを確認する。
[root@master]# su - hdfs
[hdfs@master]$ ssh slave
[hdfs@slave]$ ssh master
[hdfs@master]$ exit
[hdfs@slave]$ exit
[hdfs@master]$ exit

4. Hadoop 設定

インストールした時点では empy の設定ファイルが設定されているので、これを別のディレクトリ (ここでは conf.cluster とした) にコピーして設定していく。

設定ディレクトリは、alternatives コマンドを使って切り替える。
【RedHat系】
# cp -dpR /etc/hadoop/conf.empty /etc/hadoop/conf.cluster
# alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf \
/etc/hadoop-0.20/conf.cluster 50

# alternatives --display hadoop-0.20-conf
【Debian系】
# cp -dpR /etc/hadoop/conf.empty /etc/hadoop/conf.cluster
# update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf \
/etc/hadoop-0.20/conf.cluster 50

# update-alternatives --display hadoop-0.20-conf

マスターノード、スレーブノードの両方の /etc/hadoop/conf.cluster 内の設定ファイルを、たとえば以下のように書き換える:

設定ファイル: 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>fs.default.name</name>
<value>hdfs://master:54310</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/tmp</value>
</property>
</configuration>

設定ファイル: hdfs-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>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/var/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/var/hadoop/dfs/data</value>
</property>
</configuration>

設定ファイル: 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>mapred.job.tracker</name>
<value>master:54311</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/var/hadoop/mapred</value>
</property>
</configuration>

設定ファイル: masters
master

設定ファイル: slaves
slave

環境変数設定ファイル: hadoop-env.sh
# 【RedHat系】
export JAVA_HOME=/usr/lib/jvm/java
# 【Debian系】
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

対応するディレクトリを作成する。
# mkdir -p /var/hadoop/tmp \
/var/hadoop/dfs/name \
/var/hadoop/dfs/data \
/var/hadoop/mapred

# chown hdfs:hadoop /var/hadoop/tmp \
/var/hadoop/dfs/name \
/var/hadoop/dfs/data

# chown mapred:hadoop /var/hadoop/mapred
# chmod 0777 /var/hadoop/tmp
# chmod 0700 /var/hadoop/dfs/name
# chmod 0755 /var/hadoop/dfs/data \
/var/hadoop/mapred

5. ポートの開放

Hadoop がデフォルトで使用するポート番号が「Hadoop Default Ports Quick Reference」にあるので、必要に応じてルーターやファイアウォール等の設定を変更する。

6. NameNode / DataNode の起動

マスターノードで、NameNode をフォーマットする。
[root@master]# su - hdfs
[hdfs@master]$ hadoop namenode -format
[hdfs@master]$ exit

ここで以下のようなエラーが出る場合は、環境変数 JAVA_HOME が正しく設定されていない可能性がある:
+======================================================================+
|      Error: JAVA_HOME is not set and Java could not be found         |
+----------------------------------------------------------------------+
| Please download the latest Sun JDK from the Sun Java web site        |
|       > http://java.sun.com/javase/downloads/ <                      |
|                                                                      |
| Hadoop requires Java 1.6 or later.                                   |
| NOTE: This script will find Sun Java whether you install using the   |
|       binary or the RPM based installer.                             |
+======================================================================+

マスターノードの NameNode、スレーブノードの DataNode を起動する。
マスターノード:
[root@master]# service hadoop-0.20-namenode start
スレーブノード:
[root@slave]# service hadoop-0.20-datanode start
NameNode、DataNode が稼働しているかどうかは、ブラウザーで以下の URL にアクセスすることで確認できる。
http://master:50070/
"Live Nodes" の数値が稼働している DataNode の数。

7. JobTracker / TaskTracker の起動

マスターノードの HDFS 上に /mapred/system ディレクトリを作成する。
[root@master]# su - hdfs
[hdfs@master]$ hadoop fs -mkdir /mapred/system
[hdfs@master]$ hadoop fs -chown -R mapred:supergroup /
[hdfs@master]$ hadoop fs -chmod -R 0700 /mapred
[hdfs@master]$ exit
マスターノードの JobTracker、スレーブノードの TaskTracker を起動する。
マスターノード:
[root@master]# service hadoop-0.20-jobtracker start
スレーブノード:
[root@slave]# service hadoop-0.20-tasktracker start
JobTracker、TaskTracker が稼働しているかどうかは、ブラウザーで以下の URL にアクセスすることで確認できる。
http://master:50030/
Cluster Summary の "Nodes" の数値が稼働している TaskTracker の数。

8. サンプルコードの実行

パッケージにはサンプルコードが添えられているので試しに実行してみる。
[root@master]# su - mapred
[mapred@master]$ cd /usr/lib/hadoop
[mapred@master]$ hadoop jar hadoop-examples.jar pi 1 10 【変更履歴】 2013-01-22 記述全体を手直し
タグ:Hadoop CDH
posted by K/I at 01:06 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする