1. 程式人生 > >Centos7 linux 系統 部署hadoop 叢集

Centos7 linux 系統 部署hadoop 叢集

背景:最近新的工作要接觸大資料,所以需要先接觸一下hadoop,一步步學習下去,暫時沒有固定的學習路線,還是看公司工作需要。先把hadoop環境跑起來,再多想想為什麼。
**目的:部署的叢集結構如下:

  • master
  • slave1
  • slave2**
    **第一步:**虛擬機器安裝linux系統,我使用的是centos7。常規安裝,網上很多教程,因為做這個沒有遇到什麼錯誤。需要提一下的是:網路連線用的是NAT模式:為了不想踩許可權的抗,我都是用root使用者操作。
    在這裡插入圖片描述

*第二步;*設定靜態IP,這個是必須的,
我這個版本的linux 網路設定的檔案是在/etc/sysconfig/network_scripts 下面的ifcfg-ens33,如下圖:其實不同版本的linux對應的檔名可能是不一樣的,但一般都會在/etc/sysconfig/network_scripts目錄下的第一個。


在這裡插入圖片描述
修改 ifcfg-ens33的配置。我的修改後如下:

在這裡插入圖片描述
這裡說一下需要修改的位置:
#修改
BOOTPROTO=static #這裡講dhcp換成ststic
ONBOOT=yes #將no換成yes
#新增
IPADDR=192.168.80.130 #靜態IP(一般跟你的宿主主機ip在同一個網段,)
GATEWAY=192.168.80.2 #預設閘道器
NETMASK=255.255.255.0 #子網掩碼

注意:掩碼一般設定成255.255.255.0就行了,預設閘道器要和NAT裡面的設定一樣,見圖
在這裡插入圖片描述
修改並儲存好ifcfg-eng33 配置檔案之後,一定要記得 用 service network restart

重起一下。
然後用 ip addr 命令檢視一下當前的ip地址是不是剛才設定的。
在這裡插入圖片描述
三個虛擬機器都需要這樣設定靜態IP,
第三步 IP地址對映關閉防火牆
為了方便以後的操作,給靜態的ip 地址作一下對映,在/etc/hosts 檔案新增對映就行。如圖:
在這裡插入圖片描述
這樣,Master 就相當於 192.168.80.130, 3個linux系統都這麼配置。
關閉防火牆
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動

第四步:設定SSH免密登入。
4.1首先要確保各個系統可以相互Ping 通,如果ping 不通一定是網路連結的設定問題。
4.2,關於免密登入的原理有必要說一下,因為知道了原理,後面的操作就顯得很明瞭。
我們都知道,網路安全裡有私鑰和公鑰 這兩個名詞。假如有A,B 兩個伺服器,如果要實現A 免密登入B,那麼A需要把他 的公鑰發到B 伺服器裡,等A請求B的時候,B就會根據A的公鑰生成加密的字元傳送到A ,A再用自己的私鑰解密,然後將解密得到的字串傳送給B,B服務對比是否相同,若相同,則不需要密碼登入。
4.3 生成公鑰和私鑰:#進入到我的home目錄
cd ~/.ssh
使用ssh-keygen -t rsa命令,然後一直回車回車即可,執行完這個命令後,.ssh目錄會生成兩個檔案id_rsa(私鑰)、id_rsa.pub(公鑰)。如下圖
在這裡插入圖片描述
上面是在slave2的機子上操作的,
第二步就是把slave2的公鑰發給 master 機子,
ssh-copy-id Master,
將公共金鑰填充到一個遠端機器上(master)的authorized_keys檔案中.。
因為我搭建的是一個主namenode,兩個datanode 的叢集。根據上面的操作,把slave1 和slave2 的公鑰發到master 的authorized_keys。然後,將Master 它本身的公鑰拷貝到(authorized_keys)
cat ~/.ssh/ id_rsa.pub >> ~/.ssh/authorized_keys,
最後將Master 的authorized_keys 拷貝覆蓋slave1,slave2的 authorized_keys檔案。在master執行以下命令。
scp ~/.ssh/authorized_keys slave1:~/.ssh/authorized_keys #拷貝到salve1上
scp ~/.ssh/authorized_keys slave2:~/.ssh/authorized_keys #拷貝到slave2上

在這裡插入圖片描述
做完這些,master,slave1,slave2 之間就可以相互免密登入了。用ssh hostname(主機名) 就可以登入其他機子了。

**第五步:Master部署 jdk,hadoop **
5.1準備安裝包
jdk-8u191-linux-x64.tar.gz,下載地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
hadoop-2.7.7.tar.gz
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
我這邊先是用win7系統下載到本地E 盤根目錄,然後通過pscp 遠端複製命令複製到linux 系統上。
pscp E:/jdk-8u191-linux-x64.tar.gz [email protected]:/home/
pscp E:/hadoop-2.7.7.tar.gz [email protected]:/home/
(注:pscp 命令win 系統本身不具備,需要到putty 官網下載 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
pscp 命令安裝教程可以參考 https://jingyan.baidu.com/article/60ccbceb551d3164cab19719.html
5.2 linux 解壓安裝包進入home 目錄解壓
tar -zxvf jdk-8u191-linux-x64.tar.gz
tar -zxvf hadoop-2.7.7.tar.gz
在這裡插入圖片描述

5.3 配置jdk ,hadoop 環境變數
在 master /etc/目錄下的profile 加入如圖紅框的內容:
命令 vi /etc/profile 編輯 profile
在這裡插入圖片描述
儲存之後,用命令 source /etc/profile 重起系統環境變數,立刻生效。
第六步:修改hadoop的配置檔案
檔案位置:/home/hadoop-2.7.7/etc/hadoop,
檔名稱:hadoop-env.shyarn-evn.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
hadoop-env.sh和yarn-evn.sh ,加入jdk的目錄
export JAVA_HOME=/home/jdk1.8.0_191

修改 core-site.xml 檔案,在configuration新增配置

<configuration>
       <property>
                <name>fs.default.name</name>
                <value>hdfs://Master:9000</value>
       </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/home/hadoop-2.7.7/tmp/</value>
       </property>
</configuration>

修改hdfs-site.xml檔案

<configuration>
     <property>
             <name>dfs.replication</name>
             <value>2</value>
       </property>
     <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/home/dfs/name</value>
       </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/dfs/data</value>
       </property>    
</configuration>

修改mapred-site.xml

<configuration>         
<property> 
<name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
     <name>mapreduce.jobhistory.address</name>
     <value>Master:19888</value>
</property>
<property>
          <name>mapred.job.tracker</name>
          <value>Master:9001</value>
 </property>
</configuration>

修改 yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
        <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>master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>master:8030</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.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
</configuration>

修改 slaves檔案,同樣在這個目錄下
新增從機的名字
Slave1
Slave2
在這裡插入圖片描述

第七步,同步從機
因為上面的配置都是在master上,slave1,slave2跟master的保持一致就行。
用scp 命令將 hadoop-2.7.7,jdk1.8.0_191複製到slave1 ,slave2 的home 目錄下
scp /home/hadoop-2.7.7 slave1:/home/
scp /home/hadoop-2.7.7 slave2:/home/
scp /home/jdk1.8.0_191 slave1:/home/
scp /home/jdk1.8.0_191 slave2:/home/
配置profile的環境變數
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
分別在slave1,slave2 source重起一下
source /etc/profile
第八步:執行hadoop
8.1在 hadoop 目錄下執行下面語句初始化 HDFS,一定要在hadoop目錄下執行
bin/hdfs namenode -format
在這裡插入圖片描述
8.2 執行hadoop
sbin/start-all.sh
在這裡插入圖片描述
8.3 用jps 命令檢視hadoop 執行的元件
在這裡插入圖片描述
8.4 如果jps ,沒看到相應的,那應該是啟動不成功,或許是配置檔案有錯,這時候就去找相應的日誌檔案,在hadoop 下有一個logs的資料夾,包含了啟動的日誌。比如,如果jps沒有看到 resourceManager,可以看相應的manager日誌。
在這裡插入圖片描述

8.5,win系統瀏覽器檢視hadoop web
瀏覽器開啟地址:http://192.168.80.130:50070/dfshealth.html#tab-datanode
在這裡插入圖片描述

8.6 檢視hadoop 叢集 applitions
瀏覽器開啟地址:http://192.168.80.130:8088

參照資料:https://blog.csdn.net/yujuan110/article/details/78457259

linux 執行wordcount :https://blog.csdn.net/qq_22830285/article/details/84143774