Hadoop集羣大數據平臺搭建

1、Hadoop集羣環境搭建配置

一、前言

Hadoop的搭建分爲三種形式:單機模式、僞分佈模式、徹底分佈模式,只要掌握了徹底分佈模式,也就是集羣模式的搭建,剩下的兩種模式天然而然就會用了,通常前兩種模式通常用在開發或測試環境下,Hadoop最大的優點就是分佈式集羣計算,因此在生產環境下都是搭建的最後一種模式:徹底分佈模式。html

二、硬件選擇

須知:java

  1. 分佈式環境中一個服務器就是一個節點
  2. 節點越多帶來的是集羣性能的提高
  3. 一個Hadoop集羣環境中,NameNode,SecondaryNameNode和DataNode是須要分配不一樣的節點上,也就須要三臺服務器
  4. 在Hadoop運行做業完成時,History Server來記錄歷史程序的運行狀況,須要獨立一臺服務器
  5. 第一臺:記錄全部的數據分佈狀況,運行進程:NameNode 
    第二臺:備份全部數據分佈狀況,由於當前面的那臺服務器宕機(平常所說的死機)時,可經過該服務器來恢復數據。因此,該服務器運行的程序就是:SecondaryNameNode 
    第三臺:存儲實際數據,運行的進程就是;DataNode 
    第四臺:記錄應用程序歷史的運行情況。運行的程序就是:History Server。(可選) 
    因此說,至少三臺。

三、集羣環境各個服務配置

  1. 在Hadoop集羣環境中,最重要的就是NameNode運行的服務器是整個集羣的調度和協調工做,還有一個很重要的進程是資源管理(真正的協調整個集羣中每一個節點的運行),因此配置要高於其餘節點。 

四、軟件選擇

關於Hadoop集羣環境軟件的選擇,無非就是圍繞這個幾個軟件產品去選擇:OS操做系統,Hadoop版本,JDK版本,Hive版本、MySQL版本等。node

五、節點配置信息的分配

 
提早規劃出四臺服務器用來搭建Hadoop集羣,而後分別爲其分配了機器名稱、IP,IP須要設置爲統一網段,可根據使用的狀況,進行動態調整的。 
另外說明:搭建了兩臺Ubuntu的服務器來單獨安裝MySQLServer,搭建了一個主從模式,Ubuntu是一個界面友好的操做系統,這裏和Hadoop集羣分離的目的是由於Mysql數據庫是比較佔內存資源的,因此咱們單獨機器來安裝,固然,MySQL並非Hadoop集羣所須要的,二者沒有必然的關係,這裏搭建它的目的就爲了後續安裝Hive來分析數據應用的,而且咱們能夠在這個機器裏進行開發調試,固然Window平臺也能夠,畢竟咱們使用Windows平臺是最熟練的。(hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供簡單的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行。 其優勢是學習成本低,能夠經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。)web

2、Hadoop集羣環境安裝

安裝前需明瞭:sql

  1. 將Hadoop集羣中的主節點分配2GB內存,而後剩餘的三個節點都是1GB配置。
  2. 全部的節點存儲都設置爲50GB

一、CentOS安裝

  1. 首先須要在VMWare中建立一個新的計算機,而後指定CentOS的鏡像路徑和用戶名和密碼。
  2. 指定當前虛擬機操做系統的存儲大小(50GB)和內存大小(2GB)。
  3. 完成安裝
  4. 至此,咱們已經成功的安裝上了CentOS操做系統,而後安裝的過程當中順便建立了一個新用戶Hadoop,這個帳戶就是咱們後面安裝Hadoop集羣環境所使用的帳號。
  5. 咱們登陸到CentOS操做系統,而後爲了後續節點識別,要改計算機名。Master.Hadoop,而後重啓。(不知理解是否有誤)
    • 切換到root用戶
    • 編輯/etc/sysconfig/network文件:vi /etc/sysconfig/network 
    • 保存該文件,重啓計算機(reboot)
    • 查看是否生效:hostname
  6. 設置固定IP(驗證咱們當前虛擬機是否能上網,IP是否能成功配置。),而後配置Host文件(添加集羣對應ip與節點名)。(還有要改橋接模式(B):直接鏈接物理網絡。如今用的是虛擬機,可是把它當成物理機同樣,也給插上網線,鏈接到本地的網絡中去。固然,若是選擇這種方式的前提是要保證局域網的網段和以前規劃的IP是一致的,必須都是192.168.1.* 這種網段,這樣的目的就是宿主機和咱們的虛擬機可以直接通訊,那就意味這主機能聯網,咱們的虛擬機就能聯網。)
    • 固定IP設置:首先配置DNS,對/etc/resolv.conf 文件進行修改或查看 
    • 配置固定IP地址:修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件 
    • 重啓網絡:/etc/init.d/network restart或service network restart 
      修改爲功: 
    • ping通網絡。
    • 修改host文件 
    • 重啓服務器

二、Hadoop安裝與配置

  1. 下載Hadoop安裝包,而後進入Hadoop集羣的搭建工做。 
    把jdk和Hadoop包下載或上傳到/home/hadoop/Downloads/下 
     
    Hadoop環境的配置分爲兩步:一、Java環境配置;二、Hadoop配置。由於Hadoop就是Java語言編寫的,因此必定要先配置好Java環境。
    • jdk的安裝與配置: 
      通常將安裝的程序存到/usr目錄下,因此建立Java目錄:mkdir /usr/java, 
      更改權限chown hadoop:hadoop /usr/java/, 
      查看ll /usr 
      更改系統的環境變量vim /etc/profile 
      添加腳本
      # set java environment
      export JAVA_HOME=/usr/java/jdk1.8.0_121
      export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
      將解壓好的jdk移到/usr/java目錄中:cp -r jdk1.8.0_121 /usr/java/ 
      查看版本:java -version
    • Hadoop的安裝與基本配置: 
      與Jdk配置相似,--/usr目錄下,建立hadoop目錄mkdir /usr/hadoop 
      --拷貝解壓後的hadoop安裝包cp -r hadoop-2.6.4 /usr/hadoop 
      --賦權給Hadoop用戶chown hadoop:hadoop /usr/hadoop/ 
      --查看確認ll /usr/ 
      對幾個關鍵的文件進行配置: 
      轉到目錄:cd /usr/hadoop/hadoop-2.6.4/ 
      配置第一個文件vim etc/hadoop/core-site.xml
      <configuration>
      <!-- HDFS file path -->
      <!-- HDFS默認的鏈接地址 -->
      <property>
       <name>fs.defaultFS</name>
       <value>hdfs://192.168.1.50:9000</value>
       </property>
      <!-- 流文件的配置大小,默認是4K過小了,這裏將這個值改的大 -->
       <property>
       <name>io.file.buffer.size</name>
       <value>131072</value>
       </property>
      <!--生成臨時結果的配置路徑,須要建立目錄tmp-->
       <property>
       <name>hadoop.tmp.dir</name>
       <value>file:/usr/hadoop/hadoop-2.6.4/tmp</value>
       <description>Abasefor other temporary directories.</description>
       </property>
      </configuration>
      建立目錄mkdir tmp 
      配置第二個文件vim etc/hadoop/hdfs-site.xml
      <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value>192.168.1.50:9001</value>
       </property>
       <property>
       <name>dfs.namenode.name.dir</name>
       <value>file:/usr/hadoop/hadoop-2.6.4/dfs/name</value>
       </property>
       <property>
       <name>dfs.datanode.data.dir</name>
       <value>file:/usr/hadoop/hadoop-2.6.4/dfs/data</value>
       </property>
       <property>
       <name>dfs.replication</name>
       <value>1</value>
       </property>
       <property>
       <name>dfs.webhdfs.enabled</name>
       <value>true</value>
       </property>
      文件解釋: 
      建立目錄:mkdir dfsmkdir dfs/namemkdir dfs/data 
      配置第三個文件:cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml由於在這裏Hadoop已經提供了一個模板,直複製建立,而後修改此文件:vim etc/hadoop/mapred-site.xml
      <!-- 第一個就是制定當前Hadoop的並行運行計算架構,這裏爲yarn,第二個就是Job運行的歷史記錄Server,第三個就是歷史運行記錄的Web服務器。 -->
      <configuration>
       <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
       </property>
       <property>
       <name>mapreduce.jobhistory.address</name>
       <value>192.168.1.50:10020</value>
       </property>
       <property>
       <name>mapreduce.jobhistory.webapp.address</name>
       <value>192.168.1.50:19888</value>
       </property>
      </configuration>
      配置第四個文件:vim etc/hadoop/yarn-site.xml
      <!--後續的調優會一直圍繞這個文件進行-->
      <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>
       <property>
       <name>yarn.resourcemanager.address</name>
       <value>192.168.1.50:8032</value>
       </property>
       <property>
       <name>yarn.resourcemanager.scheduler.address</name>
       <value>192.168.1.50:8030</value>
       </property>
       <property>
       <name>yarn.resourcemanager.resource-tracker.address</name>
       <value>192.168.1.50:8035</value>
       </property>
       <property>
       <name>yarn.resourcemanager.admin.address</name>
       <value>192.168.1.50:8033</value>
       </property>
       <property>
       <name>yarn.resourcemanager.webapp.address</name>
       <value>192.168.1.50:8088</value>
       </property>
      配置Hadoop的jdk路徑,不指定是不能運行的,hadoop-env.sh 和 yarn-env.sh 在開頭添加以下java環境變量:export JAVA_HOME=/usr/java/jdk1.8.0_73 
      vim etc/hadoop/hadoop-env.sh 
       
      vim etc/hadoop/yarn-env.sh 
       
      由於全部Hadoop用戶都有執行權限,因此: 
      chown -R hadoop:hadoop /usr/hadoop/hadoop-2.6.4/

三、啓動Hadoop

  • 格式化文件,來啓動這個單節點的Hadoop集羣
    1. Hadoop 分佈式存儲系統的HDFS格式化,這個只能在初始化系統的時候用一次,一次就行了,要不執行一次數據就丟失一次。bin/hadoop namenode -format運行結果: 
    2. Hadoop 集羣進行啓動驗證:啓動HDFS:sbin/start-dfs.sh而後查看jps進程: 
       
      而後,查看狀態bin/hadoop dfsadmin -report 
       
      或者直接打開瀏覽器直接打開瀏覽器查看:http://192.168.10.87:50070/dfshealth.html#tab-overview 
    3. Hadoop 集羣啓動查看 
      啓動Hadoop集羣,而後查看其狀態sbin/start-yarn.sh 
      用瀏覽器打開:http://192.168.10.87:8088/cluster 

3、Hadoop集羣徹底分佈式壞境搭建

上一部分是單節點的安裝,工做已經完成了一半,下面進行的是徹底分佈式的環境搭建 
爲了減小配置時間,直接對上一節點進行克隆 
節點基本信息: 
 
總共須要5臺服務器來使用,四臺用來搭建Hadoop集羣使用,另一臺(可選)做爲MySQL等外圍管理Hadoop集羣來使用。在開發的時候通常也是直接經過鏈接外圍的這臺機器來管理Hadoop整個集羣數據庫

一、VMWare克隆節點和配置

  1. 首先須要在VMWare中將以前建立的單實例的計算機進行克隆。 
    注意:在克隆過程當中必定要選擇克隆一個完整的而不是建立連接克隆,也必定不要選擇現有的快照。
  2. 配置各個Slave節點的機器信息。 
    (1)主節點Master的CUP處理器設置成多路多核,這裏設成4,其餘節點設成1 
    (2)手動更改各個從節點的計算機名和Hosts文件(必須!)vim /etc/sysconfig/network 
    vim /etc/hosts
     
     
    配置完以後,重啓完各個機器以後,確保各個節點之間能夠ping 通(重點!!!)

二、節點SSH無密碼登陸配置

  1. 進行sshd的配置文件的修改,去掉默認註釋,開啓SSH驗證功能(以root用戶進行操做)vim /etc/ssh/sshd_config 
     
    將上面的這三行數據的註釋「#」去掉進行,保存。這裏記住了!全部的機器都要這麼依次進行設置。RSAAuthentication是指開啓SSH驗證,PubkeyAuthetication是指能夠經過公鑰進行驗證,AuthorizedkeysFile則指的的是公鑰存放的位置。
  2. 重啓該服務:/sbin/service sshd restart
  3. 用本機驗證一下:ssh localhost這個時候會讓你輸入密碼,是由於沒有生成密鑰,下面進行設置
    • 加工生成證書公私鑰,分發到各個服務器(以Hadoop用戶操做)在Master節點上生成Hadoop用戶的公鑰,而後將這個公鑰分發給各個slave節點,而後這樣在Master機器上就能夠用Hadoop無密碼登陸到各個salve機器上面了
    • ssh-keygen -t rsa -P '' 
      紅框勾出的路徑就是公鑰和私鑰生成的默認路徑
    • 下一步就是將這個公鑰複製到各個slave節點中去,遠程文件的複製:scp ~/.ssh/id_rsa.pub 遠程用戶名@遠程服務器IP:~/複製的公鑰文件存在默認的路徑「/home/hadoop/.ssh」scp ~/.ssh/id_rsa.pub hadoop@192.168.1.51:~/ 
    • 登陸salve01的機器將剛纔生成的公鑰加入的本地的權限驗證組裏面去cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 
    • 回到Master機器上面進行,ssh驗證SSH <遠程IP && 域名>在master機器上登陸slave01機器上實驗下,看是否還須要進行密碼輸入ssh slave01.hadoop從Master機器上面無密碼的登陸到Slave01機器上面,那麼說明剛纔的配置生效了。
    • 參照上面的步驟將各個Slave節點配置完成
    • 注意:在Master生成密鑰只須要生成一次就能夠了,不要再次生成!由於每次生成覺得着全部的節點都須要從新配置。
    • 參照上面的步驟將各個Slave節點SSH到Master機器(保證各個Slave節點可以無密碼登陸Master機器,各個Slave子節點幹完Master分配的任務以後,須要有權限反饋至Master) 
      注意:上面的步驟要必定完成驗證,要不之後的Hadoop操做會很出現各類詭異的問題!!

三、Hadoop集羣配置

    1. 配置Hadoop集羣配置 
      將這個單節點的配置成一個真正的分佈式集羣,充分利用咱們剛纔搭建的幾臺Server進行性能的最大發揮
    2. 首先進行slaves文件的配置,指定該集羣的各個Slave節點的位置(以hadoop用戶進行操做)(只須要在Master的機器上面進行就能夠了)vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/slaves將各個Slave的IP或者機器名寫入]![
    3. 更改hdfs-site.xml文件中的dfs.replication屬性值爲3(由於有另外3臺虛擬機,記住:只能是奇數!)vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/hdfs-site.xml 
      (這裏須要注意的是,全部的機器都要這樣配置。)
    4. 啓動Hadoop集羣,驗證是否成功 
      先來執行一個HDFS格式的命令(改爲徹底分佈式的集羣,因此這裏須要從新格式)bin/hadoop namenode -format
    5. 驗證一下整個集羣的HDFS是否正常可用,啓動整個集羣的HDFS,在Master機器上面,用hadoop用戶操做start-dfs.sh 
       
      經過瀏覽器來查看整個集羣的HDFS狀態,地址爲:http://192.168.1.50:50070 
       
    6. 驗證一下整個集羣的YARN分佈式計算框架是否正常可用,啓動Yarnstart-yarn.sh經過瀏覽器來查看整個集羣的Hadoop集羣狀態,地址爲:http://192.168.1.50:8088/ 
      可見當前的Hadoop集羣已經存在四個正在運行的節點。
相關文章
相關標籤/搜索