初識Hadoop的三種安裝模式


初識Hadoop的三種安裝模式

特點:高可靠性(不怕丟)、高效性(處理速度快)、高容錯性

  • ps:使用Hadoop版本:

接下來所用到的Hadoop2.8.5,雖然目前Hadoop已經更新到3.x了;但是我們始終秉持一個觀點“用舊不用新”,因為畢竟舊版本較為穩定(目前雖然jdk出到版本為16了,但是我們還是會使用jdk8和jdk11),包括后期使用的各項Hive、Hbase等都需要與hadoop版本相對應,很難去找此類資源;當然如果到公司以后,公司也會給你提供好相應版本的,直接用就可以。

Hadoop

HDFS:分布式文件系統---需要安裝

MapReduce:分布式離線計算框架----不需要安裝----邏輯概念-----需要編碼實現

Yarn:分布式資源調度系統----需要安裝

安裝方式:

  • 本地模式
  • 偽分布式模式---一台電腦
  • 完全分布式

1.本地模式配置

(本模式下:hdfs和yarn組件無法使用,只能使用mapreduce-----一般只用來測試mapreduce)

一般會將目錄設置為(/opt目錄一般存放第三方軟件)---app下放安裝的軟件,software下放第三方軟件的壓縮包

image-20210727125043807

  • 解壓hadoop壓縮包至/opt/app目錄下

img

  • vim /etc/profile來更改系統環境變量(配置Hadoop的環境變量:目的是為了能夠在任何目錄下都能使用hadoop命令)

    export HADOOP_HOME=/opt/app/hadoop-2.8.5
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
  • source /etc/profile
    hadoop version
    

    image-20210727130049405

2.偽分布式模式

(本模式下:hadoop的組件hdfs和yarn都在一台機器上,需要去修改配置文件)

前言:一個巨大的文件需要進行存儲,單台計算機肯定是不能存儲這個文件的,因此我們可以將這個文件切割成幾個部分,分別放到不同計算機上。但是這時出現了一個問題:三台機器上存儲的文件互相沒有聯系,大文件怎么能下載呢? 此時可以在每個電腦上安裝HDFS進行 “關系定義”,接下來討論下這個關鍵性技術HDFS

主從模式--分布式軟件:一個主節點,多個從節點

  • 熟悉概念

    • HDFS{

      ​ NameNode:存儲元數據{領導,知道數據放到哪里}

      ​ DataNode:存儲數據(員工)

      ​ SecondaryNameNode:(秘書)

      }

    • Yarn{
      ​ ResourceManager (相當於NameNode:領導)

      ​ NodeManager (相當於DataNode:員工)

      }

  • 配置項

    image-20210727144804823

(.sh文件進行與java相連的jdk配置:配置JAVA_HOME=/opt/app/jdk1.8)

(.xml文件進行相應配置:core(common公共的)、hdfs、mapred、yarn)

1.core-site.xml
<!--指定HDFS中namenode的地址  必須放到core-site中,不能放在hdfs-site.xml中,否則無法使用hdfs-->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://192.168.0.20:9000</value>
</property>
<!--指定Hadoop運行時產生臨時文件的存儲目錄-->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/app/hadoop-2.8.5/temp</value>
</property>
2.hdfs-site.xml
<!--指定HDFS中副本的數量-->
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>
3.mapred-site.xml
<!--通過yarn去運行-->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
4.yarn-site.xml

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>

<!--指定Yarn的ResourceManager地址-->
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>192.168.0.20</value>
</property>
  • 格式化NameNode

    (相當於創建core-site.xml中聲明的temp目錄)

    {只能格式化1次,如果非要格式化的話,那么可以將產生的temp文件刪除}

hadoop namenode -format
  • 開啟hdfs服務和yarn服務

    start-dfs.sh
    start-yarn.sh
    
  • 訪問驗證

    namenode訪問網址{http://ip:50070}
    yarn的訪問網址{http://ip:8088}
    

    image-20210727155107899

    image-20210727154950966

  • 補充

    通過此種方式,你會發現在啟動各個節點時需要反復輸入密碼,不想要這樣的話,就尋找解決方式:

    配置SSH免密鑰登錄

    1.生成密鑰

    cd ~/.ssh
    ssh-keygen -t rsa
    

    image-20210727162643922

    2.把密碼給別人

    ssh-copy-id 192.168.0.20
    

    image-20210727162918257

3.完全分布式

(最少有3台節點組成的集群)----一般在生產部署時使用

1.需要准備3台虛擬機:通過克隆(創建完整克隆)方式創建

image-20210727173527054

2.配置3台虛擬機的靜態網絡

192.168.0.20 、192.168.0.21、192.168.0.22

3.配置3台虛擬機的免密登錄

---過程與偽分布式中所談到的免密登錄一致

(成功界面)

image-20210727220159195

4.同步時間

  • 安裝ntp

    yum install -y ntp
    vim /etc/ntp.conf
    

    image-20210727222237091

此處第一個圓圈內,我的網段應該為192.168.0.0

image-20210727222538832

(以上兩張圖片為需要在ntp.conf中修改和添加的)

  • 修改/etc/sysconfig/ntpd

    添加代碼
    SYNC_HWCLOCK=yes
    
  • 添加成開機啟動

    systemctl enable ntpd
    

然后在node2和node3上配置定時任務

crontab -e
*/1 * * * * /usr/sbin/ntpdate 192.168.0.20
每隔1分鍾,同步node1主服務器上的時間

5.正式開始集群配置

image-20210801091535181

core-site.xml

  <!-- 指定HDFS中NameNode的地址 -->
  <property>
      <name>fs.defaultFS</name>
      <value>hdfs://node1:9000</value>
  </property>
  <!-- 指定hadoop運行時產生文件的存儲目錄 -->
  <property>
      <name>hadoop.tmp.dir</name>
      <value>/opt/app/hadoop/temp</value>
  </property>

hdfs-site.xml

<configuration> 
    <!--在3台機器上各備份一份-->
      <property>
          <name>dfs.replication</name>
          <value>3</value>
      </property>
      <!--secondary namenode地址-->
      <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>node3:50090</value>
      </property>
      <!--hdfs取消用戶權限校驗-->
       <property>
          <name>dfs.permissions.enabled</name>
          <value>false</value>
      </property>

      <!--如果為true(默認值),則namenode要求必須將連接datanode的地址解析為主機名
      如果datanode配置的是主機名  那么此項可以不用填寫 默認值為true 但是必須對主機名在/etc/hosts文件中配置主機映射
      如果datanode配置的是IP  那么需要將這個值改為false  否則IP會當作主機名進行主機ip校驗
      注意:默認情況下配置hadoop使用的是host+hostName的配置方式 datanode需要配置為主機名
      -->
      <property>
          <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
          <value>true</value>
      </property>
  </configuration>

slaves

  vim /opt/app/hadoop/etc/hadoop/slaves
  node1
  node2
  node3

yarn-site.xml

<!-- Site specific YARN configuration properties -->
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>

<!--指定Yarn的ResourceManager地址-->
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>node2</value>
</property>

mapred-site.xml

  <configuration>
      <!-- 指定mr運行在yarn上 -->
      <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
      </property>
      <property>
          <name>yarn.app.mapreduce.am.env</name>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
      </property>
      <property>
          <name>mapreduce.map.env</name>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
      </property>
      <property>
          <name>mapreduce.reduce.env</name>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
      </property>
  </configuration>

在node1上更改玩hadoop配置文件后,開始進行分發

scp -r /opt/app/hadoop-2.8.5 root@node2:/opt/app
scp -r /opt/app/hadoop-2.8.5 root@node3:/opt/app

記得分發完每個都記得格式化哦!(或者先格式化再分發到node2和node3節點上)

其它細節的基本項的配置在偽分布式中已經很詳細了,在此就不多說了,大膽嘗試、不斷試錯才能提升!

成功后查看namenode成功界面,可以看到開啟了3個datanode節點

image-20210801095500095


免責聲明!

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



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