2011/08/24

MapReduceのUnitテスト(MRUnit)

MRUnitって便利だよと聞いたので、使ってみたくなりました。

MRUnitは、JUnitフレームワークの上に、MapReduceプログラムをテストするための色んなクラスを提供している子らしい。(参考:Hadoop徹底入門

手順はざっとこんな感じ。
  1. MRUnitのjarをとってくる
  2. eclipseのビルド・パスに追加
参考にしたのはこのサイト
MRUnit(MapReduce用のテストライブラリ)を試す | shinodogg.com

----------------------------------------------------------------
1. MRUnitのjarをとってくる
Clouderaで配布しているCDH3 Component Tarball からMRUnitのjarと、それに必要っぽいJUnit4.xのjarをゲット。

MRUnitのjarは、contrib/mrunit配下に、
JUnit4.xのjarは、lib配下にあるので、それぞれ

${HADOOP_HOME}の同じ場所に置いた。

2. eclipseのビルド・パスに追加
プロジェクトのプロパティから1で追加したjarをビルド・パスに追加。

おしまい。

既にコミュニティ版のHadoopをインストールしていて手順に少し不安があったけど、Hadoop徹底入門にあったMapperのテストコードを書いて、実行してみたところ、きちんと動きました。

=====
今日の環境
OS:WindowsXP sp3
Hadoop 0.20.2
eclipse 3.7

2011/08/19

EclipseでMapReduceプログラミング

この記事でとりあえず開発環境ができたので、
MapReduceのベーシックなサンプルでもあるWordCountをEclipseで書いてみる。
  1. 新規プロジェクトの作成
  2. WordCountの作成
  3. プログラムの実行
----------------------------------------------------------------
1.新規プロジェクトの作成
Eclipseにhadoopのプラグインを入れているので、
「新規プロジェクト」ダイアログから「Map/Reduce Project」を選択できるようになっている。
なので、「Map/Reduce Project」を使って新規プロジェクトを作成。

はじめて作成するので、「Configure Hadoop install directory ...」
からWindowsにインストールしておいたHadoopのインストールディレクトリを設定。

2. WordCountの作成
Hadoop徹底入門を参考に、WordCountのプログラムを書き書き...
こちらのサイトも参考に...
Hadoop WordCountメモ(Hishidama's Hadoop tutorial WordCount Memo)

3. プログラムの実行
[実行]-[Run on Hadoop]を使いこなせなかったので、
2で参考にしたサイトの「Eclipseからデバッグ実行」をお手本にJavaアプリケーションとして実行してみた。

MapReduceはうまく動いたけど、Run on Hadoopで実行してみたかったな...
Run on Hadoopって分散モードで実行するときに使うのかな?だとしたら、分散モードで使えるように設定を変更しなきゃなのかな?
この件は引き続きがんばる。

=====
今日の環境
OS:WindowsXP sp3
Hadoop 0.20.2

2011/08/17

WindowsXP で Hadoop の開発環境をつくる

手持ちのマシン(XPさん)でHadoopをアレコレするための準備。

前提は、Win の Eclipse でコードを書き、ローカルモードで動作確認。
分散環境での動作確認は別途VMを作成して、そこで行う。

やることはとりあえず、大きく2つ。
  1. Hadoop(0.20系)をWindowsXP上で起動(ローカルモード)できるようにする
  2. EclipseでHadoopの開発ができるようにする
    →Eclipse(3.7)は既にインストール済み

 ----------------------------------------------------------------
1. Hadoop(0.20系)をWindowsXP上で起動できるようにする

参考にしたサイト
Hadoop/Windows上での実行(0.20.2) - Yoshimopedia

大まかな手順
  1. JAVA_HOMEの設定
  2. Cygwinのインストール
  3. Hadoopの導入
  4. bin/hadoopを編集
  5. 設定ファイルを編集

1. JAVA_HOMEの設定
ユーザー環境変数「JAVA_HOME」にJREのインストール先を設定する
2. Cygwinのインストール
インストール先の指定特にないようなので、C:\直下にインストール。
システム環境変数「Path」に C:\cygwin\bin;C:\cygwin\usr\bin を追加。

3. Hadoopの導入
hadoop-0.20.2.tar.gz をダウンロードして、任意(※)の場所に展開。
※:Program Filesは避けたほうがいいみたい。

なので、C:\直下に展開。
4. bin/hadoopを編集
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m org.apache.hadoop.util.PlatformName sed -e "s/ /_/g"`
の${CLASSPATH}、${JAVA}にダブルクォートを追加し、
JAVA_PLATFORM=`CLASSPATH="${CLASSPATH}" "${JAVA}" -Xmx32m org.apache.hadoop.util.PlatformName sed -e "s/ /_/g"`
と修正。

5. 設定ファイルを編集
conf/core-site.xml
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>C:\tmp\hadoop</value>
    </property>
</configuration>
※ value の値は作業環境に合わせる。
conf/mapred-site.xml
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>local</value>
    </property>
</configuration>
これで、ローカルモードで MapReduce アプリケーションを動作させることができる。

2. EclipseでHadoopの開発ができるようにする

参考にしたサイト
2009-01-20 - きしだのはてな
Hadoop開発準備のためのEclipseインストール - osacaz4の日記

hadoop にプラグインを追加。

${HADOOP_HOME}/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar

を Eclipse の pluginsフォルダにコピーするだけ。
※:「0.20.2」の部分は先に導入したHadoopのバージョンによって異なる。

=====
今日の環境
OS:WindowsXP sp3
Hadoop 0.20.2

2011/08/16

いまさらだけど、シェバング(shebang)について

「おまじない」として無意識のうちに書いてきたシェバングについて、
いろんなソースを見ていくうちに色々な書き方が出てきたので、改めて整理してみた。

基本的なことについては↓このサイトから。
UNIXの部屋 コマンド検索:shebang (*BSD/Linux)
Kawamura's ChangeLog - シェバング shebang -

#!/bin/sh
って書き方はわかるけど、今回は

#!/usr/bin/env hogehoge
って何!?

って事で、↓このサイトに行き着いた。
どさにっき

スクリプトを実行する環境で、どこにインタープリンタがインストールされているかに依存せずに実行できるようにするために「#!/usr/bin/env」にするって考えだけど、env自体がそもそも環境依存で矛盾が...

なるほどなるほど(゚ー゚)(。_。)(゚-゚)(。_。)
とりあえず、納得はできた。

2011/08/15

HDFS の起動が確認できない

Hadoop 環境(擬似分散モード)を作成して、早速起動してみたものの、Webインターフェースで HDFS の状態を確認できない(;△;)
[hadoop@localhost hadoop]$ ./bin/start-all.sh
を実行。起動確認のため、
NameNodeのWebページ http://localhost:50070/
JobTrackerのWebページ http://localhost:50030/
表示してみると...

NameNodeのWebページ→表示できない
JobTrackerのWebページ→何故か「Nodes」がゼロ

???ってことで、設定ファイル周りから見直し。

設定ファイルは特に問題なかったけど、
NameNodeのフォーマットをrootユーザで実行していて、
NameNode用ディレクトリの所有権やら実行権限の関係でちゃんと動いていないっぽい(;△;)。o0(Oh...)
なので、NameNodeを作り直してみた。
[hadoop@localhost hadoop]$ ./bin/stop-all.sh ←Hadoopデーモンを停止
[hadoop@localhost hadoop]$ su
パスワード:
[root@localhost hadoop]# cd /hadoop/
[root@localhost hadoop]# rm -iR dfs/ ←rootで作成したNameNodeをごっそり削除
    :
  (省略)
    :
[root@localhost hadoop]# exit
[hadoop@localhost hadoop]$ cd ${HADOOP_HOME}
[hadoop@localhost hadoop]$ ./bin/hadoop namenode -format
で、改めてHadoopデーモンを起動して、Webページを確認。
今度はうまくいったみたい (^o^)b

=====
今日の環境
VirtualBox 4.0.10
ホストOS:WindowsXP sp3
ゲストOS:CentOS-5.6(64 bit)
Hadoop 0.20.2

2011/08/12

VirtualBox・CentOS に Hadoop をインストール

作成したVMにHadoopを「擬似分散モード」で導入してみる。

インストール手順はこんな感じ(バージョンは0.20.2)
  1. パッケージの入手
  2. Hadoop用ユーザとグループの設定
  3. Hadoopパッケージの展開と配置
  4. Hadoop用設定
  5. Hadoop用ディレクトリ設定
  6. SSH公開鍵の配布
 参考にしたのはこの本


----------------------------------------------------------------
 1. パッケージの入手
http://www.apache.org/dyn/closer.cgi/hadoop/common/
ここからミラーサイトを表示して、目的のバージョンのパッケージを入手。
今回は、hadoop-0.20.2.tar.gz をゲット

2. Hadoop用ユーザとグループの設定
参考文献の例に倣って、hadoopユーザとhadoopグループを作成。
※ユーザ名、グループ名は任意に設定することもできるみたい。

3. Hadoopパッケージの展開と配置
入手したパッケージを展開し、/usr/localに配置。
シンボリックリンクと環境変数「HADOOP_HOME」を作成。

4. Hadoop用設定
HADOOP_HOME配下にある以下の設定ファイルを編集する。
  • conf/core-site.xml
  • conf/hdfs-site.xml
  • conf/mapred-site.xml
  • conf/mapred-site.xml
5. Hadoop用ディレクトリ設定
4の設定で定義したディレクトリを作成。

6. SSH公開鍵の配布
公開鍵を作成して、スレーブサーバに対して配布。

=====
今日の環境
VirtualBox 4.0.10
ホストOS:WindowsXP sp3
ゲストOS:CentOS-5.6(64 bit)
Hadoop 0.20.2

VirtualBox・CentOSで JDK をインストール

JDKをインストール。

参考にしたのはこのサイト
インストール手順(自己解凍バイナリのインストール)

----------------------------------------------------------------
自己解凍バイナリファイルをダウンロードしておく。
今回は、ホスト側でダウンロードして、共有フォルダに置いた。
共有フォルダについては、過去の記事を。
[root@localhost ~]# ll /usr/local/win_share/
合計 83407
-rwxrwxrwx 1 root root 85407904  8月 12 11:37 jdk-6u26-linux-x64.bin
[root@localhost ~]# cd /usr/java/
[root@localhost java]# sh /usr/local/win_share/jdk-6u26-linux-x64.bin
    :
    :
[root@localhost java]# ll
合計 16
lrwxrwxrwx  1 root root   16  8月 12 11:33 default -> /usr/java/latest
drwxr-xr-x 10 root root 4096  8月 12 11:47 jdk1.6.0_26
lrwxrwxrwx  1 root root   21  8月 12 11:33 latest -> /usr/java/jdk1.6.0_26
コレでおしまい。

=====
今日の環境
OS:WindowsXP sp3
VirtualBox 4.0.10

2011/08/11

VirtualBox・CentOSでホストとディレクトリを共有する

手順はこんな感じ。
※先にGuestAdditionのインストールを済ませておくこと。
  1. ゲストOSの設定
  2. CentOSからマウント
参考にしたのはこのサイト

----------------------------------------------------------------
1. ゲストOSの設定
ゲストOSの[デバイス]-[共有フォルダ]メニューを選択。
「共有フォルダ」画面でホストOSで共有したいディレクトリを追加。
 
2. CentOSからマウント
コンソールから適当にディレクトリを作って、1で指定したディレクトリをマウント。
今回は/usr/local 配下に作った。
[root@localhost local]# mkdir win_share
[root@localhost local]# mount.vboxsf vbox-share /usr/local/win_share/
※ mount.vboxsf (ホストOS側のディレクトリ) (CentOS側のディレクトリ)
 
コレでおしまい。
 
=====
今日の環境
OS:WindowsXP sp3
VirtualBox 4.0.10

2011/08/10

VirtualBox・CentOSでGuestAdditionをインストールする

ゲストOSにGuestAdditionをインストールすると、まぁ色々便利みたい。
なので、インストールします。

手順はこんな感じ。
  1. 事前準備
    →不足しているツールをインストールする
  2. [デバイス(D)]-[Guest Additionsのインストール(I)]の選択
  3. インストール
参考にしたのはこのサイト
CentOSにGuest Additionをインストールをする方法
GNOME vs KDE | とおやまの備忘録

----------------------------------------------------------------
1. 事前準備
GuestAdditionをインストールするには、↓このツールが必要みたい。
  • gcc
  • make
  • kernel-devel
なので、まずはツールの確認とインストール。
[root@localhost ~]# yum list installed | grep "gcc"
[root@localhost ~]# yum list installed | grep "make"
[root@localhost ~]# yum list installed | grep "kernel-devel"

インストールされていないツールがあったら、インストール・再起動
[root@localhost ~]# yum install gcc
[root@localhost ~]# yum install make
[root@localhost ~]# yum install kernel-devel
[root@localhost ~]# shutdown -r now
2.  [デバイス(D)]-[Guest Additionsのインストール(I)]の選択
ゲストOSの [デバイス(D)]-[Guest Additionsのインストール(I)]の選択。
(デスクトップに「VBOX~」の名前がついたCD-ROMのアイコンが表示されているはず)

3. インストール
コンソールを起動して、「cd /media/VBOX」と入力し、Tabで保管した先に移動。
Linux版のファイルを実行して、再起動。
[root@localhost ~]# cd /media/VBOXADDITIONS_4.0.10_72479/
[root@localhost VBOXADDITIONS_4.0.10_72479]# ll
合計 37423
dr-xr-xr-x 3 root root     2048  6月 24 22:45 32Bit
dr-xr-xr-x 2 root root     2048  6月 24 22:45 64Bit
-r-xr-xr-x 1 root root      647  1月 19  2011 AUTORUN.INF
-r-xr-xr-x 1 root root  7863758  6月 24 22:43 VBoxLinuxAdditions.run
-r-xr-xr-x 1 root root 14665216  6月 24 23:44 VBoxSolarisAdditions.pkg
-r-xr-xr-x 1 root root  9294616  6月 24 22:31 VBoxWindowsAdditions-amd64.exe
-r-xr-xr-x 1 root root  6199880  6月 24 22:25 VBoxWindowsAdditions-x86.exe
-r-xr-xr-x 1 root root   278832  6月 24 22:24 VBoxWindowsAdditions.exe
-r-xr-xr-x 1 root root     6966  6月 24 22:40 autorun.sh
-r-xr-xr-x 1 root root     5523  6月 24 22:40 runasroot.sh
[root@localhost VBOXADDITIONS_4.0.10_72479]# ./VBoxLinuxAdditions.run
[root@localhost VBOXADDITIONS_4.0.10_72479]# shutdown -r now
こんな感じでインストールは完了。

=====
今日の環境
OS:WindowsXP sp3
VirtualBox 4.0.10

2011/07/13

2011/06/29 Hadoop勉強会メモ(電力編)

Hadoopを中心とした分散環境での開発方法論・モデリング・設計手法等についての座談会(第5回)のメモ。
九州電力におけるHadoopの取り組みについて

■Hadoopを採用するに至った経緯
情報システム部が抱える問題
 各部門が個別最適なシステムを導入
 各部門ごとに異なるベンダー

システムのサイロ化、ベンダーロックイン

■将来に対する課題
 ・ホスト計算機システム再構築への対応
  →ネックはバッチ処理
 ・両現用センター構成への対応
  →事業(サービス)継続のため
 ・スマートグリッドへの対応

■そのなかで...
 ・コスト削減要求
 ・技術革新に対する対応
 ・商用パッケージ、カスタマイズの限界
  →パッケージ代<カスタマイズ代...となることも
 ・脱ベンダーロックイン

→オープンソース適用に向けての取り組み

■H21研究概要
クラウドの要素技術はサーバ仮想化技術(KVM)と分散処理技術(Eucalyptus)である
オープンソースと商用(VMWear)の性能・機能コスト比較
Hadoopの性能検証
 →台数増やすとどうなるかの実証とか
  →サーバも構築した(b10台、仮想100台以上)
  →結果:台数↑、性能↑(リニアに向上していくみたい)
Hadoopの信頼性
 →実行中にノードを抜いたりして、うまく動くか検証したりした
クラウド環境下における管理手法
 ・リソースの状況とアプリケーションの情報の一括管理
  →管理システムが複雑に
  →RabbitMQ を使った検証

障害時の切り離しとか、複雑多岐になる
→データセンター全体の管理も重要になる

■H22研究概要
分散処理に特化した研究
昨年度からの課題
 ・サーバの仮想化・管理に関する課題
 ・分散処理に関する課題
 ・分散処理環境の運用監視に関する課題

目的
Hadoopを使って、九州電力の典型的業務システムを動かす(運用はしてないけどね)

1.サーバ統合基盤
monkey magic

仮想サーバリソースの有効活用
仮想サーバの自動制御
迅速なサーバ機動
複数の仮想化ソフトウェア(KVMでも、VMWearでもなんでも)に対しても、その差異を気にせず利用可能
ネットワーク的に違う拠点でも制御可能

Eucalyptusは使わず、自社開発

libvertを使った。

Eucalyptus
10台以上リクエストタイムアウトが発生したり...

 ・要求台数に満たなくても、起動したものからサービス提供
  →Lindaモデル

monkey magicとの連携→amazon EC2との連携が可能

Volante Cloud
と連携APIで接続
 →ハイブリッドクラウドを実現

50台起動→15分ほど。既存の7分の1くらいで実現可能に

2.運用監視基盤
 →既存の監視に加え、判断、制御を行う
  ※monkey magicのDSLで定義可能

3.分散バッチ処理
hadoopサーバ(仮想10台。実際は物理2台ですんだ)
処理対象の電柱データ104万本

抽出してHDFSに

処理性能が676倍に

コストも物理サーバ2台といい感じ。

プログラム処理の効率化
 →プログラムに前後関係が無いことが前提

障害発生
 ・レプリケーション
 ・復元可能

■H23研究概要

課題
・仮想サーバの動的・固定割当
・分散バッチに関する課題
 →開発標準の策定
 →分散バッチ開発フレームワークの整備
  →Asakusa

将来へ向けて
 ・スマートグリッドの時代に
  →メーターの取替えが必要なので、実際10年はかかるw
  →10年後のシステムに商用ソフトがいいのか...
   →Hadoopみたいなのがいいのでは?
  →24h×2×800万世帯...
   →1日に膨大なデータが増えていく

テネシー州の電力公社の事例

まず、将来目指すべき理想像を掲げる
新しい技術の導入は、段階を踏んで
コミュニケーションは大切

diskIOを分散するのが分散化のポイント
→ストレージを共有するタイプなら、Hadoopは向かない...

仮想化で何がマズイか)ディスクIOが共有するので<共有ストレージとか使う場合 これだと分散の意味がいない・・。IOを分散するような仮想化じゃないとストレージがボトルネックになる
仮想化上のHadoopで気をつけなければいけないのは、ディスクを共有しないこと

Asakusa、monkey magic の連携は必然的にそうなった。
monkey magic
 →8月にオープンソース化
 →Asakusaのコードリーディングの会あり

2011/06/29 Hadoop勉強会メモ(鉄道編)

Hadoopを中心とした分散環境での開発方法論・モデリング・設計手法等についての座談会(第5回)のメモ。

■システムの耐用年数10年(開発4~5年、規模10Mステップ、10K人月)
 進路制御のシステムはガチガチなつくりで、耐用年数も20年を超える
 →システムの寿命が長いので、新しく採用する技術の見極めも重要に

■国鉄三大システム
 ・マルス 1960~
 ・コムトラック 1972~
  →鉄道会社別に派生したシステム有
 ・ヤックス ~1984

■鉄道システムに求められるもの
 ・作業の効率化
 ・連続稼働(社会インフラとしての責務)
  →分散処理
   ①可用性のためのしくみ
   ②バッチ処理の高速化
 ・高度な判断支援(ベテランの引退に伴うノウハウの継承)
  →最適化

■連続稼働のためのシステム構成
・Fault Tolerant:1系のみ
・Active-Standby(FT):1系、2系
・Active-Active:1系、2系 ◎現在、これが主流
 →系切り替えは10秒以内、データのリトライからの投入はない。
  ・専用ハードウェアが高価
  ・作りこみが複雑
  ・系を切り替えるタイミングは無限大(試験不可能:不具合の温床)
 →汎用的なハードを使用したい
 →なるべく作りこみを減らしたい
・1系、2系、3系(3系は予備でStandby)
・1系、2系、3系、全部Active
 →多数決をとらせる(magiシステムやね)

■輸送計画のシステムではバッチ処理がほとんど。
・作業のオーダーは数分~数時間
 →この時間を短縮したら、作業の効率化になるかな?
 →Asakusaつかえるかな?

■鉄道における計画問題
 ・作業が俗人的
 ・効率化したい

 ☆研究が盛んだが、実用化はまだ...
  ただ、ハードウェアの性能向上、低下価格化進んでるので..

■システムに求める要望も変化している
・プロフェッショナル向けの機能から、誰でもそれなりの結果を出せる機能へ

■最適化技術
 ・ある条件のもとで最適解または許容解を見つける技術
  ・線形計画法、整数計画法
  ・ネットワークフロー
  ・?

 ☆とにかく数式化・モデリングしないと始まらない

■制約条件もいろいろ
・走行距離とか、検査とかも含める
 それを踏まえて、車両運用案を決めるのが大変。

■乗務員運用のモデリング
 ・車両運用のモデリングと同じ。
  ただし、1車両に複数の乗務員が便乗できるので、数式が少し変わる。

■車両割当のモデリング
 ・組み合わせも膨大
 ・予備の割当も必要
 ・ネットワークフローを使って作業したことも

■1970年代頃から盛んに研究されてきた
コンピュータの高性能化により、机上研究から実証研究に移りつつある。
ただし、実用化はまだまだ...

大手鉄道会社では、実用化を始めているところも...
ただ、まだまだ

■まとめ
鉄道システム
 ・まだまだシステムの介在する領域アリ(未踏領域が多く残っている)
 ・開発サイクル長く、開発も保守的になりがち
  →35年前のコムトラの仕様と大きくは変わっていなかったりする。
  →新しい手法を導入するには、事前の緻密な調査が必要。結構コストかかる。
 ・業務の用件や、システム利用者の意識は常に変化
  →システムは追従の必要アリ
 ・これからの鉄道システムの開発には、多様な技術力が必要


コアな部分とそうでない部分を分けて考えようという流れもある。
 ・コアな部分:保守的でも仕方ないかな
 ・そうでない部分:分散処理とか使ってみようよ

東京メトロは最適化技術を導入しはじめている
京急まだ、基本人力w
 →システムと人間の使い分けをある意味しっかりしている。

市販の参考文献アリ

質問:分散系は、鉄道の周りのサービスで使ってんじゃない?
Suicaの使用履歴(電子マネーの購買履歴)とか、乗車データとかはある。
→データ売ってもお金になる(駅構内のテナントの販売計画とか)
→東急エージェンシーとか、鉄道系広告会社が研究してそう。
→ストーカーみたいなマーケってテーマのひとつだし...

質問:新技術の採用のネック
・保守体制、コストがキーに
 →耐用年数長いしね
  →採用技術(製品)のライフサイクルは結構気にする
 →スピーカーさん自身、途中で終わっちゃったシステムは今のところない
 →エクセルで帳票作ってほしいっていうニーズも
  →10年後のエクセルってw 互換性はー?
 →企業買収とかで、製品の取扱い元が変わって、保守費用UPってことも

2011/07/12

仮想マシンにCentOSを最小設定でインストールしてみる

VM作るのに、最小でCentOSをインストールしようと思って、ついでだからインストール時の設定を全部OFFにしてインストールするとどうなるのか試してみた。
(OS:CentOS-5.5-x86_64)
  • CD Found:Skip
  • CentOS5:Next
  • 言語選択:Japanese(日本語)
  • キーボード選択:日本語
  • パーティション設定方法選択:デフォルト
  • ネットワーク設定:デフォルト
  • 地域と時間:「システムロックでUTCを使用」のチェックをはずす
  • rootパスワード:すきなように入力
  • インストールするシステムの選択
    • 「Desktop(GNOME)」のチェックをはずす(ほかのチェックも全てOFF)
    • 「今すぐカスタマイズする(C)」を選択
      • 全てのチェックをOFF
これでインストールする。
で、ネットワークの設定だけして、色々見てみた。
プロセス
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 12:54 ? 00:00:10 init [3]
root 2 1 0 12:54 ? 00:00:00 [migration/0]
root 3 1 0 12:54 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 12:54 ? 00:00:00 [watchdog/0]
root 5 1 0 12:54 ? 00:00:00 [events/0]
root 6 1 0 12:54 ? 00:00:00 [khelper]
root 11 1 0 12:54 ? 00:00:00 [kthread]
root 15 11 0 12:54 ? 00:00:00 [kblockd/0]
root 16 11 0 12:54 ? 00:00:00 [kacpid]
root 54 11 0 12:54 ? 00:00:00 [cqueue/0]
root 57 11 0 12:54 ? 00:00:00 [khubd]
root 59 11 0 12:54 ? 00:00:00 [kseriod]
root 126 11 0 12:54 ? 00:00:00 [khungtaskd]
root 127 11 0 12:54 ? 00:00:00 [pdflush]
root 128 11 0 12:54 ? 00:00:00 [pdflush]
root 129 11 0 12:54 ? 00:00:00 [kswapd0]
root 130 11 0 12:54 ? 00:00:00 [aio/0]
root 267 11 0 12:54 ? 00:00:00 [kpsmoused]
root 291 11 0 12:54 ? 00:00:00 [ata/0]
root 292 11 0 12:54 ? 00:00:00 [ata_aux]
root 295 11 0 12:54 ? 00:00:00 [scsi_eh_0]
root 300 11 0 12:54 ? 00:00:00 [kstriped]
root 309 11 0 12:54 ? 00:00:00 [ksnapd]
root 320 11 0 12:54 ? 00:00:00 [kjournald]
root 350 11 0 12:55 ? 00:00:00 [kauditd]
root 383 1 0 12:55 ? 00:00:00 /sbin/udevd -d
root 1085 11 0 12:55 ? 00:00:00 [kmpathd/0]
root 1086 11 0 12:55 ? 00:00:00 [kmpath_handlerd]
root 1145 11 0 12:55 ? 00:00:00 [kjournald]
root 1348 1 0 12:55 ? 00:00:00 mcstransd
root 1685 1 0 12:55 ? 00:00:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient
root 1738 1 0 12:55 ? 00:00:00 /usr/sbin/restorecond
root 1751 1 0 12:55 ? 00:00:00 syslogd -m 0
root 1754 1 0 12:55 ? 00:00:00 klogd -x
dbus 1768 1 0 12:55 ? 00:00:00 dbus-daemon --system
68 1804 1 0 12:55 ? 00:00:00 hald
root 1805 1804 0 12:55 ? 00:00:00 hald-runner
68 1812 1805 0 12:55 ? 00:00:00 hald-addon-acpi: listening on acpi kernel
68 1816 1805 0 12:55 ? 00:00:00 hald-addon-keyboard: listening on /dev/inp
root 1826 1805 0 12:55 ? 00:00:03 hald-addon-storage: polling /dev/hdc
root 1845 1 0 12:55 ? 00:00:00 /usr/sbin/sshd
root 1856 1 0 12:55 ? 00:00:00 login -- root
root 1857 1 0 12:55 tty2 00:00:00 /sbin/mingetty tty2
root 1858 1 0 12:55 tty3 00:00:00 /sbin/mingetty tty3
root 1859 1 0 12:55 tty4 00:00:00 /sbin/mingetty tty4
root 1860 1 0 12:55 tty5 00:00:00 /sbin/mingetty tty5
root 1874 1 0 12:55 tty6 00:00:00 /sbin/mingetty tty6
root 1919 1856 0 12:56 tty1 00:00:00 -bash
root 2098 1845 0 13:21 ? 00:00:00 sshd: root@pts/0
root 2100 2098 0 13:21 pts/0 00:00:00 -bash
root 2121 2100 0 13:38 pts/0 00:00:00 ps -ef

ネットワーク(netstat -a)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
getnameinfo failed
getnameinfo failed
tcp 0 0 [UNKNOWN]:ssh [UNKNOWN]:54991 ESTABLISHED
udp 0 0 *:bootpc *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 5787 /var/run/setrans/.setrans-unix
unix 2 [ ACC ] STREAM LISTENING 6525 @/var/run/hald/dbus-yQOeYpn4bF
unix 2 [ ACC ] STREAM LISTENING 6425 /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 6524 @/var/run/hald/dbus-US7ncFEhxY
unix 2 [ ] DGRAM 1485 @/org/kernel/udev/udevd
unix 2 [ ] DGRAM 6533 @/org/freedesktop/hal/udev_event
unix 4 [ ] DGRAM 6376 /dev/log
unix 2 [ ] DGRAM 8349
unix 3 [ ] STREAM CONNECTED 7284 /var/run/dbus/system_bus_socket
unix 3 [ ] STREAM CONNECTED 7283
unix 3 [ ] STREAM CONNECTED 7265 @/var/run/hald/dbus-US7ncFEhxY
unix 3 [ ] STREAM CONNECTED 7264
unix 3 [ ] STREAM CONNECTED 7107 @/var/run/hald/dbus-US7ncFEhxY
unix 3 [ ] STREAM CONNECTED 7105
unix 3 [ ] STREAM CONNECTED 7084 @/var/run/hald/dbus-US7ncFEhxY
unix 3 [ ] STREAM CONNECTED 7082
unix 3 [ ] STREAM CONNECTED 6528 @/var/run/hald/dbus-yQOeYpn4bF
unix 3 [ ] STREAM CONNECTED 6527
unix 3 [ ] STREAM CONNECTED 6442
unix 3 [ ] STREAM CONNECTED 6441
unix 2 [ ] DGRAM 6384
パッケージ(rpm -qa)
nash-5.1.19.6-61
filesystem-2.4.0-3.el5
termcap-5.5-1.20060701.1
libgcc-4.1.2-48.el5
glibc-common-2.5-49
centos-release-notes-5.5-0
glibc-2.5-49
chkconfig-1.3.30.2-2.el5
glib2-2.12.3-4.el5_3.1
audit-libs-1.7.17-3.el5
libtermcap-2.0.8-46.1
info-4.8-14.el5
ncurses-5.5-24.20060715
readline-5.1-3.el5
sqlite-3.3.6-5
bzip2-libs-1.0.3-4.el5_2
libgpg-error-1.4-2
libgcrypt-1.4.4-5.el5
libpng-1.2.10-7.1.el5_3.2
libattr-2.4.32-1.1
libcap-1.10-26
libtiff-3.8.2-7.el5_3.4
db4-4.3.29-10.el5
diffutils-2.8.1-15.2.3.el5
libxml2-2.6.26-2.1.2.8
slang-2.0.6-4.el5
libXau-1.0.1-3.1
libsepol-1.15.2-3.el5
audit-libs-1.7.17-3.el5
libpng-1.2.10-7.1.el5_3.2
libgpg-error-1.4-2
libjpeg-6b-37
nss-3.12.3.99.3-1.el5.centos.2
keyutils-libs-1.2-1.el5
gnutls-1.4.1-3.el5_3.5
iproute-2.6.18-11.el5
pcre-6.6-2.el5_1.7
procps-3.2.7-16.el5
gzip-1.3.5-11.el5.centos.1
iputils-20020927-46.el5
tcp_wrappers-7.6-40.7.el5
wireless-tools-28-2.el5
mingetty-1.07-5.2.2
libvolume_id-095-14.21.el5
cyrus-sasl-lib-2.1.22-5.el5_4.3
libXdmcp-1.0.1-2.1
gnutls-1.4.1-3.el5_3.5
libXdmcp-1.0.1-2.1
sysfsutils-2.0.0-6
ed-0.2-39.el5_2
hdparm-6.6-2
libtiff-3.8.2-7.el5_3.4
libtermcap-2.0.8-46.1
xorg-x11-filesystem-7.1-2.fc6
libXrender-0.9.1-3.1
libXfixes-4.0.1-2.1
libXrandr-1.1.1-3.3
libXi-1.0.1-4.el5_4
redhat-logos-4.9.99-11.el5.centos
libX11-1.0.3-11.el5
libXrender-0.9.1-3.1
libXfixes-4.0.1-2.1
libXrandr-1.1.1-3.3
libXinerama-1.0.1-2.1
device-mapper-1.02.39-1.el5
libselinux-1.33.4-5.5.el5
e2fsprogs-libs-1.39-23.el5
e2fsprogs-1.39-23.el5
findutils-4.2.27-6.el5
krb5-libs-1.6.1-36.el5_4.1
python-2.4.3-27.el5
fontconfig-2.4.1-7.el5
cryptsetup-luks-1.0.3-5.el5
libsemanage-1.9.1-4.4.el5
libselinux-utils-1.33.4-5.5.el5
rpm-libs-4.4.2.3-18.el5
python-sqlite-1.1.7-1.2.1
libselinux-python-1.33.4-5.5.el5
cracklib-2.8.9-3.3
openldap-2.3.43-12.el5
device-mapper-event-1.02.39-1.el5
logrotate-3.7.4-9
rpm-python-4.4.2.3-18.el5
net-tools-1.60-81.el5
system-config-securitylevel-tui-1.6.29.1-5.el5
rhpl-0.194.1-1
fontconfig-2.4.1-7.el5
cairo-1.2.4-5.el5
pango-1.14.9-6.el5.centos
pam-0.99.6.2-6.el5_4.1
util-linux-2.13-0.52.el5_4.1
krb5-libs-1.6.1-36.el5_4.1
usermode-1.88-3.el5.2
initscripts-8.45.30-2.el5.centos
mcstrans-0.2.11-3.el5
libXft-2.1.10-1.1
gtk2-2.10.4-20.el5
selinux-policy-2.4.6-279.el5
python-iniparse-0.2.3-4.el5
setools-3.0-3.el5
dhclient-3.0.5-23.el5
authconfig-5.3.21-6.el5
openssl-0.9.8e-12.el5_4.6
gtk2-2.10.4-20.el5
ecryptfs-utils-75-5.el5
selinux-policy-targeted-2.4.6-279.el5
dbus-libs-1.1.2-14.el5
openssh-4.3p2-41.el5
dbus-glib-0.73-8.el5
fipscheck-1.2.0-1.el5
yum-3.2.22-26.el5.centos
module-init-tools-3.3-0.pre3.1.60.el5
openssh-clients-4.3p2-41.el5
hwdata-0.213.18-1.el5.1
kernel-2.6.18-194.el5
kudzu-1.2.57.1.24-1.el5.centos
cracklib-dicts-2.8.9-3.3
setup-2.5.58-7.el5
basesystem-8.0-5.1.1.el5.centos
libgcc-4.1.2-48.el5
tzdata-2010e-1.el5
glibc-2.5-49
rootfiles-8.1-1.1.1
zlib-1.2.3-3
mktemp-1.5-23.2.2
popt-1.10.2.3-18.el5
expat-1.95.8-8.3.el5_4.2
bash-3.2-24.el5
libsepol-1.15.2-3.el5
nspr-4.7.6-1.el5_4
sed-4.1.5-5.fc6
freetype-2.2.1-21.el5_3
elfutils-libelf-0.137-3.el5
libstdc++-4.1.2-48.el5
gawk-3.1.5-14.el5
keyutils-libs-1.2-1.el5
libacl-2.2.39-6.el5
libjpeg-6b-37
keyutils-1.2-1.el5
cpio-2.6-23.el5_4.1
iptables-1.3.5-5.3.el5_4.1
atk-1.12.2-1.fc6
libsysfs-2.0.0-6
glib2-2.12.3-4.el5_3.1
zlib-1.2.3-3
freetype-2.2.1-21.el5_3
atk-1.12.2-1.fc6
libgcrypt-1.4.4-5.el5
nspr-4.7.6-1.el5_4
hmaccalc-0.9.6-3.el5
libXau-1.0.1-3.1
iptables-ipv6-1.3.5-5.3.el5_4.1
libusb-0.1.12-5.1
grep-2.5.1-55.el5
less-436-2.el5
binutils-2.17.50.0.6-14.el5
tcl-8.4.13-4.el5
checkpolicy-1.33.1-6.el5
ethtool-6-4.el5
gdbm-1.8.0-26.2.1
dmidecode-2.10-3.el5
sgpio-1.2.0_10-2.el5
nss-3.12.3.99.3-1.el5.centos.2
expat-1.95.8-8.3.el5_4.2
libstdc++-4.1.2-48.el5
udftools-1.0.0b3-0.1.el5
file-4.17-15.el5_3.1
setserial-2.17-19.2.2
readline-5.1-3.el5
bitstream-vera-fonts-1.10-7
libX11-1.0.3-11.el5
libXext-1.0.1-2.1
libXcursor-1.1.7-1.1
libXinerama-1.0.1-2.1
centos-release-5-5.el5.centos
crontabs-1.10-8
grub-0.97-13.5
libXext-1.0.1-2.1
libXcursor-1.1.7-1.1
libXi-1.0.1-4.el5_4
libselinux-1.33.4-5.5.el5
e2fsprogs-libs-1.39-23.el5
device-mapper-1.02.39-1.el5
shadow-utils-4.0.17-15.el5
kpartx-0.4.7-34.el5
coreutils-5.97-23.el5_4.2
openssl-0.9.8e-12.el5_4.6
udev-095-14.21.el5
cairo-1.2.4-5.el5
newt-0.52.2-15.el5
device-mapper-multipath-0.4.7-34.el5
tar-1.15.1-30.el5
python-elementtree-1.2.6-5
yum-metadata-parser-1.1.2-3.el5.centos
audit-libs-python-1.7.17-3.el5
m2crypto-0.16-6.el5.6
cups-libs-1.3.7-18.el5
lvm2-2.02.56-8.el5
rpm-4.4.2.3-18.el5
psmisc-22.2-7
MAKEDEV-3.23-1.2
libhugetlbfs-1.3-7.el5
vim-minimal-7.0.109-6.el5
hicolor-icon-theme-0.9-2.1
libXft-2.1.10-1.1
cracklib-2.8.9-3.3
pam-0.99.6.2-6.el5_4.1
libuser-0.54.7-2.1.el5_4.1
passwd-0.73-1
SysVinit-2.86-15.el5
policycoreutils-1.33.12-14.8.el5
kbd-1.12-21.el5
pango-1.14.9-6.el5.centos
trousers-0.3.1-4.el5
python-urlgrabber-3.1.0-5.el5
ecryptfs-utils-75-5.el5
sysklogd-1.4.1-46.el5
dhcpv6-client-1.0.10-18.el5
prelink-0.4.0-2.el5
cups-libs-1.3.7-18.el5
trousers-0.3.1-4.el5
libhugetlbfs-1.3-7.el5
fipscheck-lib-1.2.0-1.el5
dmraid-1.0.0.rc13-63.el5
dbus-1.1.2-14.el5
dmraid-events-1.0.0.rc13-63.el5
yum-fastestmirror-1.1.16-14.el5.centos.1
mkinitrd-5.1.19.6-61
mkinitrd-5.1.19.6-61
openssh-server-4.3p2-41.el5
pciutils-2.2.3-8.el5_4
hal-0.5.8.1-59.el5
pm-utils-0.99.3-10.el5.centos
起動スクリプト(chkconfig --list)
haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
kudzu 0:off 1:off 2:off 3:on 4:on 5:on 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mcstrans 0:off 1:off 2:on 3:on 4:on 5:on 6:off
messagebus 0:off 1:off 2:off 3:on 4:on 5:on 6:off
multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
netplugd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off
rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
restorecond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
tcsd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
=====
今日の環境
OS:MacOSX
VirtualBox 4.0.10

2011/07/11

VirtualBox・CentOSのネットワーク設定

ホストOS、ゲストOS間で通信できて、ゲストOSからネットに接続したい。
そしてゲストOSにターミナルからログインしたい(ssh接続で)

手順はこんな感じ。

  1. ホストOSでの設定
    →ホストオンリーアダプタとNATを使う。
    アダプタの説明はこのサイトVirtualBox (3) - garbagetownがわかりやすかった
  2. ゲストOSでの設定
    i) IPアドレスを固定する
    ii) ホスト名を変更する
    iii) iptablesを設定する
参考にしたのはこのサイト
----------------------------------------------------------------
1. ホストOSでの設定
VirtualBoxの設定画面でアダプタの設定。
  • アダプタ1:ホストオンリーアダプタ
  • アダプタ2:NAT
にする。

2. ゲストOSでの設定
i) IPアドレスを固定する
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
HWADDR=08:00:27:2C:06:13
ONBOOT=yes
IPADDR=192.168.56.101        (ifconfig で調べた eth0 のIPを設定)
NETMASK=255.255.255.0

[root@localhost ~]# ifdown eth0
[root@localhost ~]# ifup eth0    ← 設定を反映させる
ii) ホスト名を変更する
[root@localhost ~]# vi /etc/hosts
127.0.0.1 hogehoge localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
[root@localhost ~]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hogehoge
[root@ localhost ~]# shutdown -r now
[root@hogehoge ~]# _
iii) iptablesを設定する
[root@hogehoge ~]# vi iptables.sh
#!/bin/sh

IPTABLES="/sbin/iptables"

# ルールの初期化
${IPTABLES} -F

# ポリシーの設定
${IPTABLES} -P INPUT DROP
${IPTABLES} -P OUTPUT ACCEPT
${IPTABLES} -P FORWARD DROP

# ループバックアドレス
${IPTABLES} -A INPUT -i lo -j ACCEPT

# 接続済みを許可
${IPTABLES} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ping を許可(1req/sのみ許可)
${IPTABLES} -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# 公開サービス
${IPTABLES} -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT # SSH
# 必要なら。とりあえず最初はターミナルからのSSH接続ができればいいので、↑だけ。
#${IPTABLES} -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT # HTTP
#${IPTABLES} -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT # HTTPS

[root@hogehoge ~]# chmod 744 iptables.sh
[root@hogehoge ~]# ./iptables.sh ← iptables を設定

[root@hogehoge ~]# iptables -L ← 変更を確認
:
:
[root@hogehoge ~]# service iptables save ← 変更を保存
[root@hogehoge ~]# service iptables restart

とりあえずこんなかんじ。これでターミナルから
ssh ユーザ名@IPアドレス
で仮想マシンにログインできた。


=====
今日の環境
OS:MacOSX
VirtualBox 4.0.10

2011/04/23

CentOS5.5のインストールを片っ端から試した結果

相変わらずインストールがうまくいかないので、片っ端から試してみることに。
暇なんですね。はい。

とりあえず、理研から
CentOS-5.5-i386-netinstall.iso
を引っ張ってきました。

インストールするパッケージを選択して、インストールプロセスが開始したら、いつも通り?
ほげほげ.rpmが見つかんないんだけど、壊れてるんじゃね?っていうエラーが...
さっくりあきらめて、

もっかい理研から
CentOS-5.5-i386-bin-DVD.iso
を引っ張ってきて、これでインストールはじめました。
こっちはあっさり成功。

64bit版も同様に、
CentOS-5.5-x86_64-netinstall.iso
を使うと、ほげほげ.rpmが見つかんないんだけど、壊れてるんじゃね?
って言われて、インストールがうまくいかない。

CentOS-5.5-x86_64-bin-DVD-1of2.iso
CentOS-5.5-x86_64-bin-DVD-2of2.iso
を使うと、インストールに成功する...

なんだかなぁ、もう

「ほげほげ.rpm」も色々バリエーションがあって、
私にはどうにもできません。

今回の教訓「netinstallは使うな」


=====
今日の環境
OS:MacOSX
VirtualBox 4.0.4

2011/04/19

CentOS5.6をインストールしようとした

理研から CentOS-5.6-x86_64-netinstall.iso を持ってきて、
VirtualBox にインストールしてみたら、

gnutls-1.4.1-3.el5_4.8.i386.rpm が開けないって怒られた...(´・ω・`)ショボーン

そもそも「gnutls」って何?ってカンジなので、Google先生に聞いたら、
GnuTLS(GNU Transport Layer Security Library)ってお名前で、
SSL/TLSプロトコルのフリーな実装ってみんなが言ってる。

OpenSSLをGNUプロジェクトでも使えるようにすることを目的に開発されたらしい。
で、この子はアプリケーションがネットワーク通信層を越えて安全な通信プロトコルを
利用できるようAPIを提供することを目的とするそうです。

CentOSのインストールに話を戻すと、
うっかり Reboot して振り出しに戻ること3回...もう意味がわからないので寝る。

=====
今日の環境
OS:MacOSX
VirtualBox 4.0.4