Hadoop 集群安裝與配置

2022-01-25 Linux中國
轉載自 | http://locez.com/linux/hadoop/hadoop-install-and-configure/
 作者 | Locez

1 Hadoop 是什麼?

Apache Hadoop[1] 是一個支持數據密集型分布式應用程式的開源軟體框架,能在大型集群上運行應用程式。Hadoop 框架實現了 MapReduce 編程範式,把應用程式分成許多小部分,每個部分能在任意節點上運行。並且 Hadoop 提供了分布式文件系統存儲所有計算節點的數據,為集群帶來非常高的帶寬。

2 搭建說明

註:可在一臺機子上配置好後利用 scp 命令進行複製,若在虛擬機則可直接複製虛擬機。

2.1 節點機器配置

NodeNameOSCPURAMDiskIPNameNodeCentOS 7.2E7-4830 v3 @ 2.10GHz x22G100G192.168.1.69DataNode1CentOS 7.2E7-4830 v3 @ 2.10GHz x22G500G192.168.1.70DataNode2CentOS 7.2E7-4830 v3 @ 2.10GHz x22G500G192.168.1.71

2.2 軟體包版本

SoftwareVersionJDKOracle JDK 1.8.0_131(非OpenJDK)Hadoop2.8.0

3 安裝JDK x3

# mkdir -p /usr/local/java

# cd /usr/local/java

# wget http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

# tar -xvzf jdk-8u131-linux-x64.tar.gz

### 設置新的 JDK 為默認 JDK,如果機器已經安裝 OpenJDK,可能需要先卸載。

# echo "export JAVA_HOME=/usr/local/java/jdk1.8.0_131/" >> /etc/profile

# echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile

# source /etc/profile

### 測試運行

# $JAVA_HOME/bin/java -version

 java version "1.8.0_131"

 Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

 Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

4 關閉防火牆 x3

直接關閉整個防火牆不是一個明智的選擇,在具體環境中應該挑選出需要的埠,進行放行,本文由於篇幅原因,不再詳細討論,故採用直接關閉防火牆的方法。

# systemctl stop firewalld.service

# systemctl disable firewalld.service

5 配置 hostname 及區域網映射 x3

# hostnamectl set-hostname namenode ### 為 namenode 節點設置 hostname

# hostnamectl set-hostname datanode1 ### 為 datanode1 節點設置 hostname

# hostnamectl set-hostname datanode2 ### 為 datanode2 節點設置 hostname

# echo "192.168.1.69 namenode" >> /etc/hosts

# echo "192.168.1.70 datanode1" >> /etc/hosts

# echo "192.168.1.71 datanode2" >> /etc/hosts

6 創建 hadoop 用戶以及 hadoop 用戶組 x3

# groupadd hadoop

# useradd -m -g hadoop hadoop

# passwd hadoop

7 SSH 免密登錄

Hadoop 在 namenode 節點中使用 ssh 來訪問各節點伺服器,例如開啟或關閉 hadoop。顯然在大型集群中,不可能手動逐個輸入密碼,在這種情況下,我們可以利用 ssh-agent 代理我們輸入密碼。

注:該設置只需要在 namenode 節點設置。

7.1 ssh-agent

配置 ssh-agent 開機自動運行

# echo 'eval $(ssh-agent)' >> /etc/profile

# source /etc/profile

7.2 配置免密登錄

在 namenode 節點上登錄 hadoop 用戶

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa  ### 輸入密鑰

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

$ chmod 644 ~/.ssh/authorized_keys

$ ssh-copy-id datanode1 ### 將公鑰 copy 到 datanode1

$ ssh-copy-id datanode2 ### 將公鑰 copy 到 datanode2

$ ssh-add ~/.ssh/id_rsa ### 使用 ssh-agent 實現免密登錄

$ ssh datanode1 ### 測試無需密碼即可登錄 datanode1

8 磁碟掛載(可選) x3

# mkdir /home/hadoop/hdfs

# mount /dev/sdb1 /home/hadoop/hdfs/

# chown -R  hadoop:hadoop /home/hadoop/hdfs/

# echo "/dev/sdb1 /home/hadoop/hdfs ext4 defaults 0 0" >> /etc/fstab

9 安裝 Hadoop x3

# cd /usr/local

# wget https://mirrors.scau.edu.cn/hadoop/hadoop-2.8.0.tar.gz ### 使用自己的鏡像源

# wget https://mirrors.ustc.edu.cn/apache/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz

# tar -xvzf hadoop-2.8.0.tar.gz

# chown -R hadoop:hadoop hadoop-2.8.0

10 配置 Hadoop x3

複製默認配置文件,在升級 hadoop 版本時可獨立出來。

$ mkdir ~/config/

$ cp -r /usr/local/hadoop-2.8.0/etc/hadoop/ ~/config/

指定 hadoop 運行所使用的 JDK 與配置目錄, vim ~/config/hadoop/hadoop-env.sh

$ export JAVA_HOME=/usr/local/java/jdk1.8.0_131/

$ export HADOOP_CONF_DIR=/home/hadoop/config/hadoop/

### 最好將該環境變量也加入 /etc/profile

# echo "export HADOOP_CONF_DIR=/home/hadoop/config/hadoop/" >> /etc/profile

10.1 log 存儲位置

修改 hadoop log 存儲位置。

$ echo "export HADOOP_LOG_DIR=~/log/hadoop" >> ~/config/hadoop/hadoop-env.sh

修改 YARN log 存儲位置,$ vim config/hadoop/yarn-env.sh。

YARN_LOG_DIR="/home/hadoop/log/yarn/"

10.2 配置 core-site.xml

$ vim ~/config/hadoop/core-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

   <property>

       <description>默認文件系統及埠</description>

       <name>fs.defaultFS</name>

       <value>hdfs://namenode/</value>

       <final>true</final>

   </property>

</configuration>

10.3 配置 hdfs-site.xml

$ vim ~/config/hadoop/hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

 <!-- Put site-specific property overrides in this file. -->

<configuration>

   <property>

       <description>namedoe 存儲永久性的元數據目錄列表</description>

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

       <value>/home/hadoop/hdfs/name/</value>

       <final>true</final>

   </property>

   <property>

       <description>datanode 存放數據塊的目錄列表</description>

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

       <value>/home/hadoop/hdfs/data/</value>

       <final>true</final>

   </property>

</configuration>

10.4 配置 mapred-site.xml

$ vim ~/config/hadoop/mapred-site.xml

<?xml version="1.0"?>

<configuration>

   <property>

       <description>MapReduce 執行框架設為 Hadoop YARN. </description>

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

       <value>yarn</value>

   </property>

   <property>

       <description>Map 和 Reduce 執行的比例,Map 執行到百分之幾後開始 Reduce 作業</description>

       <!-- 此處設為1.0 即為 完成 Map 作業後才開始 Reduce 作業,內存情況不夠的可設為 1.0 默認值為 0.05 -->

       <name>mapreduce.job.reduce.slowstart.completedmaps</name>

       <value>1.0</value>

   </property>

</configuration>

10.5 配置 yarn-site.xml

$ vim ~/config/hadoop/yarn-site.xml

<?xml version="1.0"?>

<configuration>

<!-- Site specific YARN configuration properties -->

   <property>

       <description>The address of the applications manager interface in the RM.</description>

       <name>yarn.resourcemanager.address</name>

       <value>namenode:8032</value>

   </property>

   <property>

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

       <value>mapreduce_shuffle</value>

   </property>

   <property>

       <description>存儲中間數據的本地目錄</description>

       <name>yarn.nodemanager.local-dirs</name>

       <value>/home/hadoop/nm-local-dir</value>

       <final>true</final>

   </property>

   <property>

       <description>每個容器可在 RM 申請的最大內存</description>

       <name>yarn.scheduler.maximum-allocation-mb</name>

       <value>2048</value>

       <final>true</final>

   </property>

   <property>

       <description>每個容器可在 RM 申請的最小內存</description>

       <name>yarn.scheduler.minimum-allocation-mb</name>

       <value>300</value>

       <final>true</final>

   </property>

   <property>

       <description>自動檢測節點 CPU 與 Mem</description>

       <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>

       <value>true</value>

   </property>

     <property>

       <description>The address of the scheduler interface.</description>

       <name>yarn.resourcemanager.scheduler.address</name>

       <value>namenode:8030</value>

   </property>

    <property>

       <description>The address of the RM web application.</description>

       <name>yarn.resourcemanager.webapp.address</name>

       <value>namenode:8088</value>

   </property>

   <property>

       <description>The address of the resource tracker interface.</description>

       <name>yarn.resourcemanager.resource-tracker.address</name>

       <value>namenode:8031</value>

   </property>

   <property>  

       <description>The hostname of the RM.</description>  

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

       <value>namenode</value>  

   </property>

</configuration>

10.6 配置 slaves

$ vim ~/config/hadoop/slaves

namenode

datanode1

datanode2

11 優化 namenode 節點命令使用

$ echo "export PATH=$PATH:/usr/local/hadoop-2.8.0/bin/:/usr/local/hadoop-2.8.0/sbin/" >> ~/.bash_profile

$ source ~/.bash_profile

12 啟動集群及測試

測試之前最好重啟一遍三臺機器,以確保配置都生效,並且沒有其他問題。

登錄 namenode 節點

$ ssh-add ~/.ssh/id_rsa     ### 驗證密鑰

$ hadoop namenode -format   ### 初始化集群

$ start-dfs.sh              ### 啟動 HDFS

$ start-yarn.sh             ### 啟動 YARN

12.1 集群總覽

NodeNameWebAddressnamenoteHDFShttp://192.168.1.69:50070
RMhttp://192.168.1.69:8088
NMhttp://192.168.1.69:8042datanode1HDFShttp://192.168.1.70:50075
NMhttp://192.168.1.70:8042datanode2HDFShttp://192.168.1.71:50075
NMhttp://192.168.1.71:8042

12.2 測試用例

hadoop 自帶了許多測試用例,所以可以很方便的快速測試集群是否搭建成功。

$ yarn jar /usr/local/hadoop-2.8.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar randomwriter random-data

執行上述命令後,打開 RM 以及 NM 的 URL ,查看任務是否被執行,如執行,則搭建成功。

12.3 圖片展示

hadoop

hadoop-task

hadoop-task

13 總結

本文從零開始搭建了具有三個節點伺服器的 Hadoop 集群,示範了 Hadoop 搭建集群的基本配置。並且從中我們可以知道 Hadoop 集群的每臺機子的配置幾乎是相同的,這是大量重複性的勞動,因此使用 docker 會大大加快集群的部署。文中的配置文件,是我根據我自己的三臺伺服器的機器硬體所決定的參數,讀者應該根據自己的實際情況選擇參數的設置,下文的參考資料給出了各種屬性的說明以及默認值。

14 參考資料

core-default.xml[2]

hdfs-default.xml[3]

mapred-default.xml[4]

yarn-default.xml[5]

DeprecatedProperties[6]

[1]: Apache Hadoop - http://hadoop.apache.org/

[2]: core-default.xml - http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/core-default.xml

[3]: hdfs-default.xml - http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

[4]: mapred-default.xml - http://hadoop.apache.org/docs/r2.8.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

[5]: yarn-default.xml - http://hadoop.apache.org/docs/r2.8.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

[6]: DeprecatedProperties - http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/DeprecatedProperties.html

相關焦點

  • Hadoop 集群搭建
    (1)準備基礎設施準備3臺伺服器,分別命名為 master、slave1、slave2互相配置為 SSH 免密碼登錄,並都安裝好 JAVA 環境(2)安裝配置 hadoop在 master 上下載解壓 hadoop,修改相應配置文件,包括:core-site.xml、hdfs-site.xml
  • Hadoop學習之路(三)Hadoop集群搭建和簡單應用
    服務主節點從節點HDFSNameNodeDataNodeYARNResourceManagerNodeManager集群伺服器規劃使用4臺CentOS-6.7虛擬機進行集群搭建軟體安裝步驟概述1、獲取安裝包2、解壓縮和安裝3、修改配置文件4、初始化,配置環境變量,啟動,驗證Hadoop安裝1、規劃規劃安裝用戶:
  • Hadoop基礎-HDFS安裝配置(一)-詳細過程
    上一篇講述了預備知識和安裝配置的概述,這一篇講解詳細的安裝配置過程。
  • 全分布式Hadoop集群搭建
    Hadoop集群中分為主機(master)和從機(slave),本文配置一臺阿里雲伺服器為主機和從機。其餘兩臺為從機。HDFS(分布式文件存儲系統)在主機上稱為Namenode節點,在從機上稱為Datanode節點。Namenode維護HDFS的文件系統樹以及文件樹中所有的文件和文件夾的元數據。可以理解為win系統中文件夾屬性中的那些信息,Datanode是存儲和檢索數據的地方。
  • Hadoop+Hbase 分布式集群架構「完全篇」
    安裝搭建 Hadoop2.1 配置說明本次集群搭建共三臺機器,具體說明下:主機名IP說明hadoop01192.168.10.101DataNode、NodeManager、ResourceManager、NameNodehadoop02192.168.10.102DataNode
  • 如何監控你的Hadoop+Hbase集群?
    的hadoop,如果你是使用原生的Apache Hadoop,那麼也沒關係,原生的Hadoop天生就提供了非常詳細的對接Ganglia的jmx接口,裡面包含了各個核心組件metrics獲取功能,這一點你可以查看hadoop和hbase包括spark的conf下面的metrics文件裡面配置,就能得到驗證。
  • Hadoop Zookeeper Hbase Hive 分布式集群搭建實例
    /dfs/data# mkdir tmp配置集群(Node50)1) /home/hadoop/hadoop-2.7.1/etc/hadoop/core-site.xml<configuration><property>               <name>hadoop.tmp.dir
  • 史上最強hadoop分布式集群的搭建
    9.1 Hadoop分布式集群的搭建9.1.1 修改hosts文件在上章中 CentOS 7已經配置了Java環境,採用搭建elasticsearch集群的三臺 Linux CentOS 7機器,搭建三節點 Hadoop分布式集群,其中node01作為Master,node2和node3作為slaves。
  • Apache Hadoop 完全分布式集群,實現 NN、RM 的高可用
    (1)先在VMware上安裝centos6.9,作為宿主機,然後安裝docker,具體過程見我另一篇博文:Centos6.9安裝docker(2)然後再docker hub中拉取centos鏡像,用於創建分布式集群的節點,推薦在docker中安裝centos6(docker中的centos7有坑,被坑過,嗚嗚),具體過程見我另一篇博文:docker中安裝centos6
  • 基於ZooKeeper搭建Hadoop高可用集群,附大數據入門指南
    三、前置條件四、集群配置4.1 下載並解壓下載Hadoop。>進入${HADOOP_HOME}/etc/hadoop目錄下,修改配置文件。各個配置文件內容如下:1. hadoop-env.sh# 指定JDK的安裝位置export JAVA_HOME=/usr/java/jdk1.8.0_201/2. core-site.xml<
  • 如何在 CentOS 上安裝 Apache Hadoop
    Hadoop YARN:作業調度和集群資源管理框架。Hadoop MapReduce:一個基於 YARN 的大型數據集並行處理系統。本文將幫助你逐步在 CentOS 上安裝 hadoop 並配置單節點 hadoop 集群。安裝 Java在安裝 hadoop 之前,請確保你的系統上安裝了 Java。
  • 0845-7.1.6-集群外配置Kerberos環境的Gateway節點
    1.Cloudera Enterprise 7.3.1和Cloudera Runtime 7.1.62.RedHat 7.63.kerberos版本 1.15.1-34.el_74.OpenLADP 2.4.44-20.el_7集群運行正常且Kerberos已安裝且正常使用IP位址HostName
  • 恭喜你,學大數據看到這篇文章 | Hadoop 分布式集群環境搭建(文末附本周福利)
    確保在你集群中的每個節點上都安裝了所有必需軟體:sun-JDK  ,ssh,HadoopJavaTM1.5.x,必須安裝,建議選擇Sun公司發行的Java版本。ssh 必須安裝並且保證 sshd一直運行,以便用Hadoop 腳本管理遠端Hadoop守護進程。
  • Hive on Spark安裝配置詳解
    簡介本文主要記錄如何安裝配置Hive on Spark,在執行以下步驟之前,請先確保已經安裝Hadoop集群,Hive,MySQL,JDK,Scala
  • hadoop之hdfs
    hdfs為hadoop distributed filesystem,是分布式文件系統,用來存儲海量的數據。    整體集群的規劃如下圖所示:    在測試環境中,只要使用三臺虛擬機就可以搭建一個高可用的hdfs集群,將各種組件進行混部即可(namenode佔用內存較多,datanode主要磁碟容量要大)。
  • 史上最詳細、最全面的Hadoop環境搭建
    本文的思路是:以安裝部署Apache Hadoop2.x版本為主線,來介紹Hadoop2.x的架構組成、各模塊協同工作原理、技術細節。安裝不是目的,通過安裝認識Hadoop才是目的。第一部分:Linux環境安裝第一部分介紹Linux環境的安裝、配置、Java JDK安裝等。
  • Hadoop快速入門[附學習視頻教程]
    安裝軟體:如果你的集群尚未安裝所需軟體,你得首先安裝它們。運行Hadoop集群的準備工作:解壓所下載的Hadoop發行版。編輯         conf/hadoop-env.sh文件,至少需要將JAVA_HOME設置為Java安裝根路徑。 嘗試如下命令:$ bin/hadoop 將會顯示hadoop 腳本的使用文檔。
  • 大數據Hadoop快速入門教程
    /sbin我們將Hadoop安裝在/opt/hadoop目錄下面,建立如下軟連接,配置文件放在/etc/hadoop/conf目錄下面[root@hadoop1 hadoop]# ll currentlrwxrwxrwx 1 root root 21 Oct 29 11:02 current -> hadoop-2.6.0-cdh5.8.2
  • Hadoop入門詳解
    重點組件:HADOOP集群具體來說包含兩個集群:HDFS集群和YARN集群,兩者邏輯上分離,但物理上常在一起HDFS集群:負責海量數據的存儲,集群中的角色主要有 NameNode / DataNodeYARN集群:負責海量數據運算時的資源調度,集群中的角色主要有 ResourceManager /NodeManager
  • 大數據系列之Spark集群環境搭建
    時,沒有jps命令,安裝安裝java-1.X.X-openjdk-devel這個包[root@tango-spark02 hadoop]# yum install java-1.8.0-openjdk-devel.x86_642)配置JAVA_HOME