前言:
搭建大資料環境叢集環境算是比較麻煩的一個事情,并且對硬體要求也比較高其中搭建大資料環境需要準備jdk環境和zk環境,還有hdfs,還有ssh之間的免密操作,還有主機名稱通路不通的問題 等。
必然會出現的問題:環境版本,配置問題,記憶體問題,節點端口通訊等。
最終效果圖:
一 環境準備:
三台伺服器:
jdk | jdk1.8 | 環境變量 |
hadoop | hadoop-3.1.3 | 版本 |
flink | flink-1.6.1 | 版本 |
主 | 192.168.192.150 | 免密登入 |
從1 | 192.168.192.151 | 免密登入 |
從2 | 192.168.192.152 | 免密登入 |
三台伺服器設定免密登入,且配置目前主機的别名映射:
vim /etc/hosts
三台伺服器的配置資訊:
我這裡電腦是16G運作記憶體,也可以看裝置管理器(虛拟機設定太大運作記憶體虛拟機會報錯,适量記憶體配置)
二 配置檔案:
2.1 配置hadoop-env.sh檔案
vim /opt/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_301
export HADOOP_HOME=/opt/hadoop-3.1.3
2.2 配置core-site.xml檔案
vim /opt/hadoop-3.1.3/etc/hadoop/core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.192.150:9000</value>
</property>
2.3 配置yarn-site.xml檔案
vim /opt/hadoop-3.1.3/etc/hadoop/yarn-site.xml
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.192.150:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.192.150:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.192.150:8050</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
2.4配置mapred-site.xml檔案
vim /opt/hadoop-3.1.3/etc/hadoop/mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>192.168.192.150:54311</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>
2.5 配置hdfs-site.xml檔案
vim /opt/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hadoop/hadoop_data/hdfs/namenode</value>
</property>
2.6 配置workers檔案
vim /opt/hadoop-3.1.3/etc/hadoop/workers
2.7 配置start-dfs.sh和stop-dfs.sh檔案
vim /opt/hadoop-3.1.3/sbin/start-dfs.sh
vim /opt/hadoop-3.1.3/sbin/stop-dfs.sh
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
因為hdfs啟動是root使用者需要配置root配置,也可以加到/etc/profile 全局環境變量中
2.8 配置start-yarn.sh和stop-yarn.sh檔案
vim /opt/hadoop-3.1.3/sbin/start-yarn.sh
vim /opt/hadoop-3.1.3/sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
2.9 把配置好的配置複制到其他倆台節點伺服器上面,直接複制/opt/hodoop3.1.3
scp -r /opt/hodoop3.1.3 slave1:/opt/
scp -r /opt/hodoop3.1.3 slave2:/opt/
三 啟動叢集:
3.1 初始化NameNode
/opt/hadoop-3.1.3/bin/hadoop namenode -format
(注意:這裡如果jps沒有namenode就需要手動啟動了)
hadoop-daemon.sh start namenode
3.2 直接執行全部啟動的腳本
start-all.sh
四,啟動後狀态
master->192.168.192.150
slave1-> 192.168.192.151
slaev2->192.168.192.152
QuorumPeerMain zookeeper的程序
ResourceManager flink程序
TaskManagerRunner flink程序
NodeManager yarn程序
NameNode HDFS程序
DataNode HDFS程序
web頁面通路:
大資料位址:
http://192.168.192.150:8088
flink通路位址:
http://192.168.192.150:8081
五,采用yarn-session+ flink送出任務執行(這裡有很多種任務送出,flink單服務送出,yarn-session送出)
./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 -c com.xiaoyang.streaming.SocketDemoFullCount ../Flink-1.0-SNAPSHOT.jar
去hadoop界面檢視任務執行情況
為啥要采用這種方式部署:
(開辟資源+送出任務)
沒次建立新的flink叢集任務之間互不影響,任務執行完成後對應叢集也會消失。
先開辟資源再送出任務
這種會使用是以任務都會送出到一個資源,任務需要手動停止,不易于拓展和管理
六,問題記錄排查和解決
6.1任務啟動失敗
這種問題一看就是腳本問題啟動問題
錯誤腳本:
./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ../Flink-1.0-SNAPSHOT.jar -c com.xiaoyang.streaming.SocketDemoFullCount
正确腳本:
./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 -c com.xiaoyang.streaming.SocketDemoFullCount ../Flink-1.0-SNAPSHOT.jar
6.2 叢集配置問題别名
叢集裡面的配置最好使用ip配置,不要使用别名,這樣在通訊的時候不會出現端口問題,這樣啟動任務的時候會有連接配接問題。
6.3 權限配置問題
權限配置問題需要配置要麼配置到全局變量或者 指定配置裡面,不然會報錯。
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
6.4 hdfs 節點啟動問題
主節點必須要有NameNode ,從節點要有DataNode 不然啟動hdfs啟動會報錯。
6.5 環境變量配置問題,hadoop配置jdk環境,如果不配置啟動也會報錯。
6.6 配置問題 /opt/hadoop-3.1.3/etc/hadoop/目錄下的配置檔案
如果配置錯誤也會導緻報錯各種問題,是以配置需要仔細檢查
6.7 其他問題,這裡包括版本包的問題,依賴包的問題,不能太新也不能太舊
總結:
首先部署hadoop叢集其實還是比較麻煩的,環境配置,各個配置的依賴,節點資訊,當然部署過程難免也會遇到很多問題,但是我們在解決一個困擾很久的問題的時候你不僅在成長還會收獲滿滿的成就感。
————沒有與生俱來的天賦,都是後天的努力拼搏(我是小楊,謝謝你的關注和支援)