日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop集群安装与配置

發布時間:2023/11/30 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop集群安装与配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自Hadoop集群安裝配置教程_Hadoop2.6.0_Ubuntu/CentOS

本教程講述如何配置 Hadoop 集群,默認讀者已經掌握了 Hadoop 的單機偽分布式配置,否則請先查看Hadoop安裝教程_單機/偽分布式配置?或?CentOS安裝Hadoop_單機/偽分布式配置。

本教程由廈門大學數據庫實驗室出品,轉載請注明。本教程適合于原生 Hadoop 2,包括 Hadoop 2.6.0, Hadoop 2.7.1 等版本,主要參考了官方安裝教程,步驟詳細,輔以適當說明,保證按照步驟來,都能順利安裝并運行 Hadoop。另外有Hadoop安裝配置簡略版方便有基礎的讀者快速完成安裝。

為了方便新手入門,我們準備了兩篇不同系統的 Hadoop 偽分布式配置教程。但其他 Hadoop 教程我們將不再區分,可同時適用于 Ubuntu 和 CentOS/RedHat 系統。例如本教程以 Ubuntu 系統為主要演示環境,但對 Ubuntu/CentOS 的不同配置之處、CentOS 6.x 與 CentOS 7 的操作區別等都會盡量給出注明。

環境

本教程使用?Ubuntu 14.04 64位?作為系統環境,基于原生 Hadoop 2,在?Hadoop 2.6.0 (stable)?版本下驗證通過,可適合任何 Hadoop 2.x.y 版本,例如 Hadoop 2.7.1,Hadoop 2.4.1 等。

本教程簡單的使用兩個節點作為集群環境: 一個作為 Master 節點,局域網 IP 為 192.168.1.121;另一個作為 Slave 節點,局域網 IP 為 192.168.1.122。

準備工作

Hadoop 集群的安裝配置大致為如下流程:

  • 選定一臺機器作為 Master
  • 在 Master 節點上配置 hadoop 用戶、安裝 SSH server、安裝 Java 環境
  • 在 Master 節點上安裝 Hadoop,并完成配置
  • 在其他 Slave 節點上配置 hadoop 用戶、安裝 SSH server、安裝 Java 環境
  • 將 Master 節點上的 /usr/local/hadoop 目錄復制到其他 Slave 節點上
  • 在 Master 節點上開啟 Hadoop
  • 配置 hadoop 用戶、安裝 SSH server、安裝 Java 環境、安裝 Hadoop 等過程已經在Hadoop安裝教程_單機/偽分布式配置?或?CentOS安裝Hadoop_單機/偽分布式配置中有詳細介紹,請前往查看,不再重復敘述。

    繼續下一步配置前,請先完成上述流程的前 4 個步驟

    網絡配置

    假設集群所用的節點都位于同一個局域網。

    如果使用的是虛擬機安裝的系統,那么需要更改網絡連接方式為橋接(Bridge)模式,才能實現多個節點互連,例如在 VirturalBox 中的設置如下圖。此外,如果節點的系統是在虛擬機中直接復制的,要確保各個節點的 Mac 地址不同(可以點右邊的按鈕隨機生成 MAC 地址,否則 IP 會沖突):

    VirturalBox中節點的網絡設置

    Linux 中查看節點 IP 地址的命令為?ifconfig,即下圖所示的 inet 地址(注意虛擬機安裝的 CentoS 不會自動聯網,需要點右上角連上網絡才能看到 IP 地址):

    Linux查看IP命令

    首先在 Master 節點上完成準備工作,并關閉 Hadoop (/usr/local/hadoop/sbin/stop-dfs.sh),再進行后續集群配置。

    為了便于區分,可以修改各個節點的主機名(在終端標題、命令行中可以看到主機名,以便區分)。在 Ubuntu/CentOS 7 中,我們在 Master 節點上執行如下命令修改主機名(即改為 Master,注意是區分大小寫的):

  • sudo vim /etc/hostname
  • Shell 命令

    如果是用 CentOS 6.x 系統,則是修改 /etc/sysconfig/network 文件,改為 HOSTNAME=Master,如下圖所示:

    CentOS中hostname設置

    然后執行如下命令修改自己所用節點的IP映射:

  • sudo vim /etc/hosts
  • Shell 命令

    例如本教程使用兩個節點的名稱與對應的 IP 關系如下:

    192.168.1.121 Master 192.168.1.122 Slave1

    我們在 /etc/hosts 中將該映射關系填寫上去即可,如下圖所示(一般該文件中只有一個 127.0.0.1,其對應名為 localhost,如果有多余的應刪除,特別是不能有 “127.0.0.1 Master” 這樣的記錄):

    Hadoop中的hosts設置

    CentOS 中的 /etc/hosts 配置則如下圖所示:

    CentOS中的hosts設置

    修改完成后需要重啟一下,重啟后在終端中才會看到機器名的變化。接下來的教程中請注意區分 Master 節點與 Slave 節點的操作。

    需要在所有節點上完成網絡配置

    如上面講的是 Master 節點的配置,而在其他的 Slave 節點上,也要對 /etc/hostname(修改為 Slave1、Slave2 等) 和 /etc/hosts(跟 Master 的配置一樣)這兩個文件進行修改!

    配置好后需要在各個節點上執行如下命令,測試是否相互 ping 得通,如果 ping 不通,后面就無法順利配置成功:

  • ping Master -c 3 # 只ping 3次,否則要按 Ctrl+c 中斷
  • ping Slave1 -c 3
  • Shell 命令

    例如我在 Master 節點上?ping Slave1,ping 通的話會顯示 time,顯示的結果如下圖所示:

    檢查是否ping得通

    繼續下一步配置前,請先完成所有節點的網絡配置,修改過主機名的話需重啟才能生效

    SSH無密碼登陸節點

    這個操作是要讓 Master 節點可以無密碼 SSH 登陸到各個 Slave 節點上。

    首先生成 Master 節點的公匙,在 Master 節點的終端中執行(因為改過主機名,所以還需要刪掉原有的再重新生成一次):

  • cd ~/.ssh # 如果沒有該目錄,先執行一次ssh localhost
  • rm ./id_rsa* # 刪除之前生成的公匙(如果有)
  • ssh-keygen -t rsa # 一直按回車就可以
  • Shell 命令

    讓 Master 節點需能無密碼 SSH 本機,在 Master 節點上執行:

  • cat ./id_rsa.pub >> ./authorized_keys
  • Shell 命令

    完成后可執行?ssh Master?驗證一下(可能需要輸入 yes,成功后執行?exit?返回原來的終端)。接著在 Master 節點將上公匙傳輸到 Slave1 節點:

  • scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
  • Shell 命令

    scp 是 secure copy 的簡寫,用于在 Linux 下進行遠程拷貝文件,類似于 cp 命令,不過 cp 只能在本機中拷貝。執行 scp 時會要求輸入 Slave1 上 hadoop 用戶的密碼(hadoop),輸入完成后會提示傳輸完畢,如下圖所示:

    通過scp向遠程主機拷貝文件

    接著在 Slave1 節點上,將 ssh 公匙加入授權:

  • mkdir ~/.ssh # 如果不存在該文件夾需先創建,若已存在則忽略
  • cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
  • rm ~/id_rsa.pub # 用完就可以刪掉了
  • Shell 命令

    如果有其他 Slave 節點,也要執行將 Master 公匙傳輸到 Slave 節點、在 Slave 節點上加入授權這兩步。

    這樣,在 Master 節點上就可以無密碼 SSH 到各個 Slave 節點了,可在 Master 節點上執行如下命令進行檢驗,如下圖所示:

  • ssh Slave1
  • Shell 命令

    在Master節點中ssh到Slave節點

    配置PATH變量

    (CentOS 單機配置 Hadoop 的教程中有配置這一項了,這一步可以跳過)

    在單機偽分布式配置教程的最后,說到可以將 Hadoop 安裝目錄加入 PATH 變量中,這樣就可以在任意目錄中直接使用 hadoo、hdfs 等命令了,如果還沒有配置的,需要在 Master 節點上進行配置。首先執行?vim ~/.bashrc,加入一行:

    export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

    如下圖所示:

    配置PATH變量

    保存后執行?source ~/.bashrc?使配置生效。

    配置集群/分布式環境

    集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5個配置文件,更多設置項可點擊查看官方說明,這里僅設置了正常啟動所必須的設置項: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml?。

    1, 文件?slaves,將作為 DataNode 的主機名寫入該文件,每行一個,默認為 localhost,所以在偽分布式配置時,節點即作為 NameNode 也作為 DataNode。分布式配置可以保留 localhost,也可以刪掉,讓 Master 節點僅作為 NameNode 使用。

    本教程讓 Master 節點僅作為 NameNode 使用,因此將文件中原來的 localhost 刪除,只添加一行內容:Slave1。

    2, 文件?core-site.xml?改為下面的配置:

  • <configuration>
  • <property>
  • <name>fs.defaultFS</name>
  • <value>hdfs://Master:9000</value>
  • </property>
  • <property>
  • <name>hadoop.tmp.dir</name>
  • <value>file:/usr/local/hadoop/tmp</value>
  • <description>Abase for other temporary directories.</description>
  • </property>
  • </configuration>
  • XML

    3, 文件?hdfs-site.xml,dfs.replication 一般設為 3,但我們只有一個 Slave 節點,所以 dfs.replication 的值還是設為 1:

  • <configuration>
  • <property>
  • <name>dfs.namenode.secondary.http-address</name>
  • <value>Master:50090</value>
  • </property>
  • <property>
  • <name>dfs.replication</name>
  • <value>1</value>
  • </property>
  • <property>
  • <name>dfs.namenode.name.dir</name>
  • <value>file:/usr/local/hadoop/tmp/dfs/name</value>
  • </property>
  • <property>
  • <name>dfs.datanode.data.dir</name>
  • <value>file:/usr/local/hadoop/tmp/dfs/data</value>
  • </property>
  • </configuration>
  • XML

    4, 文件?mapred-site.xml?(可能需要先重命名,默認文件名為 mapred-site.xml.template),然后配置修改如下:

  • <configuration>
  • <property>
  • <name>mapreduce.framework.name</name>
  • <value>yarn</value>
  • </property>
  • <property>
  • <name>mapreduce.jobhistory.address</name>
  • <value>Master:10020</value>
  • </property>
  • <property>
  • <name>mapreduce.jobhistory.webapp.address</name>
  • <value>Master:19888</value>
  • </property>
  • </configuration>
  • XML

    5, 文件?yarn-site.xml

  • <configuration>
  • <property>
  • <name>yarn.resourcemanager.hostname</name>
  • <value>Master</value>
  • </property>
  • <property>
  • <name>yarn.nodemanager.aux-services</name>
  • <value>mapreduce_shuffle</value>
  • </property>
  • </configuration>
  • XML

    配置好后,將 Master 上的 /usr/local/Hadoop 文件夾復制到各個節點上。因為之前有跑過偽分布式模式,建議在切換到集群模式前先刪除之前的臨時文件。在 Master 節點上執行:

  • cd /usr/local
  • sudo rm -r ./hadoop/tmp # 刪除 Hadoop 臨時文件
  • sudo rm -r ./hadoop/logs/* # 刪除日志文件
  • tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先壓縮再復制
  • cd ~
  • scp ./hadoop.master.tar.gz Slave1:/home/hadoop
  • Shell 命令

    在 Slave1 節點上執行:

  • sudo rm -r /usr/local/hadoop # 刪掉舊的(如果存在)
  • sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
  • sudo chown -R hadoop:hadoop /usr/local/hadoop
  • Shell 命令

    同樣,如果有其他 Slave 節點,也要執行將 hadoop.master.tar.gz 傳輸到 Slave 節點、在 Slave 節點解壓文件的操作。

    首次啟動需要先在 Master 節點執行 NameNode 的格式化:

  • hdfs namenode -format # 首次運行需要執行初始化,之后不需要
  • Shell 命令 CentOS系統需要關閉防火墻

    CentOS系統默認開啟了防火墻,在開啟 Hadoop 集群之前,需要關閉集群中每個節點的防火墻。有防火墻會導致 ping 得通但 telnet 端口不通,從而導致 DataNode 啟動了,但 Live datanodes 為 0 的情況。

    在 CentOS 6.x 中,可以通過如下命令關閉防火墻:

  • sudo service iptables stop # 關閉防火墻服務
  • sudo chkconfig iptables off # 禁止防火墻開機自啟,就不用手動關閉了
  • Shell 命令

    若用是 CentOS 7,需通過如下命令關閉(防火墻服務改成了 firewall):

  • systemctl stop firewalld.service # 關閉firewall
  • systemctl disable firewalld.service # 禁止firewall開機啟動
  • Shell 命令

    如下圖,是在 CentOS 6.x 中關閉防火墻:

    CentOS6.x系統關閉防火墻

    接著可以啟動 hadoop 了,啟動需要在 Master 節點上進行:

  • start-dfs.sh
  • start-yarn.sh
  • mr-jobhistory-daemon.sh start historyserver
  • Shell 命令

    通過命令?jps?可以查看各個節點所啟動的進程。正確的話,在 Master 節點上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 進程,如下圖所示:

    通過jps查看Master的Hadoop進程

    在 Slave 節點可以看到 DataNode 和 NodeManager 進程,如下圖所示:

    通過jps查看Slave的Hadoop進程

    缺少任一進程都表示出錯。另外還需要在 Master 節點上通過命令?hdfs dfsadmin -report?查看 DataNode 是否正常啟動,如果 Live datanodes 不為 0 ,則說明集群啟動成功。例如我這邊一共有 1 個 Datanodes:

    通過dfsadmin查看DataNode的狀態

    也可以通過 Web 頁面看到查看 DataNode 和 NameNode 的狀態:http://master:50070/。如果不成功,可以通過啟動日志排查原因。

    偽分布式、分布式配置切換時的注意事項

  • 從分布式切換到偽分布式時,不要忘記修改 slaves 配置文件;
  • 在兩者之間切換時,若遇到無法正常啟動的情況,可以刪除所涉及節點的臨時文件夾,這樣雖然之前的數據會被刪掉,但能保證集群正確啟動。所以如果集群以前能啟動,但后來啟動不了,特別是 DataNode 無法啟動,不妨試著刪除所有節點(包括 Slave 節點)上的 /usr/local/hadoop/tmp 文件夾,再重新執行一次hdfs namenode -format,再次啟動試試。
  • 執行分布式實例

    執行分布式實例過程與偽分布式模式一樣,首先創建 HDFS 上的用戶目錄:

  • hdfs dfs -mkdir -p /user/hadoop
  • Shell 命令

    將 /usr/local/hadoop/etc/hadoop 中的配置文件作為輸入文件復制到分布式文件系統中:

  • hdfs dfs -mkdir input
  • hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input
  • Shell 命令

    通過查看 DataNode 的狀態(占用大小有改變),輸入文件確實復制到了 DataNode 中,如下圖所示:

    通過Web頁面查看DataNode的狀態

    接著就可以運行 MapReduce 作業了:

  • hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
  • Shell 命令

    運行時的輸出信息與偽分布式類似,會顯示 Job 的進度。

    可能會有點慢,但如果遲遲沒有進度,比如 5 分鐘都沒看到進度,那不妨重啟 Hadoop 再試試。若重啟還不行,則很有可能是內存不足引起,建議增大虛擬機的內存,或者通過更改 YARN 的內存配置解決。

    顯示MapReduce Job的進度

    同樣可以通過 Web 界面查看任務進度?http://master:8088/cluster,在 Web 界面點擊 “Tracking UI” 這一列的 History 連接,可以看到任務的運行信息,如下圖所示:

    通過Web頁面查看集群和MapReduce作業的信息

    執行完畢后的輸出結果:

    MapReduce作業的輸出結果

    關閉 Hadoop 集群也是在 Master 節點上執行的:

  • stop-yarn.sh
  • stop-dfs.sh
  • mr-jobhistory-daemon.sh stop historyserver
  • Shell 命令

    此外,同偽分布式一樣,也可以不啟動 YARN,但要記得改掉 mapred-site.xml 的文件名。

    自此,你就掌握了 Hadoop 的集群搭建與基本使用了。

    總結

    以上是生活随笔為你收集整理的Hadoop集群安装与配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。