[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>
<value>1</value> </property> </configuration> conf/mapred-site.xml:
將 #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包的原因。