好程式設計師大資料培訓分享Hadoop分散式叢集

好程式設計師發表於2020-10-16

   好程式設計師大資料培訓分享 Hadoop 分散式叢集 的詳細介紹,首先Hadoop 的搭建有三種方式,單機版適合開發除錯 ; 偽分散式版,適合模擬叢集學習 ; 完全分散式,生產使用的模式。這篇檔案介紹如何搭建完全分散式的 hadoop 叢集,一個主節點,三個資料節點為例來講解。

   基礎環境

   環境準備

   1 、軟體版本

   四臺伺服器配置,系統:centos6.5 、記憶體: 1G (視自己配置而定)、硬碟: 20G (視自己配置而定)

   四臺伺服器分配的IP 地址:

   192.168.10.131

   192.168.10.132

   192.168.10.133

   192.168.10.134

   規劃:131 用作主節點用作 master ,其它三臺為資料節點 132 133 134 用作 salve1~3

   jdk 和生成保持一致使用 1.8 版本

   hadoop 使用 2.7.3 版本

   2 host 配置和主機名 ( 四臺 )

   修改四臺伺服器的hosts 檔案

   vim /etc/hosts

   192.168.10.131 master

   192.168.10.132 slave1

   192.168.10.133 slave2

   192.168.10.134 slave3

   分別斯塔伺服器的主機名:HOSTNAME master 為例說明

   vi /etc/sysconfig/network

   HOSTNAME=master

   執行reboot 後生效,完成之後依次修改其它 salve 伺服器為: slave1~3

   3 、伺服器安裝 jdk( 四臺 )

   建議使用yum 安裝 jdk, 也可以自行下載安裝

   yum -y install java-1.8.0-openjdk*

   配置環境變數,修改配置檔案vim/etc/profile

   export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64

   export PATH=$JAVA_HOME/bin:$PATH

   export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

   使用souce 命令讓立刻生效

   source /etc/profile

   免密登陸

   一、首先關閉四臺伺服器的防火牆和SELINUX

   檢視防火牆狀態

   service iptables status

   關閉防火牆

   service iptables stop

   chkconfig iptables off

   關閉SELINUX 後,需要重啟伺服器

   —關閉 SELINUX

   # vim /etc/selinux/config

   —註釋掉

   #SELINUX=enforcing

   #SELINUXTYPE=targeted

   —新增

   SELINUX=disabled

   二、免密碼登入本機

   下面以配置master 本機無密碼登入為例進行講解,使用者需參照下面步驟完成 salve1~3 三臺子節點機器的本機無密碼登入 ;

   1) 生產秘鑰

   ssh-keygen -t rsa

   2) 將公鑰追加到” authorized_keys ”檔案

   cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

   3) 賦予許可權

   chmod 600 .ssh/authorized_keys

   4) 驗證本機能無密碼訪問

   ssh master

   最後,依次配置salve1~3 無密碼訪問

   二、master 本機無密碼登入 slave1 slave2 slave3 ,以 master 無密碼登入 slave1 為例進行講解:

   1) 登入 slave1 ,複製 master 伺服器的公鑰” id_rsa.pub ”到 slave1 伺服器的” root ”目錄下。

   scp root@master:/root/.ssh/id_rsa.pub /root/

   2) master 的公鑰 (id_rsa.pub) 追加到 slave1 authorized_keys

   cat id_rsa.pub >> .ssh/authorized_keys

   rm -rf id_rsa.pub

   3) master 上面測試

   ssh slave1

   三、配置slave1~slave3 本機無密碼登入 master

   下面以slave1 無密碼登入 master 為例進行講解,使用者需參照下面步驟完成 slave2~slave3 無密碼登入 master

   1) 登入 master ,複製 slave1 伺服器的公鑰” id_rsa.pub ”到 master 伺服器的” /root/ ”目錄下。

   scp root@slave1:/root/.ssh/id_rsa.pub /root/

   2) slave1 的公鑰 (id_rsa.pub) 追加到 master authorized_keys 中。

   cat id_rsa.pub >> .ssh/authorized_keys

   rm -rf id_rsa.pub // 刪除 id_rsa.pub

   3) slave1 上面測試

   ssh master

   依次配置slave2 slave3

   到此主從的無密登入已經完成了。

   Hadoop 環境搭建

   配置master hadoop 環境

   1 master 上解壓縮安裝包及建立基本目錄

   # 下載

   wget

   # 解壓

   tar -xzvf hadoop-2.7.3.tar.gz -C /usr/local

   # 重新命名

   mv hadoop-2.7.3 hadoop

   2 、配置 master hadoop 環境變數

   1) 配置環境變數,修改配置檔案 vi/etc/profile

   export HADOOP_HOME=/usr/local/hadoop

   export PATH=$PATH:$HADOOP_HOME/bin

   使得hadoop 命令在當前終端立即生效

   source /etc/profile

   下面配置,檔案都在:/usr/local/hadoop/etc/hadoop 路徑下

   2 、配置 core-site.xml

   修改Hadoop 核心配置檔案 /usr/local/hadoop/etc/hadoop/core-site.xml ,透過 fs.default.name 指定 NameNode IP 地址和埠號,透過 hadoop.tmp.dir 指定 hadoop 資料儲存的臨時資料夾。

   <configuration>

   <property>

   <name>hadoop.tmp.dir</name>

   <value>file:/usr/local/hadoop/tmp</value>

   <description>Abase for other temporary directories.</description>

   </property>

   <property>

   <name>fs.defaultFS</name>

   <value>hdfs://master:9000</value>

   </property>

   </configuration>

   特別注意:如沒有配置hadoop.tmp.dir 引數,此時系統預設的臨時目錄為: /tmp/hadoo-hadoop 。而這個目錄在每次重啟後都會被刪除,必須重新執行 format 才行,否則會出錯。

   3 、配置 hdfs-site.xml

   修改HDFS 核心配置檔案 /usr/local/hadoop/etc/hadoop/hdfs-site.xml ,透過 dfs.replication 指定 HDFS 的備份因子為 3 ,透過 dfs.name.dir 指定 namenode 節點的檔案儲存目錄,透過 dfs.data.dir 指定 datanode 節點的檔案儲存目錄。

   <configuration>

   <property>

   <name>dfs.replication</name>

   <value>3</value>

   </property>

   <property>

   <name>dfs.name.dir</name>

   <value>/usr/local/hadoop/hdfs/name</value>

   </property>

   <property>

   <name>dfs.data.dir</name>

   <value>/usr/local/hadoop/hdfs/data</value>

   </property>

   </configuration>

   4 、配置 mapred-site.xml

   複製mapred-site.xml.template mapred-site.xml ,在進行修改

   cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

   vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

   <configuration>

   <property>

   <name>mapreduce.framework.name</name>

   <value>yarn</value>

   </property>

   <property>

   <name>mapred.job.tracker</name>

   <value>

   </property>

   </configuration>

   5 、配置 yarn-site.xml

   <configuration>

   <! Site specific YARN configuration properties >

   <property>

   <name>yarn.nodemanager.aux-services</name>

   <value>mapreduce_shuffle</value>

   </property>

   <property>

   <name>yarn.resourcemanager.hostname</name>

   <value>master</value>

   </property>

   </configuration>

   6 、配置 masters 檔案

   修改/usr/local/hadoop/etc/hadoop/masters 檔案,該檔案指定 namenode 節點所在的伺服器機器。刪除 localhost ,新增 namenode 節點的主機名 master; 不建議使用 IP 地址,因為 IP 地址可能會變化,但是主機名一般不會變化。

   vi /usr/local/hadoop/etc/hadoop/masters

   ## 內容

   master

   7 、配置 slaves 檔案 (Master 主機特有 )

   修改/usr/local/hadoop/etc/hadoop/slaves 檔案,該檔案指定哪些伺服器節點是 datanode 節點。刪除 locahost ,新增所有 datanode 節點的主機名,如下所示。

   vi /usr/local/hadoop/etc/hadoop/slaves

   ## 內容

   slave1

   slave2

   slave3

   配置hadoop-slave hadoop 環境

   下面以配置slave1 hadoop 為例進行演示,使用者需參照以下步驟完成其他 slave2~3 伺服器的配置。

   1) 複製 hadoop slave1 節點

   scp -r /usr/local/hadoop slave1:/usr/local/

   登入slave1 伺服器,刪除 slaves 內容

   rm -rf /usr/local/hadoop/etc/hadoop/slaves

   2) 配置環境變數

   vi /etc/profile

   ## 內容

   export HADOOP_HOME=/usr/local/hadoop

   export PATH=$PATH:$HADOOP_HOME/bin

   使得hadoop 命令在當前終端立即生效 ;

   source /etc/profile

   依次配置其它slave 服務

   啟動叢集

   1 、格式化 HDFS 檔案系統

   進入master ~/hadoop 目錄,執行以下操作

   bin/hadoop namenode -format

   格式化namenode ,第一次啟動服務前執行的操作,以後不需要執行。

   2 、然後啟動 hadoop

   sbin/start-all.sh

   3 、使用 jps 命令檢視執行情況

   #master 執行 jps 檢視執行情況

   25928 SecondaryNameNode

   25742 NameNode

   26387 Jps

   26078 ResourceManager

   #slave 執行 jps 檢視執行情況

   24002 NodeManager

   23899 DataNode

   24179 Jps

   4 、命令檢視 Hadoop 叢集的狀態

   透過簡單的jps 命令雖然可以檢視 HDFS 檔案管理系統、 MapReduce 服務是否啟動成功,但是無法檢視到 Hadoop 整個叢集的執行狀態。我們可以透過 hadoopdfsadmin-report 進行檢視。用該命令可以快速定位出哪些節點掛掉了, HDFS 的容量以及使用了多少,以及每個節點的硬碟使用情況。

   hadoop dfsadmin -report

   輸出結果:

   Configured Capacity: 50108030976 (46.67 GB)

   Present Capacity: 41877471232 (39.00 GB)

   DFS Remaining: 41877385216 (39.00 GB)

   DFS Used: 86016 (84 KB)

   DFS Used%: 0.00%

   Under replicated blocks: 0

   Blocks with corrupt replicas: 0

   Missing blocks: 0

   Missing blocks (with replication factor 1): 0

   ……

   5 hadoop 重啟

   sbin/stop-all.sh

   sbin/start-all.sh

   錯誤

   在搭建完成啟動的時候,發生過兩個錯誤:

   1 xxx:Error:JAVA_HOMEisnotsetandcouldnotbefound

   這個錯誤意思沒有找到jdk 的環境變數,需要在 hadoop-env.sh 配置。

   vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh

   ## 配置項

   export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64

   2 Theauthenticityofhost 0.0.0.0(0.0.0.0) can tbeestablished.

   解決方案關閉SELINUX

   — 關閉 SELINUX

   # vim /etc/selinux/config

   — 註釋掉

   #SELINUX=enforcing

   #SELINUXTYPE=targeted

   — 新增

   SELINUX=disabled



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2727470/,如需轉載,請註明出處,否則將追究法律責任。

相關文章