Hadoop集群大數據平台搭建


一、Hadoop集群環境搭建配置

1、前言

Hadoop的搭建分為三種形式:單機模式、偽分布模式、完全分布模式,只要掌握了完全分布模式,也就是集群模式的搭建,剩下的兩種模式自然而然就會用了,一般前兩種模式一般用在開發或測試環境下,Hadoop最大的優勢就是分布式集群計算,所以在生產環境下都是搭建的最后一種模式:完全分布模式。

2、硬件選擇

須知:

  1. 分布式環境中一個服務器就是一個節點
  2. 節點越多帶來的是集群性能的提升
  3. 一個Hadoop集群環境中,NameNode,SecondaryNameNode和DataNode是需要分配不同的節點上,也就需要三台服務器
  4. 在Hadoop運行作業完成時,History Server來記錄歷史程序的運行情況,需要獨立一台服務器
  5. 第一台:記錄所有的數據分布情況,運行進程:NameNode 
    第二台:備份所有數據分布情況,因為當前面的那台服務器宕機(日常所說的死機)時,可通過該服務器來恢復數據。所以,該服務器運行的程序就是:SecondaryNameNode 
    第三台:存儲實際數據,運行的進程就是;DataNode 
    第四台:記錄應用程序歷史的運行狀況。運行的程序就是:History Server。(可選) 
    所以說,至少三台。

3、集群環境各個服務配置

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

4、軟件選擇

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

5、節點配置信息的分配

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

二、Hadoop集群環境安裝

安裝前需明了:

  1. 將Hadoop集群中的主節點分配2GB內存,然后剩余的三個節點都是1GB配置。
  2. 所有的節點存儲都設置為50GB

1、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文件 
    • 重啟服務器

2、Hadoop安裝與配置

  1. 下載Hadoop安裝包,然后進入Hadoop集群的搭建工作。 
    把jdk和Hadoop包下載或上傳到/home/hadoop/Downloads/下 
     
    Hadoop環境的配置分為兩步:1、Java環境配置;2、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/

3、啟動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 

三、Hadoop集群完全分布式壞境搭建

上一部分是單節點的安裝,工作已經完成了一半,下面進行的是完全分布式的環境搭建 
為了減少配置時間,直接對上一節點進行克隆 
節點基本信息: 
 
總共需要5台服務器來使用,四台用來搭建Hadoop集群使用,另外一台(可選)作為MySQL等外圍管理Hadoop集群來使用。在開發的時候一般也是直接通過連接外圍的這台機器來管理Hadoop整個集群

1、VMWare克隆節點和配置

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

2、節點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操作會很出現各種詭異的問題!!

3、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集群已經存在四個正在運行的節點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM