1. 程式人生 > >[Hadoop]Hadoop+HBase 偽分散式安裝配置

[Hadoop]Hadoop+HBase 偽分散式安裝配置

(一)hadoop偽分散式的配置:

       這個也可以參考《hadoop權威指南》上面寫的很全面,這裡再說一遍:

  我的機器配置環境:

       OS:Ubuntu10.10  ,hadoop版本:hadoop-0.20.2(下載網址: http://apache.etoak.com//hadoop/common/hadoop-0.20.2/  )

       (1)安裝jdk,請參考我之前的文章:http://www.cnblogs.com/Dreama/articles/2097630.html

  (2)安裝配置SSH,使其可以自動登入:

       $ sudo apt-get install ssh

       $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
       $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

       $ ssh localhost   //驗證是否配置成功,不用輸密碼即可登入。

        (3)將hadoop-0.20.2包解壓在主目錄下(可以用命令$ tar -zxvf hadoop-0.20.2.tar.gz),然後配置hadoop-0.20.2目錄下conf目錄下的四個檔案:

  conf/core-site.xml:
        <configuration>

               <property>
                  <name>fs.default.name</name>
                  <value>hdfs://localhost:8020</value>
              </property>
        </configuration>


      conf/hdfs-site.xml:
      <configuration>
             <property>
                  <name>dfs.replication</name>


                  <value>1</value>
             </property>
      </configuration>
     

     conf/mapred-site.xml:
     <configuration>
          <property>
               <name>mapred.job.tracker</name>
               <value>localhost:8021</value>
         </property>
     </configuration>


     conf/hadoop-env.sh:   

     將  #export JAVA_HOME=/usr/lib/jvm/java-6-sun   改為  export JAVA_HOME=***/***(自己的JAVA_HOME的主目錄)

     通過以上步驟hadoop即安裝配置完成,進入hadoop-0.20.2主目錄的bin目錄下

     $./hadoop namenode -format    //格式化hadoopnamenode,很多時候namenode啟動不起來可以試試格式化一下,會好使。

     $./start-all.sh     //啟動hadoop的各個監護程序

     可以通過http://localhost:50070   和http://localhost:50030 檢視namenode和jobtracker。

     $./stop-all.sh    //關閉hadoop的各個監護程序

(二)安裝配置Hbase:

      詳細也可以參考《實戰Hadoop》,裡面也有詳細的介紹。

      我用的版本是Hbase-0.90.3,下載網址:http://apache.etoak.com//hbase/hbase-0.90.3/      將Hbase-90.3解壓到系統主目錄下,偽分散式的配置如下:

      (1)編輯{HBASE_HOME}/conf/hbase-env.sh 檔案,設定JAVA_HOME和HBASE_CLASSPATH變數

        export JAVA_HOME=/usr/lib/jvm/java-6-sun (自己的JAVA_HOME主目錄)

        export HBASE_CLASSPATH=/home/daisy/hadoop-0.20.2/conf   (自己的HADOOP_HOME主目錄)

       (2)編輯{HBASE_HOME}/conf/hbase-site.xml 檔案,增加以下內容

<property>

    <name>hbase.rootdir</name>

    <value>hdfs://localhost:8020/hbase</value>   

</property>

<property>

    <name>hbase.cluster.distributed</name>

    <value>true</value>

</property>

      注:以上表格中標紅色的路徑一定要跟hadoop中core-site.xml中fs.default.name中的路徑相同,否則會出錯。

      (3)替換Hbase中的jar包

      需要用{HADOOP_HOME}下的hadoop-0.20.2-core.jar 替換掉{HBASE_HOME}/lib目錄下的hadoop-core-0.20-append-r1056497.jar 。如果不替換jar檔案Hbase啟動時會因為hadoop和Hbase的客戶端協議不一致而導致HMaster啟動異常。報錯如下:

localhost: Exception in thread "main" org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42, server = 41)

      所以如果遇到以上錯誤,就通過替換jar包解決。

      完成以上操作,就可以正常啟動Hbase了,啟動順序:先啟動Hadoop——>再啟動Hbase,關閉順序:先關閉Hbase——>再關閉Hadoop。

      啟動Hbase的命令,進入到hbase安裝主目錄的bin目錄下

      $ ./start-hbase.sh    //啟動hbase

      $ ./hbase shell        //進入shell模式

      $ ./stop-all.sh          //停止hbase

       如果在操作Hbase的過程中發生錯誤,可以通過hbase安裝主目錄下的logs子目錄檢視錯誤原因。

注意:

  (1)hbase的執行需要用到zookeeper,而hbase-0.90.3自帶了zookeeper,所以可以使用hbase自帶的zookeeper,在conf/hbase-env.sh 檔案中  export HBASE_MANAGES_ZK=true  ,true表示使用hbase自帶的zookeeper,如果不想使用其自帶的zookeeper,自己下載包安裝的化,該項設定為false。 當然如果自己安裝zookeeper,啟動及關閉先後順序為:啟動Hadoop—>啟動ZooKeeper叢集—>啟動HBase—>停止HBase—>停止ZooKeeper叢集—>停止Hadoop。

  (2) hbase啟動時報錯:localhost: Exception in thread "main" org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42, server = 41)  ,原因就是上面hbase安裝第三步中提到的沒有替換jar包的原因。