Hadoop生態圈
- Linux
- 1.修改ip地址
- 2.重啟network服務
- 3.安裝插件
- 4.關閉防火墻
- 5.創建用戶
- 6.創建目錄
- 7.修改目錄的所屬主和所屬組為lxy
- 8.修改主機名:hadoop102 (注意名字后面不要加空格)
- 9.修改hosts文件
- 10.等插件都裝完后再重啟Linux
- 11.把xshell的登錄用戶換成lxy (注意:不要用root切到lxy 而是直接使用lxy登錄)
- JDK安裝(建議和Hadoop一起安裝,改的文件都一樣,一起改!)
- 1.將jdk的壓縮包上傳到linux的/opt/software目錄中
- 2.解壓
- 3.配置環境變量
- 3.1 在/etc/profile.d中創建xxx.sh(在這我們統一叫 my_env.sh)
- 3.2 讓環境變量生效
- 4.測試
- Hadoop安裝(上面整過了這塊兒不用搞了)
- 1.將Hadoop的壓縮包上傳到linux的/opt/software
- 2.解壓壓縮包
- 3.配置環境變量
- 4.讓環境變量生效
- 5.測試
- 克隆兩臺
- 單機模式
- 一 準備數據
- 二 運行程序
- 三 查看結果
- 分布式集群搭建
- 1.scp的使用
- 2.rsync的使用
- 3.ssh配置
- 生成私鑰和公鑰
- 4.xsync腳本的使用
- 5.集群部署規劃
- 6.修改配置文件
- 配置core-site.xml
- 配置hdfs-site.xml
- 配置yarn-site.xml
- 配置mapred-site.xml
- 配置workers
- 7.格式化
- 8.啟動集群
- 啟動集群腳本
- 9.常見錯誤:
- 10.寫jpsall腳本
- 11.查看頁面
- ①瀏覽器中輸入:http://hadoop102:9870
- ①瀏覽器中輸入:http://hadoop103:8088
- 12.集群測試
- 集群時間同步
- XShell連不上Linux
- 1.先查看Linux是否啟動
- 2.先查看VMWare服務
- 3.在Linux測試是否可以上網 : ping www.baidu.com
- 4.重啟windows(先關閉Linux再關閉windows)
Linux
在剛安裝好的Linux上克隆一個hadoop102
在hadoop102上打快照 ----因為晚上需要恢復快照再做一遍
1.修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33修改BOOTPROTO=staticONBOOT=yes
添加如下內容IPADDR=192.168.10.102GATEWAY=192.168.10.2DNS1=114.114.114.114DNS2=8.8.8.8
2.重啟network服務
systemctl restart network
測試ping www.baidu.com(xshell連接Linux)
3.安裝插件
yum install -y epel-release net-tools vim
yum install -y psmisc nc rsync lrzsz ntp libzstd openssl-static tree iotop git
(可以在安裝的過程中,再打開一個窗口繼續下面的操作)
4.關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
5.創建用戶
#創建用戶
useradd lxy
#設置密碼123321
passwd lxy 回車再輸入密碼 123321
#給lxy設置可以使用root權限
visudo
#在root ALL=(ALL) ALL下面添加如下內容
lxy ALL=(ALL) NOPASSWD:ALL
6.創建目錄
mkdir /opt/module
mkdir /opt/software
7.修改目錄的所屬主和所屬組為lxy
chown lxy:lxy module software
8.修改主機名:hadoop102 (注意名字后面不要加空格)
vi /etc/hostname
9.修改hosts文件
#修改linux的hosts文件vi /etc/hosts添加如下內容
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108
192.168.10.112 hadoop112
192.168.10.113 hadoop113
192.168.10.114 hadoop114
192.168.10.115 hadoop115
192.168.10.116 hadoop116
192.168.10.117 hadoop117
192.168.10.118 hadoop118
192.168.10.201 hadoop201
192.168.10.202 hadoop202
192.168.10.203 hadoop203
192.168.10.204 hadoop204
192.168.10.205 hadoop205
192.168.10.206 hadoop206
192.168.10.207 hadoop207
192.168.10.208 hadoop208
192.168.10.209 hadoop209
192.168.10.210 hadoop210
192.168.10.211 hadoop211
#修改windows的hosts文件(如果修改保存時顯示沒有權限。可以將hosts文件復制到桌面修改桌面上的hosts文件再把桌面的hosts文件復制回去即可。查看是否成功)
C:\Windows\System32\drivers\etc
添加如下內容
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108
192.168.10.112 hadoop112
192.168.10.113 hadoop113
192.168.10.114 hadoop114
192.168.10.115 hadoop115
192.168.10.116 hadoop116
192.168.10.117 hadoop117
192.168.10.118 hadoop118
192.168.10.201 hadoop201
192.168.10.202 hadoop202
192.168.10.203 hadoop203
192.168.10.204 hadoop204
192.168.10.205 hadoop205
192.168.10.206 hadoop206
192.168.10.207 hadoop207
192.168.10.208 hadoop208
192.168.10.209 hadoop209
192.168.10.210 hadoop210
192.168.10.211 hadoop211
10.等插件都裝完后再重啟Linux
11.把xshell的登錄用戶換成lxy (注意:不要用root切到lxy 而是直接使用lxy登錄)
JDK安裝(建議和Hadoop一起安裝,改的文件都一樣,一起改!)
1.將jdk的壓縮包上傳到linux的/opt/software目錄中
2.解壓
cd /opt/software
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/module/
3.配置環境變量
3.1 在/etc/profile.d中創建xxx.sh(在這我們統一叫 my_env.sh)
cd /etc/profile.d
sudo vim my_env.sh
添加如下內容
#聲明JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
#聲明HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.4
#將JAVA_HOME添加到path中
export PATH=$PATH:$JAVA_HOME/bin
#將HADOOP_HOME添加到path中
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3.2 讓環境變量生效
第一種方式 :將xshell的窗口斷開重新連接 (重新加載環境變量)
第二種方式 :source /etc/profile.d/my_env.sh
注意:source就是執行my_env.sh腳本程序 如果第一次環境變量錯誤 修改后 再次source
會發現原來錯誤的環境變量還在。那就重啟Linuxsudo reboot
4.測試
java -version
hadoop version
Hadoop安裝(上面整過了這塊兒不用搞了)
1.將Hadoop的壓縮包上傳到linux的/opt/software
2.解壓壓縮包
cd /opt/software
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/module/
3.配置環境變量
cd /etc/profile.d
sudo vim my_env.sh
添加如下內容
#聲明HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.4
#將HADOOP_HOME添加到path中
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4.讓環境變量生效
第一種方式 :將xshell的窗口斷開重新連接 (重新加載環境變量)
第二種方式 :source /etc/profile.d/my_env.sh
注意:source就是執行my_env.sh腳本程序 如果第一次環境變量錯誤 修改后 再次source
會發現原來錯誤的環境變量還在。那就重啟sudo reboot
5.測試
hadoop version
克隆兩臺
修改兩個地方
vi /etc/sysconfig/network-scripts/ifcfg-ens33
vi /etc/hostname
單機模式
一 準備數據
1.創建目錄
mkdir /opt/module/hadoop-3.3.4/wcinput
2.創建文件
cd /opt/module/hadoop-3.3.4/wcinput
vim a.txt
3.文件中寫點數據
hello hello
longge
canglaoshi
longge
二 運行程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount wcinput wcoutput
說明:
hadoop: bin目錄中的命令
jar : 參數表示運行一個jar包
share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar : jar包路徑
wordcount :案例名稱-不能隨便寫
wcinput :數據所在的目錄
wcoutput :運算的結果輸出的目錄—該目錄必須不存在
三 查看結果
cd wcoutput
cat part-r-00000
分布式集群搭建
1.scp的使用
進行文件或目錄的拷貝
scp -r $pdir/$fname $user@$host:$pdir/$fname
2.rsync的使用
rsync -av $pdir/$fname $user@$host:$pdir/$fname
3.ssh配置
生成私鑰和公鑰
每個節點執行一次
ssh-keygen -t rsa
每個節點的root和lxy各執行一次
### 拷貝公鑰
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
4.xsync腳本的使用
vim /home/lxy/bin/xsync
#!/bin/bash#1. 判斷參數個數
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍歷集群所有機器
for host in hadoop102 hadoop103 hadoop104
doecho ==================== $host ====================#3. 遍歷所有目錄,挨個發送for file in $@do#4. 判斷文件是否存在if [ -e $file ]then#5. 獲取父目錄pdir=$(cd -P $(dirname $file); pwd)#6. 獲取當前文件的名稱fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done
修改腳本 xsync 具有執行權限
chmod +x xsync
測試腳本
xsync /home/lxy/bin
5.集群部署規劃
- NameNode和SecondaryNameNode不要安裝在同一臺服務器。
- ResourceManager也很消耗內存,不要和NameNode、SecondaryNameNode配置在同一臺機器上。
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
6.修改配置文件
cd /opt/module/hadoop-3.3.4/etc/hadoop
修改了下面的5個配置文件
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
workers
配置core-site.xml
vim core-site.xml
<!-- 指定NameNode的地址 -->
<property><name>fs.defaultFS</name><value>hdfs://hadoop102:8020</value>
</property><!-- 指定hadoop數據的存儲目錄 -->
<property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.3.4/data</value>
</property><!-- 配置HDFS網頁登錄使用的靜態用戶為lxy -->
<property><name>hadoop.http.staticuser.user</name><value>lxy</value>
</property>
配置hdfs-site.xml
vim hdfs-site.xml
<!-- nn web端訪問地址-->
<property><name>dfs.namenode.http-address</name><value>hadoop102:9870</value>
</property>
<!-- 2nn web端訪問地址-->
<property><name>dfs.namenode.secondary.http-address</name><value>hadoop104:9868</value>
</property>
配置yarn-site.xml
vim yarn-site.xml
<!-- 指定MR走shuffle -->
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property><!-- 指定ResourceManager的地址-->
<property><name>yarn.resourcemanager.hostname</name><value>hadoop103</value>
</property><!-- 環境變量的繼承 -->
<property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- 開啟日志聚集功能 -->
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property><!-- 設置日志聚集服務器地址 -->
<property> <name>yarn.log.server.url</name> <value>http://hadoop102:19888/jobhistory/logs</value>
</property><!-- 設置日志保留時間為7天 -->
<property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value>
</property>
配置mapred-site.xml
vim mapred-site.xml
<!-- 指定MapReduce程序運行在Yarn上 -->
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
<!-- 歷史服務器端地址 -->
<property><name>mapreduce.jobhistory.address</name><value>hadoop102:10020</value>
</property>
<!-- 歷史服務器web端地址 -->
<property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop102:19888</value>
</property>
配置workers
vim /opt/module/hadoop-3.3.4/etc/hadoop/workers
在該文件中增加如下內容:
hadoop102
hadoop103
hadoop104
注意:該文件中添加的內容結尾不允許有空格,文件中不允許有空行。
同步所有節點配置文件。
一定要分發
cd /opt/module/hadoop-3.3.4/etc/hadoop
xsync ./
xsync /opt/module/hadoop-3.3.4/etc
7.格式化
在hadoop102(因為namenode在這個節點上-格式化后產生的文件是給namenode使用的)上格式化。
注意:不要重復格式化。如果是格式化失敗(格式化的時候有錯誤)修改錯誤后重新格式化
命令:hdfs namenode -format
8.啟動集群
啟動HDFS:start-dfs.sh
關閉HDFS#!#!stop-dfs.sh啟動YARN(必須在resourcemanager所在的節點-hadoop103):start-yarn.sh
關閉YARN(必須在resourcemanager所在的節點-hadoop103):stop-yarn.sh
啟動集群腳本
vim /home/lxy/bin/myhadoop
#!/bin/bash
#參數的個數校驗
if [ $# -ne 1 ];thenecho 參數的個數不對exit
fi#參數的內容校驗
case $1 in
"start")#啟動HDFSssh hadoop102 $HADOOP_HOME/sbin/start-dfs.sh#啟動YARNssh hadoop103 start-yarn.sh;;
"stop")#關閉HDFSssh hadoop102 stop-dfs.sh#關閉YARNssh hadoop103 stop-yarn.sh;;
*)echo 輸入的內容不對!!!;;
esac;
9.常見錯誤:
錯誤一:配置文件錯誤
錯誤二:重復格式化
10.寫jpsall腳本
vim /home/lxy/bin/jpsall
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
doecho =====================$host================ssh $host jps
done
11.查看頁面
Web端查看HDFS的NameNode
①瀏覽器中輸入:http://hadoop102:9870
②查看HDFS上存儲的數據信息
Web端查看YARN的ResourceManager
①瀏覽器中輸入:http://hadoop103:8088
②查看YARN上運行的Job信息如果看不到解決方案:1.查看集群是否正啟動(HDFS YARN都要啟動)2.將hadoop102的名字替換成IP地址(如果能解決說明windows的hosts的文件有問題)3.查看防火墻是否關閉systemctl status firewalld如果沒有關閉 :systemctl stop firewalld systemctl disable firewalld
12.集群測試
①在HDFS的頁面上創建input目錄 并在input目錄中上傳a.txt
②在任意一臺節點上執行jobhadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /input /output注意:輸入和輸出路徑是HDFS的路徑
③在運行時觀察兩個頁面http://hadoop103:8088 觀察Job執行的進度http://hadoop102:9870 觀察輸出結果
13.歷史服務器
作用:查看之前執行過的job信息
配置:vim /opt/module/hadoop-3.3.4/etc/hadoop/mapred-site.xml
添加如下內容
<!-- 歷史服務器端地址 --><property><name>mapreduce.jobhistory.address</name><value>hadoop102:10020</value></property><!-- 歷史服務器web端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop102:19888</value></property>
注意:一定要分發
cd /opt/module/hadoop-3.3.4/etc/hadoop/
xsync mapred-site.xml
啟動歷史服務器:
mapred --daemon start historyserver
歷史服務器地址http://hadoop102:19888
14.日志的聚集
作用:在歷史服務器中通過logs就可以查看job的執行的詳細信息
配置:vim /opt/module/hadoop-3.3.4/etc/hadoop/yarn-site.xml
添加如下內容
<!-- 開啟日志聚集功能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 設置日志聚集服務器地址 --><property> <name>yarn.log.server.url</name> <value>http://hadoop102:19888/jobhistory/logs</value></property><!-- 設置日志保留時間為7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
注意:①一定要分發 cd /opt/module/hadoop-3.3.4/etc/hadoop/xsync yarn-site.xml②重啟HDFS YARN 歷史服務器③重新執行job④再查看logs
15.集群啟動方式
方式一 :整個模塊的啟或停止
start-dfs.sh stop-dfs.sh
start-yarn.sh stop-yarn.sh
方式二: 單個角色的啟動或停止
(1)分別啟動/停止HDFS組件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
(2)啟動/停止YARN
yarn --daemon start/stop resourcemanager/nodemanager
集群時間同步
將hadoop102配置成時間服務器
1.將ntpd服務關閉
sudo systemctl stop ntpd
2.修改配置文件sudo vim /etc/ntp.confsudo vim /etc/sysconfig/ntpd3.啟動ntpd服務sudo systemctl start ntpd=======時間服務器的時間不對===================sudo systemctl stop ntpd
sudo ntpdate 時間服務器地址
sudo systemctl start ntpd
配置hadoop103和hadoop104去hadoop102同步時間
1.啟動定時任務的服務
sudo systemctl start crond
2.編輯定時任務sudo crontab -e添加如下內容0 2 * * * sudo ntpdate hadoop102
XShell連不上Linux
1.先查看Linux是否啟動
沒有啟動 那么啟動即可
2.先查看VMWare服務
此電腦 -> 右鍵 -> 管理 -> 服務和應用程序 -> 服務 -> VMWarexxxx 有四個查看否啟動
如果沒有啟動右鍵啟動即可。如果已經啟動找到VMWare NAT XXX 服務右鍵重啟
重啟后再次重次重新連接Xshell
3.在Linux測試是否可以上網 : ping www.baidu.com
如果不可以上網需要查看配置文件①VMNet8虛擬網卡的配置②VMWare的配置③Linux的配置如果配置都沒問題①重啟虛擬網卡 :網絡 -> 右鍵 -> 屬性 -> 更改適配器設置 -> VMnet8 -> 右鍵禁用 再 啟用②重啟Linux服務systemctl restart network如果報錯- 方案一是否是配置文件問題 方案二 關閉網絡管理服務systemctl stop NetworkManagersystemctl disable NetworkManager再次重啟 systemctl restart network