hadoopクラスタ構築の3(Hbase、zookeeperインストール)
8573 ワード
最初の2つのステップはHadoopクラスタの構築を実現したが,データの格納にはデータベースが必要である.一般的に小規模なウェブサイトでは、MySQLを使用します.WEBアプリケーションではMySQLが最高のRDBMS(Relational Database Management System、リレーショナル・データベース管理システム)アプリケーションの一つです.しかし、MySQLは大規模な同時性能を処理する上ではるかにだめだ.ここではoracleとHbaseを使用し、大量の統計ビジネスではOracleを使用し、データ・マイニング・検索エンジンではHbaseを使用することを考慮します.ここでは主にデータマイニング、機械学習の研究をしているので、Hbaseを使っています.
HBAseは、分散型でカラム向けのオープンソースデータベースです.この技術はFay Changが書いたGoogle論文「Bigtable:構造化データの分散型ストレージシステム.BigtableがGoogleファイルシステム(File System)を利用しているように」に由来している.提供される分散型データストレージと同様に、HBAseはHadoopの上にBigtableのような能力を提供します.HBAseはApacheのHadoopプロジェクトのサブプロジェクトです.HBAseは一般的なリレーショナル・データベースとは異なり、非構造化データ・ストレージに適したデータベースです.もう一つの違いは、HBAseが行に基づくモードではなく列に基づくモードである.
Hbaseはbigtableのオープンソースパクリバージョンです.確立されたhdfsの上に、高信頼性、高性能、カラムストレージ、伸縮性、リアルタイム読み書きを提供するデータベースシステムです.nosqlとRDBMSの間にあり、プライマリ・キーとプライマリ・キーのrangeのみでデータを取得でき、シングル・ロー・トランザクションのみをサポートします(hiveサポートによりマルチテーブルjoinなどの複雑な操作を実現できます).主に非構造化および半構造化の分散データを格納するために使用される.hadoopと同様に、Hbaseの目標は主に横方向の拡張に依存し、安価なビジネスサーバを絶えず増加させることで、コンピューティングとストレージ能力を増加させる.
HBAseのテーブルには、一般的に次のような特徴があります.
1大:1つの時計には億行、百万列があります.
2カラム向け:カラム(ファミリー)向けのストレージと権限制御、カラム(ファミリー)独立取得.
3疎:空(null)のカラムでは、ストレージスペースが消費されないため、テーブルは非常に疎に設計できます.
インストールリファレンス:http://hbase.apache.org/book.html#architecture
インストール前にHbaseがサポートするJAVAバージョンに注意してください.
HBase Version
JDK 6
JDK 7
JDK 8
1.0
Not Supported
yes
Running with JDK 8 will work but is not well tested.
0.98
yes
yes
Running with JDK 8 works but is not well tested. Building with JDK 8 would require removal of thedeprecated
0.96
yes
yes
N/A
0.94
yes
yes
N/A
hadoopがサポートする場合:
Hadoop version support matrix "S"= supported "X"= not supported "NT"= Not tested
HBase-0.92.x
HBase-0.94.x
HBase-0.96.x
HBase-0.98.x (Support for Hadoop 1.1+ is deprecated.)
HBase-1.0.x (Hadoop 1.x is NOT supported)
Hadoop-0.20.205
S
X
X
X
X
Hadoop-0.22.x
S
X
X
X
X
Hadoop-1.0.x
X
X
X
X
X
Hadoop-1.1.x
NT
S
S
NT
X
Hadoop-0.23.x
X
S
NT
X
X
Hadoop-2.0.x-alpha
X
NT
X
X
X
Hadoop-2.1.0-beta
X
NT
S
X
X
Hadoop-2.2.0
X
NT
S
S
NT
Hadoop-2.3.x
X
NT
S
S
NT
Hadoop-2.4.x
X
NT
S
S
S
Hadoop-2.5.x
X
NT
S
S
S
ここでは単独のzookeeperを使います.クラスタの構成は次のとおりです.
ホスト名IPアドレス用途
master.hadoop 192.168.0.1 HMster、zookeeper
slave1.hadoop 192.168.0.2 regionserver、zookeeper
slave2.hadoop 192.168.0.3 regionserver、zookeeper
slave3.hadoop 192.168.0.4 regionserver、zookeeper
ここではまずzookeeperをインストールします.zookeeperのダウンロードアドレスは以下の通りです.
http://www.apache.org/dyn/closer.cgi/zookeeper/
インストールパッケージを解凍し、zookeeperを/usr/localにコピーします.まず環境変数を変更し、Hadoopのインストール例を参照します.
次にzookeeperのプロファイルを変更します.
もう一度hadoop上のzookeeperディレクトリはslave 1に同期する.hadoop、slave2.hadoop、slave3.hadoop.
同様にzookeeperを配備するノードに/home/hadoop/hadoopdata/zookeeper/zookeeper-dataディレクトリを作成し、ここにmyidファイルを新規作成してzooを書き込む.cfgファイルに対応するserver番号、例えばmaster.hadoopは1を書きますslave 1.hadoopは2を書き、順番に類推し、プロファイルに書いただけ書きます.
次はzookeeperを起動する準備をします.(hadoopが起動した場合、クラスタ内の各ノードのファイアウォールが閉じていることを確認します)
zookeeperノードを配置する各マシンで次のコマンドを実行します.
各ノードで次のコマンドを実行し、ノードがその役割であることを確認します.
zookeeperを停止するには、各ノードで次のコマンドを実行します.
Hbaseインストールパッケージのダウンロードアドレスは以下の通りです.ここではstableバージョンのインストールパッケージをダウンロードすることをお勧めします.今回インストールする場合Hbase 1.0
http://www.apache.org/dyn/closer.cgi/hbase/
ファイルhbase-1.0.0-binをmasterで解凍する.tar.gz、ディレクトリconfに入り、ファイルhbase-envを編集します.sh、次の内容を追加します.
ここで注意しなければならないのは最後のパラメータで、Hbaseを起動するたびにslaveが起きていないことに気づき、ログを見てみると、このノードのクロックはmasterノードのクロックと比較して大きく異なり、しきい値を超えていることが分かったので、ここでこのパラメータを設定してこのしきい値を大きくします.実は他のクラスタの同期時間の方法を試してみることもできますが、ここでは無鉄砲な方法を使っています~~~~
次に/etc/profieファイルを変更します
これでメインノードの構成がすべて完了し、構成したhbaseファイルをscpで各slaveの/usr/local/ディレクトリにコピーし、環境変数を変更すればよい.次に、プライマリノードでHbaseを起動し、次のコマンドを使用します.
Hbaseを起動すると、プライマリノード端末にjpsを入力すると、次の現象が表示されます.
HBAseは、分散型でカラム向けのオープンソースデータベースです.この技術はFay Changが書いたGoogle論文「Bigtable:構造化データの分散型ストレージシステム.BigtableがGoogleファイルシステム(File System)を利用しているように」に由来している.提供される分散型データストレージと同様に、HBAseはHadoopの上にBigtableのような能力を提供します.HBAseはApacheのHadoopプロジェクトのサブプロジェクトです.HBAseは一般的なリレーショナル・データベースとは異なり、非構造化データ・ストレージに適したデータベースです.もう一つの違いは、HBAseが行に基づくモードではなく列に基づくモードである.
Hbaseはbigtableのオープンソースパクリバージョンです.確立されたhdfsの上に、高信頼性、高性能、カラムストレージ、伸縮性、リアルタイム読み書きを提供するデータベースシステムです.nosqlとRDBMSの間にあり、プライマリ・キーとプライマリ・キーのrangeのみでデータを取得でき、シングル・ロー・トランザクションのみをサポートします(hiveサポートによりマルチテーブルjoinなどの複雑な操作を実現できます).主に非構造化および半構造化の分散データを格納するために使用される.hadoopと同様に、Hbaseの目標は主に横方向の拡張に依存し、安価なビジネスサーバを絶えず増加させることで、コンピューティングとストレージ能力を増加させる.
HBAseのテーブルには、一般的に次のような特徴があります.
1大:1つの時計には億行、百万列があります.
2カラム向け:カラム(ファミリー)向けのストレージと権限制御、カラム(ファミリー)独立取得.
3疎:空(null)のカラムでは、ストレージスペースが消費されないため、テーブルは非常に疎に設計できます.
インストールリファレンス:http://hbase.apache.org/book.html#architecture
インストール前にHbaseがサポートするJAVAバージョンに注意してください.
HBase Version
JDK 6
JDK 7
JDK 8
1.0
Not Supported
yes
Running with JDK 8 will work but is not well tested.
0.98
yes
yes
Running with JDK 8 works but is not well tested. Building with JDK 8 would require removal of thedeprecated
remove()
method of the PoolMap
class and is under consideration. SeeHBASE-7608 for more information about JDK 8support. 0.96
yes
yes
N/A
0.94
yes
yes
N/A
hadoopがサポートする場合:
Hadoop version support matrix
HBase-0.92.x
HBase-0.94.x
HBase-0.96.x
HBase-0.98.x (Support for Hadoop 1.1+ is deprecated.)
HBase-1.0.x (Hadoop 1.x is NOT supported)
Hadoop-0.20.205
S
X
X
X
X
Hadoop-0.22.x
S
X
X
X
X
Hadoop-1.0.x
X
X
X
X
X
Hadoop-1.1.x
NT
S
S
NT
X
Hadoop-0.23.x
X
S
NT
X
X
Hadoop-2.0.x-alpha
X
NT
X
X
X
Hadoop-2.1.0-beta
X
NT
S
X
X
Hadoop-2.2.0
X
NT
S
S
NT
Hadoop-2.3.x
X
NT
S
S
NT
Hadoop-2.4.x
X
NT
S
S
S
Hadoop-2.5.x
X
NT
S
S
S
ここでは単独のzookeeperを使います.クラスタの構成は次のとおりです.
ホスト名IPアドレス用途
master.hadoop 192.168.0.1 HMster、zookeeper
slave1.hadoop 192.168.0.2 regionserver、zookeeper
slave2.hadoop 192.168.0.3 regionserver、zookeeper
slave3.hadoop 192.168.0.4 regionserver、zookeeper
ここではまずzookeeperをインストールします.zookeeperのダウンロードアドレスは以下の通りです.
http://www.apache.org/dyn/closer.cgi/zookeeper/
インストールパッケージを解凍し、zookeeperを/usr/localにコピーします.まず環境変数を変更し、Hadoopのインストール例を参照します.
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin
次にzookeeperのプロファイルを変更します.
cd zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim 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=/home/hadoop/hadoopdata/zookeeper/zookeeper-data
# the port at which the clients will connect
clientPort=2222
server.1=master.hadoop:2888:3888
server.2=slave1.hadoop:2888:3888
server.3=slave2.hadoop:2888:3888
server.4=slave3.hadoop:2888:2888
zookeeper-dataフォルダを作成します.mkdir /home/hadoop/hadoopdata/zookeeper/zookeeper-data
もう一度hadoop上のzookeeperディレクトリはslave 1に同期する.hadoop、slave2.hadoop、slave3.hadoop.
同様にzookeeperを配備するノードに/home/hadoop/hadoopdata/zookeeper/zookeeper-dataディレクトリを作成し、ここにmyidファイルを新規作成してzooを書き込む.cfgファイルに対応するserver番号、例えばmaster.hadoopは1を書きますslave 1.hadoopは2を書き、順番に類推し、プロファイルに書いただけ書きます.
次はzookeeperを起動する準備をします.(hadoopが起動した場合、クラスタ内の各ノードのファイアウォールが閉じていることを確認します)
zookeeperノードを配置する各マシンで次のコマンドを実行します.
zkServer.sh start
各ノードで次のコマンドを実行し、ノードがその役割であることを確認します.
zkServer.sh status
zookeeperを停止するには、各ノードで次のコマンドを実行します.
zkServer.sh stop
Hbaseインストールパッケージのダウンロードアドレスは以下の通りです.ここではstableバージョンのインストールパッケージをダウンロードすることをお勧めします.今回インストールする場合Hbase 1.0
http://www.apache.org/dyn/closer.cgi/hbase/
ファイルhbase-1.0.0-binをmasterで解凍する.tar.gz、ディレクトリconfに入り、ファイルhbase-envを編集します.sh、次の内容を追加します.
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/usr/local/jdk1.7.0_21/
# Extra Java CLASSPATH elements. Optional.
export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop
ファイルhbase-siteを再編集します.xml、次の内容を追加します.ここで注意しなければならないのはhbaseです.rootdirのポート番号は必ずhadoopのプロファイルcore-siteとします.xmlのfs.default.nameのポート番号は一致しています.<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master.hadoop:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master.hadoop,slave1.hadoop,slave2.hadoop,slave3.hadoop</value>
</property>
<property>
<name>hbase.zookeeper.sission.timeout</name>
<value>60000</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2222</value>
</property>
<property>
<name>hbase.master</name>
<value>master.hadoop:60000</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value>60030</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>6000000000</value>
</property>
</configuration>
ここで注意しなければならないのは最後のパラメータで、Hbaseを起動するたびにslaveが起きていないことに気づき、ログを見てみると、このノードのクロックはmasterノードのクロックと比較して大きく異なり、しきい値を超えていることが分かったので、ここでこのパラメータを設定してこのしきい値を大きくします.実は他のクラスタの同期時間の方法を試してみることもできますが、ここでは無鉄砲な方法を使っています~~~~
次に/etc/profieファイルを変更します
export HADOOP_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin
これでメインノードの構成がすべて完了し、構成したhbaseファイルをscpで各slaveの/usr/local/ディレクトリにコピーし、環境変数を変更すればよい.次に、プライマリノードでHbaseを起動し、次のコマンドを使用します.
start-hbase.sh
ここで注意しなければならない点は、Hbaseを起動する前にHadoopが必ず起動していることを確認し、閉じるときはHbaseを閉じてからHadoopを閉じます.Hbaseを起動すると、プライマリノード端末にjpsを入力すると、次の現象が表示されます.
15279 ResourceManager
24690 SecondaryNameNode
20497 QuorumPeerMain
14948 NameNode
20587 HMaster
20914 Jps
slaveノードの情報は次のとおりです.14844 QuorumPeerMain
14949 Jps
20587 HRegionServer
13927 NodeManager1
3801 DataNode
至此Hbase的安装完成。主节点上键入下面命令进入Hbase的shell:
hbase shell
hbase(main):001:0>
Hbaseを閉じるには、次のコマンドを使用します.stop-hbase.sh
これでhadoop、zookeeper、Hbaseのインストールが完了し、起動時の順番はhadoop->zookeeper->hbase、閉じる時はhbase->zookeeper->hadoopであることに注意してください.