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が管理するデータ(fsimageやedits)を格納するディレクトリ |
dfs.data.dir |
DataNodeが管理するブロックなどを格納するディレクトリ |
dfs.replication |
目標のレプリケーション数。HDFSはこのレプリケーション数を維持しようとする |
dfs.replication.min |
セーフモードから離脱するための最小レプリケーション数。HDFSの書き込みは、最小レプリケーション数までブロックが書き込まれた時点で成功となる。HDFSは起動時に全てのブロック内dfs.safemode.thresholdで示される割合のブロックが最小レプリケーション数に達した時点でSafeモードから離脱可能となる |
dfs.safemode.threshold.pct |
HDFSがSafeモードから離脱するめに必要な全ブロックに対するレプリケーション数の割合 |
MasterNode構築
手順は以下の通り。
- yumによるバイナリのインストール
- hadoop.tmp.dir, dfs.*.dirの準備
- 設定ファイル作成
- 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と同じ。
- 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構築
手順は以下の通り。
- yumによるバイナリのインストール
- 設定ファイル作成(/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構築
手順は以下の通り。
- yumによるバイナリのインストール
- HBase設定ファイル作成(hbase-site.xml)
- regionserversの作成
- ZooKeeper Client設定ファイル作成(zoo.cfg)
- 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と同じ。
- yumによるバイナリのインストール
ただしHRegionServer構築では以下の作業は不要。
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
最終更新:2012年06月15日 20:54