- 前言
- 1.環境配置
- 1.1 jdk安裝
- 1.2 防火墻關閉
- 1.3 修改hosts檔案
- 1.4 創建hadoop用戶(跳過)
- 2.建立機器間互信
- 2.1描述
- 2.2 生成公鑰
- 2.3 傳輸認證檔案
- 3.安裝hadoop以及hadoop配置
- 3.1 hadoop下載(3.1.3)
- 3.2 配置hadoop
- 4.大功告成
- 4.1啟動hadoop
- 4.2然后即可在web網頁查看到自己的頁面!!!
前言
因為課程學習需要,加上本機電腦的不便利性,筆者采用的是三臺騰訊云的租用服務器(學生款性價比挺高的),由于在安裝以及環境搭建程序中出現了許多問題,查詢了相當多的資料,歷經幾番波折,于是在此分享一下自己較為全面的操作程序,希望能夠幫到各位解決問題,
騰訊云服務器系統 CentOs
三臺服務器分別名稱代號為:master slave1 slave2
1.環境配置
1.1 jdk安裝
Tips:機器已為Linux系統
在master機器節點(自行決定哪臺機器作為master節點)進行操作:
- 切換到root模式下,避免權限問題,(執行代碼:su root ,然后輸入密碼即可)(如果已經是root用戶模式下則忽略此條操作)
- 下載jdk檔案
此處推薦華為鏡像站的jdk(1.8.0)檔案網址
優點:下載速度賊快,非常絲滑
wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz
- 新建java檔案夾用于jdk解壓
下載完之后,在usr檔案夾下創建一個java檔案夾
mkdir /usr/java
-
解壓jdk檔案至剛剛創建的檔案夾
tar -zxvf +jdk的名字(可從下載操作處查看到) -C +解壓路徑(本文為/usr/java)
下述代碼為本文運行代碼(如果你完全按照本文操作可直接運行該代碼)
tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/java
- 配置java環境變數
1.打開組態檔
vim /etc/profile
2.修改組態檔(隨便找個位置加入以下內容)
注:Linux下檔案內容修改:鍵入i之后即可編輯檔案內容,編輯完成之后按esc,輸入符號:加入末行模式,然后輸入wq保存退出
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3.使環境變數生效
source /etc/profile
4.結果測驗
java -version
如果能夠回傳java版本號則jdk安裝成功(如下圖)

1.2 防火墻關閉
- 運行如下代碼
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
1.3 修改hosts檔案
在前言中末尾提到過筆者的集群為三臺機器,所以筆者的hosts檔案中ip映射有三行自己添加的代碼,大家可以根據自己實際情況適當修改,但是此處ip映射關系一定不能出錯!!
-
對于master結點,需要在檔案末尾添加的內容為:
master結點的內網ip master
另一個機器1的公網ip slave1
另一個機器2的公網ip slave2 -
對于slave1結點,需要在檔案末尾添加的內容為:
master結點的公網ip master
slave1結點的內網ip slave1
另一個機器2的公網ip slave2 -
對于slave2結點,需要在檔案末尾添加的內容為:
master結點的公網ip master
slave1結點的公網ip slave1
slave2結點的內網ip slave2
總而言之,對于自己機器上的ip映射就填自己的內網ip,自己機器上對其他ip的映射就是他們的公網ip
1.4 創建hadoop用戶(跳過)
由于非root用戶可能涉及權限問題,于是本文直接使用root用戶進行后續操作
2.建立機器間互信
2.1描述
由于hadoop必須機器之間免密登錄,所以我們必須采取ssh密鑰認證方式去保證機器登錄,
- 機器a向機器b建立免密登錄的流程
1.機器a生成公鑰
2.機器a將認證檔案傳給機器b
3.機器a成功單向建立與機器b的免密登錄(即a可以免密登錄b但b不能免密登錄a,只需要在b上執行上述機器a的所有操作即可完成b到a的免密登錄)
2.2 生成公鑰
ssh-keygen
- 遇到提示直接全回車就行,成功后會出現一個奇形怪狀內容的矩形框,標頭為RSA
- 成功之后會在 ~/.ssh檔案夾下面看到id_rsa id_rsa.pub檔案(為root用戶登錄情況下,可能會有authorized_keys檔案,問題不大)
跳轉至~/.ssh檔案夾下
cd ~/.ssh
查看檔案內容
ls
2.3 傳輸認證檔案
- 傳遞至localhost
ssh-copy-id localhost
檢查是否成功
ssh localhost
第一次登錄時需要輸入一次本機root用戶登錄密碼,輸入進去即可,然后再次鍵入代碼:
ssh localhost
如果不需要輸入密碼即出現了日期資訊,則傳遞至localhost成功
- 傳遞至slave1
傳遞時需要輸入一次 slave1結點上的 root用戶的登錄密碼
ssh-copy-id slave1
檢查是否成功
ssh slave1
如果不需要輸入密碼即出現了日期資訊,則傳遞至slave1成功
- 傳遞至slave2
傳遞時需要輸入一次 slave2結點上的 root用戶的登錄密碼
ssh-copy-id slave2
檢查是否成功
ssh slave2
如果不需要輸入密碼即出現了日期資訊,則傳遞至slave2成功
3.安裝hadoop以及hadoop配置
3.1 hadoop下載(3.1.3)
- 跳轉至根目錄
cd
- hadoop檔案下載
此處推薦使用清華鏡像的下載鏈接(縱享絲滑+1了):
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
- 新建hadoop檔案夾用于解壓
下載完之后,在usr檔案夾下創建一個hadoop檔案夾
mkdir /usr/hadoop
-
解壓hadoop檔案至剛剛創建的檔案夾
tar -zxvf +下載檔案的名字(可從下載操作處查看到) -C +解壓路徑(本文為/usr/hadoop)
下述代碼為本文運行代碼(如果你完全按照本文操作可直接運行該代碼)
tar -zxvf hadoop-3.1.3.tar.gz -C /usr/hadoop
- 配置環境變數
vim /etc/profile
將之前配置jdk時候的內容替換為:
export JAVA_HOME=/usr/java/jdk1.8.0_151
export HADOOP_HOME=/usr/hadoop/hadoop-3.1.3
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_LOG_DIR=/usr/hadoop/hadoop-3.1.3/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 使環境變數生效
source /etc/profile
- 測驗
hadoop version
如果出現如下版本號資訊則安裝成功

3.2 配置hadoop
- 創建檔案夾
mkdir /usr/hadoop/hadoop-3.1.3/tmp
mkdir /usr/hadoop/hadoop-3.1.3/hdfs
mkdir /usr/hadoop/hadoop-3.1.3/hdfs/name
mkdir /usr/hadoop/hadoop-3.1.3/hdfs/data
- 跳轉至目錄 /usr/hadoop/hadoop-3.1.3/etc/hadoop/
cd /usr/hadoop/hadoop-3.1.3/etc/hadoop/
- 修改core-site.xml(在檔案末尾的 之間添加如下代碼)
<!--配置hdfs檔案系統的命名空間-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!--master處為主機名,9000為埠號-->
</property>
<!-- 配置操作hdfs的存沖大小 -->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!-- 配置臨時資料存盤目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/hadoop-3.1.3/tmp</value>
</property>
- 修改hdfs-site.xml
<!--配置副本數-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--hdfs的元資料存盤位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-3.1.3/hdfs/name</value>
</property>
<!--hdfs的資料存盤位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-3.1.3/hdfs/data</value>
</property>
<!--hdfs的namenode的web ui 地址-->
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<!--hdfs的snn的web ui 地址-->
<property>
<name>dfs.secondary.http.address</name>
<value>0.0.0.0:50090</value>
</property>
<!--是否開啟web操作hdfs-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!--是否啟用hdfs權限(acl)-->
<property>
<name>dfs.permissions</name>
<value>false</value> </property>
- 修改mapred-site.xml
<!--指定mapreduce運行框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> </property>
<!--歷史服務的通信地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!--歷史服務的web ui地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
- 修改yarn-site.xml
<!--指定resourcemanager所啟動的服務器主機名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!--指定mapreduce的shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager的內部通訊地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<!--指定scheduler的內部通訊地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<!--指定resource-tracker的內部通訊地址-->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<!--指定resourcemanager.admin的內部通訊地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<!--指定resourcemanager.webapp的ui監控地址-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
- 修改workers(hadoop3之前檔案名為slaves)
直接將檔案內容替換為
master
slave1
slave2
- 配置hadoop-env.sh、yarn-env.sh、mapred-env.sh
加入自己的jdk路徑,即/usr/java/jdk1.8.0_151(隨便在檔案找個空行加入以下內容)
export JAVA_HOME=/usr/java/jdk1.8.0_151
- 組態檔拷貝
- 方法一:直接在另外兩臺機器上重復3.2的所有操作
- 方法二:master結點打包檔案直接傳輸至其他兩臺機器
打包指令:tar -zcvf +生成的壓縮檔案名 + 被壓縮檔案名,
發送指令: scp +待發送檔案名+ 用戶名@主機名:另一臺機器的檔案接收路徑
例如(僅做格式參考例子):
scp hadoop-3.1.3.tar.gz root@slave1:/usr/hadoop
發送完成之后在對應機器上執行對應適當解壓命令即可(至指定正確檔案夾)
4.大功告成
4.1啟動hadoop
- 跳轉目錄
cd /usr/hadoop/hadoop-3.1.3/sbin
- 格式化namenode
hdfs namenode -format
如果出現了SHUTDOWN_MSG: Shutting down NameNode at xxx資訊也不要慌張,向上尋找資訊,如果能找到 INFO common.Storage:Storage directory ******省略 has been successfully formatted資訊,則格式化成功了,忽略后面的SHUTDOWN_MSG即可
- 啟動所有服務
start-all.sh
- 若出現很多ERROR的情況則進行下列操作
跳轉目錄
cd /usr/hadoop/hadoop-3.1.3/sbin
修改start-dfs.sh和stop-dfs.sh檔案,添加如下內容:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
修改start-yarn.sh和stop-yarn.sh檔案,添加如下內容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
重新執行代碼
start-all.sh
- 成功后輸入jps指令查看情況
jps
應該能看到六行資訊包括如下內容:
NodeManager ResourceManager NameNode Jps DataNode SecondaryNameNode
4.2然后即可在web網頁查看到自己的頁面!!!
http://master服務器的公網ip:50070/

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/180628.html
標籤:其他
上一篇:python資料可視化簡易版
