雲計算環境搭建: hadoop-1.1.2 + zookeeper-3.4.5 + hbase-0.94.7

看了長時間的原理和機制,終於有了兩天閒工夫,系統的實施一下環境搭建。綜合參考官網文檔以及其他版本安裝的腳步,寫下來,加深一下自己的理解與記憶。


清口水果:
1. 安裝JDK,配置環境變量,javac驗證;
2. 確定實驗需要使用的用戶,瞭解用戶角色及權限範圍;(貌似除了ubuntu自動關閉防火牆外,其他linux需要弄一下)
3. 確定機器ip,改寫/etc/hosts使能夠解析地址;
4. 安裝ssh,三臺機器互相全部建立互信;


正餐:


hadoop1.1.2
1. 解壓到~;
2. 改寫運行文件以及配置文件;(hadoop-env.sh, core-site.xml[hadoop.tmp.dir], hdfs-site.xml, mapred-site.xml, master, slaves)
3. 確保無誤後,scp到另外兩臺機器;
4. ./bin/hadoop namenode -format
5. 針對配置文件中的data和name的位置建立對應文件夾,一般放在hadoop root下面就可以
6. ./start-all.sh
7. jps + hdfs://master:50030[50070]
8. 運行example —— ./hadoop jar hadoop-examples-jar.jar WordCount input output


zookeeper
1. 下載解壓到~;
2. 修改配置文件mv zoo-default.cfg zoo.cfg

a. dataDir----the location to store the in-memory database snapshots and, unless specified otherwise, the transaction log of updates to the database.
b. 
clientPort=2181
server.1=hadoop01:2888:3888// 前面的數字1是用myid尋找或者尋找myid的依據,hadoop01是ip或地址,2888是servers之間連接的端口,3888是選舉端口。
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
c. tickTime 用來指定心跳間隔,一次會話就包括來回兩個心跳時間間隔;
d. clientPort  給客戶端連接的端口
e. initLimit 指其他幾個servers連接到leader的時間閾值;
f. syncLimit 不會翻譯
(注:以上兩個limit本人查過有各種說法。。。實踐是檢驗真理的唯一標準,後面用到的話再補上)


3. 在dataDir指定的目錄中建立文件myid,內容對應當前節點server後面的數字——1,2,3
4. scp到另外兩臺
5. ./zkServer.sh start(每臺都要啓動)
6. ./zkServer.sh status —— leader(根據), follwer, observer(無權選舉)
7. ./zkCli.sh -server will-vm1:2181 客戶端連接server


hbase
1. 解壓~:
2. 修改配置文件hbase-site.xml(可以從src/main/resource/hbase-default.xml進行copy改寫),
hbase-env.sh;
export JAVA_HOME=/usr/java/jdk
export HBASE_CLASSPATH=/usr/local/hadoop-1.0.4/conf
export HBASE_MANAGES_ZK=false
export HBASE_HEAPSIZE=2048
export HBASE_MANAGES_ZK=false  //配置實現hbase啓動的時候不使用自帶的zookeeper



hbase-site.xml:
<configuration>
<property>
  <name>hbase.rootdir</name>
  <value>will-vm1:9000/hbase</value>
  <description>
  hbase所使用的文件系統爲HDFS,根目錄爲hdfs://node0:9000/hbase,該目錄應該由HBase自動創建,只需要指定到正確的HDFS NameNode上即可
  </description>
</property>
<property>
  <name>hbase.hregion.max.filesize</name>
  <value>1073741824</value>
  <description>
  設置HStoreFile的閾值。若某個列族的HStoreFile增長達到這個值,這個Hegion會被切割成兩個。默認: 10G.
  </description>
</property>
<property>
  <name>hbase.hregion.memstore.flush.size</name>
  <value>134217728</value>
  <description>
  設置memstore的閾值,當大於這個值時,寫入磁盤
  </description>
</property>
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
  <description>
  指定hbase是否爲分佈式模式
</description>
</property>
<property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
    <description>
    zookeeper的端口號
    </description>
</property>
<property>
  <name>zookeeper.session.timeout</name>
  <value>120000</value>
<description>
    RegionServer與Zookeeper間的連接超時時間。當超時時間到後,ReigonServer會被Zookeeper從RS集羣清單中移除,HMaster收到移除通知後,會對這臺server負責的regions重新balance,讓其他存活的RegionServer接管.
    </description>
</property>
<property>
  <name>hbase.zookeeper.property.tickTime</name>
  <value>6000</value>
<description>
  發送心跳時間間隔,單位毫秒
</description>
</property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop01,hadoop02,hadoop03</value>
    <description>
    列出zookeeper羣
    Comma separated list of servers in the ZooKeeper Quorum.
    For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
    By default this is set to localhost for local and pseudo-distributed modes
    of operation. For a fully-distributed setup, this should be set to a full
    list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
    this is the list of servers which we will start/stop ZooKeeper on.
    </description>
</property>
<property>
      <name>hbase.tmp.dir</name>
      <value>/hadoop/hbase</value>
       <description>
      本地文件系統的臨時文件夾。可以修改到一個更爲持久的目錄上。(/tmp會在重啓時清楚)
      默認:${java.io.tmpdir}/hbase-${user.name}
      </description>
  </property>
</configuration>
3. 將除master之外的機器寫進conf/regionserver,就像寫slaves一樣
4. scp到其他節點
5. 在啓動hadoop和zookeeper的之後,啓動hbase,./bin/start-hbase.sh
6.
will@will-vm1:~$ jps
17186 HMaster
15105 SecondaryNameNode
15358 QuorumPeerMain
14867 NameNode
15189 JobTracker
17896 Jps


will@will-vm2:~$ jps
7512 QuorumPeerMain
8525 HRegionServer
9064 Jps
7204 DataNode
7401 TaskTracker


will@will-vm3:~$ jps
7512 QuorumPeerMain
8525 HRegionServer
9064 Jps
7204 DataNode
7401 TaskTracker
7. ./hbase shell進行數據庫管理操作
8. http://will-vm1:60010/master-status
  http://will-vm1:60030


甜點
1. Exception:not attempt to authenticate using SASL —— zookeeper沒有啓動或者連接有問題
2. zookeeper中的observer沒有選舉權,永遠不會成爲leader,只接受讀請求,將寫請求轉發給leader,配置爲server.4=will-vm4:2888:3888:observer.
3. zooKeeper 需要在所有的服務(可以理解爲服務器)中選舉出一個 Leader ,然後讓這個 Leader 來負責管理集羣。此時,集羣中的其它服務器則成爲此 Leader 的 Follower 。並且,當 Leader 故障的時候,需要 ZooKeeper 能夠快速地在 Follower 中選舉出下一個 Leader 。
此操作實現的核心思想是:首先創建一個 EPHEMERAL 目錄節點,例如“ /election ”。然後。每一個 ZooKeeper 服務器在此目錄下創建一個 SEQUENCE| EPHEMERAL 類型的節點,例如“ /election/n_ ”。在 SEQUENCE 標誌下, ZooKeeper 將自動地爲每一個 ZooKeeper 服務器分配一個比前一個分配的序號要大的序號。此時創建節點的 ZooKeeper 服務器中擁有最小序號編號的服務器將成爲 Leader。
參見:http://blog.csdn.net/shenlan211314/article/details/6187040
4.  Exception:Error contacting service. It is probably not running. 這裏是只有一個zookeeper在運行的時候會這樣,有兩個以後就不會了。。原因暫時不清楚,可能是因爲需要協同的原因吧。有人說是nc版本問題,個人感覺好像不是很相關。
5. JDWP多數在啓動文件XX.sh或者配置文件的某property中,但是後綴總是POTS


明日菜單:
1. zookeeper客戶端的使用以及意義 http://www.cnblogs.com/ggjucheng/p/3376548.html
2. hive
3. 集羣應用
4. zookeeper選舉
5. dns服務器bind部署

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章