title: Hadoop分佈式集羣的搭建
summary: 關鍵詞: Hadoop ubuntu 分佈式集羣 環境搭建 ssh 網絡配置 java環境
date: 2019-5-19 11:09
author: foochane
urlname: 2019051901
categories: 大數據
tags:html
本文做者: foochane
本文連接: https://foochane.cn/article/2019051901.html
軟件 | 版本 | 下載地址 |
---|---|---|
linux | Ubuntu Server 18.04.2 LTS | https://www.ubuntu.com/downlo... |
hadoop | hadoop-2.7.1 | http://archive.apache.org/dis... |
java | jdk-8u211-linux-x64 | https://www.oracle.com/techne... |
名稱 | ip | hostname |
---|---|---|
主節點 | 192.168.233.200 | Master |
子節點1 | 192.168.233.201 | Slave01 |
子節點2 | 192.168.233.202 | Slave02 |
全部的節點均建立一個名爲hadoop
的用戶,並添加管理員權限。
注意:這裏這是單純爲了方便管理,建立的用戶名,也可使用其餘用戶名,或者使用系統以前的用戶,主要有管理員權限便可java
$ sudo useradd -m hadoop -s /bin/bash #建立用戶 $ sudo passwd hadoop #修改密碼 $ sudo adduser hadoop sudo #添加管理員權限
修改 /etc/hostname
文件,每一個節點都要修改。node
注意:若是是ubuntu18.04桌面版直接修改/etc/hostname
文件便可,ubuntu18.04服務器版還須要修改/etc/cloud/cloud.cfg
文件,修改以下:linux
# This will cause the set+update hostname module to not operate (if true) preserve_hostname: true #這裏是將false改爲true
在/etc/hosts
文件裏添加以下內容(每一個節點都要修改,根據實際狀況修改ip)web
192.168.233.200 Master 192.168.233.201 Slave01 192.168.233.202 Slave02
檢查各個節點是否能相互ping通。apache
讓Master可以經過SSH無密碼登陸各個Slave節點ubuntu
若是修改過主機名,須要從新生成的新的公鑰。瀏覽器
在Master上執行以下命令:bash
$ cd ~/.ssh # 若是沒有該目錄,先執行一次ssh localhost $ rm ./id_rsa* # 刪除以前生成的公匙(若是已經存在) $ ssh-keygen -t rsa # 執行該命令後,遇到提示信息,一直按回車就能夠 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
接着將Master中的id_rsa.pub文件複製到各個Slave節點中服務器
$ scp ~/.ssh/id_rsa.pub hadoop@Slave01:/home/hadoop/ $ scp ~/.ssh/id_rsa.pub hadoop@Slave02:/home/hadoop/
在各個Slave節點中執行以下命令:
$ mkdir ~/.ssh # 若是不存在該文件夾需先建立 $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys $ rm ~/id_rsa.pub # 用完之後就能夠刪掉
在Master中驗證是否能夠無密碼登陸,各個Slave節點。
如:
$ ssh Slave01 #若是成功登陸,則配置完成 $ ssh Slave02 #若是成功登陸,則配置完成
每一個節點都要安裝,步驟相同
爲了方便操做每一個節點,默認在/usr/local/
下新建一個名爲bigdata
的文件夾,存放全部的大數據相關的軟件。
$ sudo mkdir /usr/local/bigdata $ sudo chown -R hadoop:hadoop /usr/local/bigdata/
$ sudo mkdir /usr/local/bigdata/java $ sudo tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/bigdata/java/
在~/.bashrc
文件中添加以下內容,並執行$ source ~/.bashrc
命令使其生效
#java export JAVA_HOME=/usr/local/bigdata/java/jdk1.8.0_211 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
下載hadoop-2.7.1.tar.gz
文件,並解壓到/usr/local/bigdata/
文件夾下
$ sudo tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/bigdata
須要修改6個文件,文件位於/usr/local/bigdata/hadoop-2.7.1/etc/hadoop/
下
將文件中原來的 localhost
刪除,添加內容:
Slave01 Slave02
內容修改成:
<configuration> <!-- 指定HADOOP所使用的文件系統schema(URI)--> <property> <name>fs.defaultFS</name> <value>hdfs://Master:9000</value> </property> <!-- 指定hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/bigdata/hadoop-2.7.1/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
Hadoop的分佈式文件系統HDFS通常採用冗餘存儲,一份文件一般保存3份副本,因此dfs.replication的值仍是設置爲3。
具體內容以下:
<configuration> <property> <!-- 指定SecondaryNamenode所在地址 --> <name>dfs.namenode.secondary.http-address</name> <value>Master:50090</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/bigdata/hadoop-2.7.1/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/bigdata/hadoop-2.7.1/tmp/dfs/data</value> </property> </configuration>
修改內容以下:
<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>
內容以下:
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>Master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
修改以下內容:
export JAVA_HOME=/usr/local/bigdata/java/jdk1.8.0_211 # 能夠不用 export HADOOP_HOME=/usr/local/hadoop-2.7.1
每一個節點都要設置
在~/.bashrc
文件中添加以下內容,並$ source ~/.bashrc
使其生效
export PATH=$PATH:/usr/local/bigdata/hadoop-2.7.1/bin:/usr/local/bigdata/hadoop-2.7.1/sbin
slave節點只需將master節點上/usr/local/
下的bigdata
文件夾和~/.bashrc
文件,放到slave節點便可
注意切換到對應機器執行$ source ~/.bashrc
使環境變量生效。
後續的軟件都可使用此方式配置。
在master節點:
$ sudo rm -r /usr/local/bigdata/hadoop-2.7.1/tmp # 刪除 Hadoop 臨時文件,若是以前有啓動過 $ sudo rm -r /usr/local/bigdata/hadoop-2.7.1/logs/* # 刪除日誌文件,若是以前有啓動過 $ tar -zcvf ~/bigdata.tar.gz /usr/local/bigdata/ # 先壓縮再複製 $ scp ~/bigdata.tar.gz Slave01:/home/hadoop $ scp ~/bigdata.tar.gz Slave02:/home/hadoop $ scp ~/bashrc Slave01:/home/hadoop $ scp ~/bashrc Slave02:/home/hadoop
在各個slave節點上
$ sudo mkdir /usr/local/bigdata $ sudo chown -R hadoop:hadoop /usr/local/bigdata $ tar -zxvf ~/bigdata.tar.gz -C /usr/local/bigdata $ sudo source ~/.bashrc
在Master上執行
首次運行須要,執行
$ hdfs namenode -format
格式化名稱節點,而後就能夠啓動hadoop了。
啓動hadoop:
$ start-dfs.sh $ start-yarn.sh $ mr-jobhistory-daemon.sh start historyserver
使用jps查看啓動的各個節點,缺乏任何進程,都表示出錯。
$ jps 3585 JobHistoryServer 2938 NameNode 3148 SecondaryNameNode 3308 ResourceManager 3629 Jps
瀏覽器查看:http://192.168.233.200:50070/
查看相關信息:$ hdfs dfsadmin -report
關閉hadoop:
$ stop-yarn.sh $ stop-dfs.sh $ mr-jobhistory-daemon.sh stop historyserver
若是有問題,重複以下命令:
$ stop-dfs.sh # 關閉 $ rm -r /usr/local/bigdata/hadoop-2.7.1/tmp # 刪除 tmp 文件,注意這會刪除 HDFS中原有的全部數據 $ hdfs namenode -format # 從新格式化名稱節點 $ start-dfs.sh # 重啓