Summary

Hadoopのプロジェクト
Project 説明
HDFS 高いスループットを保ちつつ、同時に信頼性を追求した分散ファイルシステム
MapReduce クラスタ環境で並列分散処理を行うためのフレームワーク
Hive Hadoopでの操作を容易にするためのSQL的なインターフェイス
Ping Hadoopでの操作データフローで記述するスクリプト言語風インターフェース
Sqoop DBMSとHadoopの間のデータ移行を実現する
HBase 巨大なテーブルを管理するために、拡張性を追求したKey-Value Store
ZooKeeper 分散クラスタ環境上で動作させるアプリケーションを集中管理するためのプロダクト

Cloudera's Distribution for Hadoop (CDH)

ユーザ(必要に応じてパスワードを変更すること):
ユーザ 役割
hdfs NameNode, SecondaryNameNode, DataNodeを管理するユーザ
mapred JobTracker, TaskTrackerを管理するユーザ

主要なインストール先ディレクトリ("rpm -ql hadoop-0.20"の実行結果):
項目 インストール先
Hadoop ラッパースクリプト /usr/bin/hadoop-0.20
Hadoop 設定ファイル /etc/hadoop-0.20/conf/*
HadoopJarとライブラリファイル($HADOOP_HOME) /usr/lib/hadoop-0.20/*
Hadoop ログファイル /var/log/hadoop-0.20/*
HadoopManページ /usr/share/man/*
Hadoopサービススクリプト /etc/init.d/hadoop-0.20-*



HDFS

HDFSは1台のMasterNodeと複数のDataNodeから構成させる。

HDFSの設定ファイル:/etc/hadoop/conf/
file description defined parameters
core-site.xml Hadoop共通の設定 fs.default.name, hadoop.tmp.dir
hdfs-site.xml HDFSの挙動の設定 dfs.name.dir, dfs.data.dir, dfs.replication, dfs.replication.min, dfs,safemode.threshold.pct
masters SecondaryNameNodeの指定 (FQDN or IP addressによる指定)
slaves DataNodeの指定 (FQDN or IP addressによる指定)

Hadoop共通の設定パラメタ:core-site.xml
parameters description
fs.default.name Hadoopで使用するファイルシステムを設定。デフォルトではローカルファイルシステムを利用する。HDFSを使用する場合はhdfs://というスキーマで始まるURIを設定する。
hadoop.tmp.dir HDFSだけでなく、MapReduceやクライアントプログラムが一時的に使用するファイルを格納するディレクトリを指定。

HDFSの設定パラメタ:hdfs-site.xml
parameters description
dfs.name.dir NameNodeが管理するデータ(fsimageedits)を格納するディレクトリ
dfs.data.dir DataNodeが管理するブロックなどを格納するディレクトリ
dfs.replication 目標のレプリケーション数。HDFSはこのレプリケーション数を維持しようとする
dfs.replication.min セーフモードから離脱するための最小レプリケーション数。HDFSの書き込みは、最小レプリケーション数までブロックが書き込まれた時点で成功となる。HDFSは起動時に全てのブロック内dfs.safemode.thresholdで示される割合のブロックが最小レプリケーション数に達した時点でSafeモードから離脱可能となる
dfs.safemode.threshold.pct HDFSがSafeモードから離脱するめに必要な全ブロックに対するレプリケーション数の割合


MasterNode構築

手順は以下の通り。
  1. yumによるバイナリのインストール
  2. hadoop.tmp.dir, dfs.*.dirの準備
  3. 設定ファイル作成
  4. hdfsユーザパスワード設定とファイルシステムフォーマット

yumによるバイナリのインストール

$ sudo yum install hadoop-0.20-namenode.noarch
==================================================================================
 Package                アーキテクチャ  バージョン          リポジトリー    容量
==================================================================================
インストール中:
 hadoop-0.20-namenode   noarch          0.20.2+923.256-1    cloudera-cdh3   3.7 k
依存性関連でのインストールをします:
 binutils               x86_64          2.21.53.0.1-6.fc16  updates         3.5 M
 hadoop-0.20            noarch          0.20.2+923.256-1    cloudera-cdh3   30 M
 patch                  x86_64          2.6.1-9.fc16        fedora          91 k
 pax                    x86_64          3.4-12.fc16         fedora          69 k
 perl-Class-ISA         noarch          0.36-1006.fc16      updates         8.2 k
 perl-Locale-Codes      noarch          3.21-1.fc16         updates         308 k
 redhat-lsb             x86_64          4.0-7.1.fc16        updates         25 k

トランザクションの要約
==================================================================================
インストール  1 パッケージ (+7 依存するパッケージ)

総ダウンロード容量: 34 M
インストール済み容量: 66 M
これでいいですか? [y/N]y

hadoop.tmp.dir, dfs.*.dirの準備

以下のスクリプトを実行して、/hadoopと/dataを作成する。
#!/bin/sh

sudo mkdir /hadoop
sudo chown hdfs:hadoop /hadoop
sudo chmod 777 /hadoop

sudo mkdir -p /data/dfs/name /data/dfs/data
sudo chown -R hdfs:hadoop /data/dfs/name /data/dfs/data
sudo chmod -R 700 /data/dfs/name/
sudo chmod -R 755 /data/dfs/data/

#mkdir -p /data/mapred/local
#chown -R mapred:hadoop /data/mapred/local/
#chmod 755 /data/mapred/local/

設定ファイル作成

SecondaryNameNodeを利用しないのであれば作成するファイルは以下の通り。
  • core-site.xml
  • hdfs-site.xml
  • slaves

CDHでは/etc/hadoop-0.20/confをコピーして設定ファイルを修正した後、alternativesコマンドで設定ファイルを登録する。
$ sudo cp /etc/hadoop-0.20/conf /etc/hadoop-0.20/conf.customized
$ sudo alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf /etc/hadoop-0.20/conf.customized 50

サンプルは以下の通り。
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>
        <value>/hadoop</value>
    </property>

    <property>
        <name>fs.default.name</name>
        <value>hdfs://HDFS_MASTER_HOST:54310</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.name.dir</name>
        <value>/data/dfs/name</value>
    </property>

    <property>
        <name>dfs.data.dir</name>
        <value>/data/dfs/data</value>
    </property>
</configuration>

slaves
slave1_fqdn_or_ip
slave2_fqdn_or_ip
slave3_fqdn_or_ip

hdfsユーザパスワード設定とファイルシステムフォーマット

hdfsユーザパスワード設定の後、HDFSのフォーマットを行う。
SOMEONE$ sudo passwd hdfs
SOMEONE$ su - hdfs
hdfs$ hadoop namenode -format

HDFSを複数ユーザで利用可能にする

namenode, datanodeサービス起動後、以下のコマンドを実行する。
SOMEONE$ su - hdfs
hdfs$ hadoop fs -mkdir /user
hdfs$ hadoop fs -chmod 777 /user


DataNode構築

以下の手順以外はNameNodeと同じ。
  1. yumによるバイナリのインストール

yumによるバイナリのインストール

$ sudo yum install hadoop-0.20-datanode.noarch
======================================================================================
 Package                アーキテクチャ   バージョン             リポジトリー    容量
======================================================================================
インストール中:
 hadoop-0.20-datanode   noarch           0.20.2+923.256-1       cloudera-cdh3   3.7 k
依存性関連でのインストールをします:
 binutils               x86_64           2.21.53.0.1-6.fc16     updates         3.5 M
 hadoop-0.20            noarch           0.20.2+923.256-1       cloudera-cdh3   30 M
 patch                  x86_64           2.6.1-9.fc16           fedora          91 k
 pax                    x86_64           3.4-12.fc16            fedora          69 k
 perl-Class-ISA         noarch           0.36-1006.fc16         updates         8.2 k
 perl-Locale-Codes      noarch           3.21-1.fc16            updates         308 k
 redhat-lsb             x86_64           4.0-7.1.fc16           updates         25 k

トランザクションの要約
======================================================================================
インストール  1 パッケージ (+7 依存するパッケージ)

総ダウンロード容量: 34 M
インストール済み容量: 66 M
これでいいですか? [y/N]y

HDFS動作確認

NameNode:WebUI
JOBTracker:WebUI


運用

under construction

トラブル対応

log4jのエラー出力

hadoopコマンド実行時に以下のlog4jのエラーが表示されるときの対処方法。
log4j:ERROR Could not find value for key log4j.appender.NullAppender
log4j:ERROR Could not instantiate appender named "NullAppender".

/etc/hadoop/conf/log4j.propertiesに以下の行を追記する。
#
# Null Appender
# Trap security logger on the hadoop client side
#
log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender


HBase

HBaseは2台のHBaseMaster、複数のHRegionServer及び複数のZooKeeper Serverから構成させる。これらは内部的にHDFSを利用するため、その上に環境を構築する。

以下のHBase設定ファイルはHBaseMaster, HRegionServer共通
  • /etc/hbase/conf/hbase-site.xml

HBaseの設定パラメタ:/etc/hbase/conf/hbase-site.xml
parameters description
hbase.rootdir HBaseのデータはHDFS上に保存される。このプロパティではHDFS(マスターの位置とディレクトリ)を指定する。
hbase.cluster.distributed 分散モードで使用する場合は必ずtureにする
hbase.zookeeper.quorum ZooKeeper Serverの位置を指定する。



ZooKeeper Server構築

手順は以下の通り。
  1. yumによるバイナリのインストール
  2. 設定ファイル作成(/etc/zookeeper/zoo.cfg, /var/zookeeper/myid)

yumによるバイナリのインストール

$ sudo yum install hadoop-zookeeper-server.noarch
=======================================================================================
 Package                    アーキテクチャ     バージョン      リポジトリー       容量
=======================================================================================
インストール中:
 hadoop-zookeeper-server    noarch             3.3.5+19.1-1    cloudera-cdh3     4.7 k

トランザクションの要約
=======================================================================================
インストール  1 パッケージ

総ダウンロード容量: 4.7 k
インストール済み容量: 4.5 k
これでいいですか? [y/N]y

設定ファイル作成(/etc/zookeeper/zoo.cfg, /var/zookeeper/myid)

ZooKeeper Serverの設定ファイルは以下の通り。
  • /etc/zookeeper/zoo.cfg
  • /var/zookeeper/myid

zoo.cfgでは全てのZooKeeper Serverを全て登録する。その際IDを以下のフォーマットで割り当てる。
server.id=HOST:port1:port2
該当するZooKeeper Serverではmyidとしてそのidを記述する。

/etc/zookeeper/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/var/zookeeper
# the port at which the clients will connect
clientPort=2181
server.0=ZK_HOST_0:2888:3888

/var/zookeeper/myid
0

HBaseMaster構築

手順は以下の通り。
  1. yumによるバイナリのインストール
  2. HBase設定ファイル作成(hbase-site.xml)
  3. regionserversの作成
  4. ZooKeeper Client設定ファイル作成(zoo.cfg)
  5. HDFS上のHBase用ディレクトリ作成

yumによるバイナリのインストール

$ sudo yum install hadoop-hbase-master.noarch
=================================================================================
 Package               アーキテクチャ    バージョン        リポジトリー     容量
=================================================================================
インストール中:
 hadoop-hbase-master   noarch            0.90.6+84.29-1    cloudera-cdh3   4.4 k
依存性関連でのインストールをします:
 hadoop-hbase          noarch            0.90.6+84.29-1    cloudera-cdh3    29 M
 hadoop-zookeeper      noarch            3.3.5+19.1-1      cloudera-cdh3   2.9 M

トランザクションの要約
=================================================================================
インストール  1 パッケージ (+2 依存するパッケージ)

総ダウンロード容量: 31 M
インストール済み容量: 41 M
これでいいですか? [y/N]y

設定ファイル作成(hbase-site.xml)

サンプルは以下の通り。

hbase-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
/**
 * Copyright 2010 The Apache Software Foundation
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->
<configuration>

  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://HDFS_MASTER_HOST:54310/hbase/<value>
  </property>

  <property>
    <name>hbase.cluster.distributed</name>
    <value>true<value>
  </property>

  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>ZK_HOST_0<value>
  </property>

</configuration>

regionserversの作成

Under construction

ZooKeeper Client設定ファイル作成(zoo.cfg)

zoo.cfgでは全てのZooKeeper Serverを全て登録する。その際IDを以下のフォーマットで割り当てる。
server.id=HOST:port1:port2
サンプルは以下の通り。

/etc/zookeeper/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/var/zookeeper
# the port at which the clients will connect
clientPort=2181
server.0=ZK_HOST_0:2888:3888

HDFS上のHBase用ディレクトリ作成

hbase-site.xmlにて以下の様な設定を行った場合は、HDFS上で"/hbase"を作成する。
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://HDFS_MASTER_HOST:54310/hbase/<value>
  </property>

SOMEONE$ su - hdfs
hdfs$ hadoop fs -mkdir /hbase
hdfs$ hadoop fs -chmod 777 /hbase

HRegionServer構築

以下の手順以外はHBaseMasterと同じ。
  1. yumによるバイナリのインストール
ただしHRegionServer構築では以下の作業は不要。
  • HDFS上のHBase用ディレクトリ作成

yumによるバイナリのインストール

$ sudo yum install hadoop-hbase-regionserver.noarch
====================================================================================
 Package                   アーキテクチャ  バージョン       リポジトリー      容量
====================================================================================
インストール中:
 hadoop-hbase-regionserver noarch          0.90.6+84.29-1   cloudera-cdh3    4.5 k
依存性関連でのインストールをします:
 hadoop-hbase              noarch          0.90.6+84.29-1   cloudera-cdh3     29 M
 hadoop-zookeeper          noarch          3.3.5+19.1-1     cloudera-cdh3    2.9 M

トランザクションの要約
====================================================================================
インストール  1 パッケージ (+2 依存するパッケージ)

総ダウンロード容量: 31 M
インストール済み容量: 41 M
これでいいですか? [y/N]y

HBase動作確認

HBaseMaster, HRegionServer, ZooKeeperが正常動作しているか確認するためには全てのホストで以下のコマンドが成功することを確認すること。

[yuji@slave3 ~]$ hbase shell
HBase [[Shell]]; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.90.6-cdh3u4, r, Mon May  7 13:14:00 PDT 2012

hbase(main):001:0> status
2 servers, 0 dead, 1.0000 average load

hbase(main):002:0>

HBaseMaster:WebUI

link


Offical系link

#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
Ganglia
ZooKeeper

Offical系日本語訳

あしたのオープンソース研究所
Apache Hadoop
Apache HBase
Apache Cassandra



タグ:

Hadoop HDFS HBase
最終更新:2012年06月15日 20:54