Hadoop 2.5.2+hbase1.0.0+zookeeper 3.4.6 集羣安裝配置

一、簡介

HDFS採用master/slave架構,一個HDFS集羣是由一個Namenode和一定數目的Datanodes組成。Namenode是一箇中心服務器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。集羣中的Datanode一般是一個節點一個,負責管理它所在節點上的存儲。HDFS暴露了文件系統的名字空間,用戶能夠以文件的形式在上面存儲數據。從內部看,一個文件其實被分成一個或多個數據塊,這些塊存儲在一組Datanode上。Namenode執行文件系統的名字空間操作,比如打開、關閉、重命名文件或目錄。它也負責確定數據塊到具體Datanode節點的映射。Datanode負責處理文件系統客戶端的讀寫請求。在Namenode的統一調度下進行數據塊的創建、刪除和複製。

HBase採用Master/Slave架構搭建集羣,它隸屬於Hadoop生態系統,由一下類型節點組成:HMaster節點、HRegionServer節點。一個HMaster和一定數目的HRegionServer組成

YARN總體上採用master/slave架構,其中Master被稱爲ResourceManager,Slave被稱爲NodeManager,ResourceManager負責對各個NodeManager上的資源進行統一管理和調度。當用戶提交一個應用程序時,需要提供一個用以跟蹤和管理這個程序的ApplicationMaster,它負責向ResourceManager申請資源,並要求NodeManger啓動可以佔用一定資源的Container。由於不同的ApplicationMaster被分佈到不同的節點上,並通過一定的隔離機制進行了資源隔離,因此它們之間不會相互影響。

二、Linux環境配置

1、集羣的說明

 集羣中包括3個節點:1個Master,2個Slave(本來是要使用3臺,我這邊只有兩個虛擬機 (Salve1和Master就放在一起))
   Master    192.168.2.200
   Salve1    192.168.2.200
   Salve2    192.168.2.201

這裏寫圖片描述

2、修改hosts

1)可以修改當前機器名稱
     192.168.2.200(Master)
     192.168.2.201(Salve2)

     # vi /etc/sysconfig/network

這裏寫圖片描述

     #service network restart 重啓網絡

2)、必須配置hosts文件(Master與Salve2都是一樣)
      #vi /etc/hosts

這裏寫圖片描述

3、配置JDK1.7

這裏寫圖片描述
不懂怎麼在Linux上配置JDK,可以查看Linux下配置JAVA環境

4、主機之間SSH無密碼驗證(這個比較重要)

Master作爲客戶端,要實現無密碼公鑰認證,連接到服務器Salve上時,需要在Master上生成一個密鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Salve上。當Master通過SSH鏈接到Salve上時,Salve會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數之後再用私鑰解密,並將解密數回傳給Salve,Salve確認解密數無誤之後就允許Master進行連接了。這就是一個公鑰認證過程,期間不需要手工輸入密碼,重要的過程是將Master上產生的公鑰複製到Salve上。

1)查看一下SSH是否有安裝

    # ssh -version

這裏寫圖片描述

2)基於空口令創建一個新的SSH密鑰,啓用無密碼登錄

 第一步:拷貝文件id_rsa.pub到192.168.2.200(Master)的root目錄下面
      #ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

這裏寫圖片描述

第二步:把id_rsa.pub追加到授權的key裏面去。
      [root@Master /]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 

這裏寫圖片描述

第三步:修改文件"authorized_keys"
      #chmod 600 ~/.ssh/authorized_keys

第四步:啓動服務(需要權限用戶)
      #service sshd restart
第五步:把公鑰複製所有的Slave機器上
      #scp -r ~/.ssh/authorized_keys [email protected]:~/.ssh/
第六步:測試一下是否需要密碼登陸
      #ssh Salve2

這裏寫圖片描述

5、關閉集羣中所有機器的防火牆

 在啓動前關閉集羣中所有機器的防火牆,不然會出現datanode開後又自動關閉。
 #service iptables stop

6、下載Hadoop 、hbase、Zookeeper 安裝包

  1)、下載Hadoop 2.5.2
     https://dist.apache.org/repos/dist/release/hadoop/common/
  2)、下載hbase1.0.3
     http://mirrors.hust.edu.cn/apache/hbase/
  3)、下載Zookeeper 3.4.6
     http://mirrors.hust.edu.cn/apache/zookeeper/
 並把下載好的安裝包上傳到Linux的/usr/local/hadoop

這裏寫圖片描述

三、Zookeeper 集羣配置

1、tar -zxvf zookeeper-3.4.6.tar.gz
2、配置zoo.cfg

    #cd /usr/local/hadoop/zookeeper-3.4.6/conf/
    #cp zoo_sample.cfg zoo.cfg

第一步: #vi zoo.cfg
      dataDir=/usr/local/hadoop/zookeeper-3.4.6/zkData
      server.1=Salve1:2888:3888
      server.2=Salve2:2888:3888
第二步:創建myid(Master 對myid寫入編號1 、Salve2對myid寫入編號2 )
      #mkdir /usr/local/hadoop/zookeeper-3.4.6/zkData
      #touch /usr/local/hadoop/zookeeper-3.4.6/zkData/myid
      //Master 對myid寫入編號1
      #echo 1 > /usr/local/hadoop/zookeeper-3.4.6/zkData/myid
第三步:將配置好的zookeeper拷貝到其他節點對應的相同的目錄
      #scp -r /usr/local/hadoop/zookeeper-3.4.6/   Salve2:/usr/local/hadoop/zookeeper-3.4.6/
第四步:Salve2 對myid寫入編號2
      #echo 2 > /usr/local/hadoop/zookeeper-3.4.6/zkData/myid

   在部署zookeeper的節點上的/usr/local/hadoop/zookeeper-3.4.6/zkData/的目錄下新建一個myid文件裏寫上zoo.cfg文件對應的server號碼,Salve1寫1,Salve2寫2 。

四、hadoop 集羣配置

1、tar -zxvf hadoop-2.5.2.tar.gz

2、修改Master、Salve2 /etc/profile 默認設置hadoop path

  #vi /etc/profile
       //在末尾添加
       # set hadoop path
       export HADOOP_HOME=/usr/local/hadoop/hadoop-2.5.2
       export PATH=$PATH :$HADOOP_HOME/bin 
     重啓"/etc/profile"
     # source /etc/profile

3、hadoop配置

  1) 配置 hadoop-env.sh文件 java環境
       export JAVA_HOME=/usr/java/jdk1.7.0_80
   2) 配置core-site.xml文件
 <configuration>
   <property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop/tmp</value>
   </property>
   <property>
     <name>fs.defaultFS</name>
     <value>hdfs://Master:9000</value>
  </property>
</configuration>
3) 配置mapred-site.xml文件
   <configuration>
     <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
     </property>
     <property>
        <name>mapreduce.jobhistory.adress</name>
        <value>Master:10020</value>
     </property>
    <property>                  <name>mapreduce.jobhistory.webapp.adress</name>
        <value>Master:19888</value>
     </property>
</configuration>
4)配置hdfs-site.xml文件
    <configuration>
     <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/data/hdfs/namenode</value>
     </property>
     <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/data/hdfs/datanode</value>
    </property>
    <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value>Master:50090</value>
   </property>
   <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
  <property>
       <name>dfs.replication</name>
       <value>2</value>
    </property>
  <property>
     <name>dfs.webhdfs.enabled</name>
     <value>true</value>
   </property>
</configuration>
   這裏的dfs.replication用來設置每份數據塊的副本數目,默認是3,因爲我們是在單機上配置的分佈模式,因此設爲2。dfs.name.dir和dfs.data.dir非常重要,用來設置存放hdfs中namenode和datanode數據的本地存放位置。這裏如果設置不好,後續會出現多個錯誤。當然你也可以不設置採用默認的/tmp下的目錄,但是同樣重啓會丟失數據。

5)配置yarn-site.xml文件
<configuration>
  <property>
     <name>yarn.resourcemanager.scheduler.address</name>
     <value>Master:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>Master:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>Master:8088</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>Master:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>Master:8033</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
     <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
7)配置slaves文件
     Salve1
     Salve2

然後拷貝一份到Salve2

五、hbase集羣配置

1、tar -zxvf hbase-1.0.3-bin.tar.gz

2、修改Master、Salve2 /etc/profile 默認設置hbase path

   #vi /etc/profile
      //在末尾添加
      # set hbase path
      export HBASE_HOME=/usr/local/hadoop/hbase-1.0.3
      export PATH= $PATH:$HBASE_HOME/bin 
  重啓 /etc/profile 
  # source /etc/profile

3、hbase配置

#cd hbase-1.0.3/conf/
 1)配置hbase-env.sh
     export JAVA_HOME=/usr/java/jdk1.7.0_80
     export HBASE_MANAGES_ZK=false
    HBASE_MANAGES_ZK=false,表示啓動的是獨立的zookeeper。而配置成true則是hbase自帶的zookeeper。

2)配置hbase-site.xml
    # vi hbase-site.xml
<configuration>
<property>
         <name>hbase.rootdir</name>
         <value>hdfs://Master:9000/hbase</value>
    </property>
    <property>
         <name>hbase.cluster.distributed</name>
        <value>true</value>
   </property>
   <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/usr/local/hadoop/zookeeper-3.4.6/zkData</value>
  </property>
   <property>
       <name>hbase.zookeeper.quorum</name>
       <value>Master,Salve2</value>
   </property>
</configuration>
說明:
   hbase.cluster.distributed指定了Hbase的運行模式。false是單機模式,true是分佈式模式。
   hbase.zookeeper.quorum是Zookeeper集羣的地址列表,用逗號分割。

3)配置 regionservers

    Salve1
    Salve2

同樣把hbase拷貝一份到Salve2

六、Hadoop 、hbase、Zookeeper集羣啓動

1、啓動 ZooKeeper 集羣 (分別在Master、Salve2上啓動zk)

    ZooKeeper 安裝在Master、Savle2機子上,在Master、Savle2機子上執行啓動命令。
     # cd /usr/local/hadoop/zookeeper-3.4.6/
第一步:在Master、Savle2啓動ZooKeeper 
      #./bin/zkServer.sh start

這裏寫圖片描述

第二步:可以查看ZooKeeper 狀態
     啓動完成後可以看zookeeper是leader、follower
     #./bin/zkServer.sh status

這裏寫圖片描述
這裏寫圖片描述

    如果./bin/zkServer.sh status爲失敗,

這裏寫圖片描述
可以通過命令查看錯誤的信息:#tailf zookeeper.out

2、 啓動 hadoop 集羣 (Master)

  第一步:第一次,格式化namenode
        #hadoop namenode -format 
  第二步:啓動所有服務
        #./sbin/start-all.sh

3、 啓動 hbase集羣 (Master)

   #./bin/start-hbase.sh        

4、jps查看進程

這裏寫圖片描述

這裏寫圖片描述

5、hbase shell
這裏寫圖片描述

6、其他說明

1)、有的在Master上啓動namenode,Master2上在啓動另外namenode。
    #hadoop-daemon.sh start namenode(啓動namenode)
    #hadoop-daemons.sh start datanode(啓動datanode)
    #hadoop-daemon.sh start journalnode(在節點上都啓動)
    journalnode
     https://my.oschina.net/u/189445/blog/661561

這裏寫圖片描述

2)、啓動備份hbase的 HMaster
      #hbase-daemon.sh start master

大數據剛入門不久,有什麼不對的地方,可以指出來,相互學習,相互成長。

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