小米 12 DXOMARK 相機評分 123,位列高階機型排行榜第五名
1.配置虛擬機器
叢集環境的搭建需要配置至少3太linux機器
1.1虛擬機器搭建:
參考網址:https://www.cnblogs.com/wzHardStudy/p/16126243.html
1.2準備
搭建完一臺虛擬機器後可以利用VMware自帶的克隆功能複製出兩臺虛擬機器.
首先要把目標虛擬機器關機!!!
選擇虛擬機器-->右鍵管理-->克隆
直接下一步下一步
選擇完整克隆
等待克隆
1.3啟動克隆虛擬機器
克隆出的虛擬機器直接就會現在出來,直接啟動即可!
啟動後進入系統介面,修改ip地址
centos7.9 檔名叫ens33 可以通過查ip確認自己的!
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改完畢重啟服務
service network restart
嘗試用ssh工具連結
連結不上檢視防火牆
檢視防火牆狀態 systemctl status firewalld
關閉防火牆 systemctl stop firewalld
永久關閉 systemctl disable firewalld
還是有問題檢視連結
https://www.cnblogs.com/wzHardStudy/p/16126243.html
2.配置免密登入
https://blog.csdn.net/u012404692/article/details/106158926
3.配置JAVA環境
hadoop是java寫出的大資料框架,所以允許需要java環境
2.1壓縮包安裝jdk
1.建立一個資料夾專門存放檔案
切換至根目錄
cd /
建立資料夾 mkdir -p /wz/softwores
2.上傳jdk
上傳jdk至建立的資料夾下
建議用 xftp直接上傳
命令可以用
scp -r 本地檔案路徑 使用者@ip:遠端檔案路徑
scp -p jdk-8u241-linux-x64.tar.gz [email protected]:/wz/softwares
3.上傳完畢解壓
檢視上傳檔案 :ls
檔名 : tar -zvxf
改名:mv 解壓檔名 重新命名
刪除檔案 : rm 上傳的壓縮包
4.配置環境變數
進入配置檔案: vi /etc/profile
在檔案最下方新增(根據自己路徑修改)檔名也要根據自己改的名字修改
export JAVA_HOME=/wz/softwares/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
重新載入環境變數檔案
source /etc/profile
5.測試:
java -version
java
指令有效則配置完成!
2.2yum安裝jdk
3.安裝hadoop
3.1上傳檔案
建議用xftp上傳,上傳至上面建立的目錄,好管理
3.2解壓檔案
tar -zvxf hadoop檔案
3.3改名
mv hadoop檔名 新名
3.4修改hadoop配置檔案
進入
cd /wz/softwares/hadoop-3.3.0/etc/hadoop
vim指令沒有的話用yum安裝
yum install vim -y
修改 hadoop-env.sh
hadoop-env.sh
#檔案最後新增
export JAVA_HOME=/wz/softwares/jdk
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
修改core-site.xml
vim core-site.xml
引數根據自身情況修改
以下xml檔案配置新增位置都在下圖位置:
<!-- 設定預設使用的檔案系統 Hadoop支援file、HDFS、GFS、ali|Amazon雲等檔案系統 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.137.155:8020</value>
</property>
<!-- 設定Hadoop本地儲存資料路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/wz/data/hadoop-3.3.0</value>
</property>
<!-- 設定HDFS web UI使用者身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 使用者代理設定 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 檔案系統垃圾桶儲存時間 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
配置:hdfs-site.xml
vim hdfs-site.xml
<!-- 設定SNN程序執行機器位置資訊 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.137.156:9868</value>
</property>
mapred-site.xml
<!-- 設定MR程式預設執行模式: yarn叢集模式 local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程式歷史服務地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.137.155:10020</value>
</property>
<!-- MR程式歷史伺服器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.137.155:19888</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>
yarn-site.xml
<!-- 設定YARN叢集主角色執行機器位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.137.155</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否將對容器實施實體記憶體限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否將對容器實施虛擬記憶體限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 開啟日誌聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 設定yarn歷史伺服器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>192.168.137.155:19888/jobhistory/logs</value>
</property>
<!-- 歷史日誌儲存的時間 7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
workers(叢集小弟地址)
192.168.137.155
192.168.137.156
192.168.137.157
給hadoop新增到環境變數中
vim /etc/profile
//放到java環境變數下
export HADOOP_HOME=/wz/softwares/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
更新配置:source /etc/profile
完成以上配置就搭建好了單機,如果要叢集就把相同配置在另外兩臺機器上在完成一遍!!!
3.5給另外兩臺配置
1.建議用scp命令拷貝給另外兩臺
scp -r 檔案在本地的路徑 使用者@使用者地址:/目標資料夾
例如: scp -r /wz/softwares [email protected]:/wz
2.不要忘記環境變數配置檔案
scp -r /etc/profile [email protected]:/etc/profile
3.最後都更新一下配置
source /etc/profile
4.測試
輸入java -version測試一下
輸入 hadoop 看是否正常
4.啟動hadoop
4.1Hadoop叢集啟動
1.(==首次啟動==)格式化namenode
該命令就首次啟動執行,就執行一次!!!!!
hdfs namenode -format
2.指令碼一鍵啟動
[root@node1 ~]# start-dfs.sh
Starting namenodes on [node1]
Last login: Thu Nov 5 10:44:10 CST 2020 on pts/0
Starting datanodes
Last login: Thu Nov 5 10:45:02 CST 2020 on pts/0
Starting secondary namenodes [node2]
Last login: Thu Nov 5 10:45:04 CST 2020 on pts/0
[root@node1 ~]# start-yarn.sh
Starting resourcemanager
Last login: Thu Nov 5 10:45:08 CST 2020 on pts/0
Starting nodemanagers
Last login: Thu Nov 5 10:45:44 CST 2020 on pts/0
Web UI頁面
HDFS叢集:192.168.137.155:9870/
YARN叢集:192.168.137.155:8088/
HDFS叢集啟動方式
啟動HDFS:start-dfs.sh
停止HDFS:stop-dnf.sh
YARN叢集啟動方式
啟動HDFS:start-yarn.sh
停止HDFS:stop-yarn.sh
Hadoop叢集啟動方式(把上面兩個合在了一起)
啟動Hadoop:start-all.sh
停止Hadoop:stop-all.sh
4.2可能錯誤
錯誤1:執行hadoop3官方自帶mr示例出錯。
錯誤資訊
Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
•Please check whether your etc/hadoop/mapred-site.xml contains the below configuration:
<property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value></property><property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value></property><property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value></property>
解決 mapred-site.xml,增加以下配置
<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>