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 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
  • "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のインストール例を参照します.
    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であることに注意してください.