文章目錄
- 1. 采用軟件較新版本
- 2. 準備三臺虛擬機
- 3. 搭建Hadoop集群
- 3.1 在主節點上配置Hadoop
- 3.1.1 編輯映射文件
- 3.1.2 配置免密登錄
- 3.1.3 配置JDK
- 3.1.4 配置Hadoop
- 3.2 從主節點分發到從節點
- 3.3 格式化名稱節點
- 3.4 啟動Hadoop集群
- 3.5 使用Hadoop WebUI
- 3.6 運行MR應用:詞頻統計
- 3.7 關閉Hadoop集群
- 4. 搭建Hive集群
- 5. 搭建Spark集群
- 6. 搭建HBase集群
- 7. 搭建Flink集群
- 8. 安裝配置Flume
- 9. 安裝配置Kafka
1. 采用軟件較新版本
- 通過搭建集群,測試其兼容性
2. 準備三臺虛擬機
- 主機名與IP地址
主機名 | IP 地址 |
---|---|
master | 192.168.1.101 |
slave1 | 192.168.1.102 |
slave2 | 192.168.1.103 |
- 三臺虛擬機已經關閉與禁用防火墻,關閉selinux安全機制
- FinalShell遠程連接三臺虛擬機
3. 搭建Hadoop集群
3.1 在主節點上配置Hadoop
3.1.1 編輯映射文件
- 執行命令:
vim /etc/hosts
- 注意:IP地址與主機名之間只有一個半角空格
3.1.2 配置免密登錄
-
生成RSA密鑰對
- 執行命令:
ssh-keygen
- 執行命令后,連續敲3次回車,生成節點的公鑰和私鑰,生成的密鑰文件
id_rsa
會自動放在/root/.ssh目錄下。 - 查看生成的密鑰對
- 私鑰:id_rsa
- 公鑰:id_rsa.pub
- 執行命令:
ll /root/.ssh
- 執行命令:
-
分發公鑰
- 發送給master虛擬機
- 執行命令:
ssh-copy-id root@master
- 執行命令:
- 發送給slave1虛擬機
- 執行命令:
ssh-copy-id root@slave1
- 執行命令:
- 發送給slave2虛擬機
- 執行命令:
ssh-copy-id root@slave2
- 執行命令:
- 發送給master虛擬機
-
驗證免密登錄
-
免密登錄master虛擬機
- 執行命令:
ssh master
- 執行命令:
-
免密登錄slave1虛擬機
- 執行命令:
ssh slave1
- 執行命令:
-
免密登錄slave2虛擬機
- 執行命令:
ssh slave2
- 執行命令:
-
-
查看密鑰對目錄
-
執行命令:
ll /root/.ssh
-
執行命令:
cat /root/.ssh/authorized_keys
,查看授權密鑰
-
執行命令:
cat /root/.ssh/known_hosts
,查看已知主機
-
3.1.3 配置JDK
-
上傳安裝包
-
進入/opt目錄
- 執行命令:
cd /opt
- 執行命令:
-
上傳jdk安裝包
- 上傳jdk安裝包到
/opt
目錄
- 上傳jdk安裝包到
-
查看jdk安裝包
- 執行命令:
ll jdk-11.0.28_linux-x64_bin.tar.gz
- 執行命令:
-
-
解壓縮安裝包
-
解壓縮
- 執行命令:
tar -zxvf jdk-11.0.28_linux-x64_bin.tar.gz -C /usr/local
- 執行命令:
-
查看解壓目錄
- 執行命令:
ll /usr/local/jdk-11.0.28
- 執行命令:
-
-
配置環境變量
-
執行命令:
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_231 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
說明:設置CLASSPATH時,注意等號后有一個“.”,表示之前定義的類路徑
-
存盤退出,執行命令:
source /etc/profile
,讓配置生效
-
-
查看JDK版本
- 執行命令:
java -version
- 執行命令:
3.1.4 配置Hadoop
-
上傳安裝包
-
上傳安裝包
- 上傳hadoop安裝包:上傳安裝包到
/opt
目錄
- 上傳hadoop安裝包:上傳安裝包到
-
查看上傳的hadoop安裝包
- 執行命令:
ll hadoop-3.4.1.tar.gz
- 執行命令:
-
-
解壓縮安裝包
- 執行解壓命令
- 執行命令:
tar -zxvf hadoop-3.4.1.tar.gz -C /usr/local
- 執行命令:
- 查看解壓后的目錄
- 執行命令:
ll /usr/local/hadoop-3.4.1
- 執行命令:
- 重要目錄
bin
:包含一些操作Hadoop集群的可執行文件etc/hadoop
:包含Hadoop的各種配置文件sbin
:主要存放管理Hadoop集群的系統級腳本
- 執行解壓命令
-
配置環境變量
- 配置
- 執行命令:
vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop-3.4.1 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 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
- 執行命令:
- 生效
- 執行命令:
source /etc/profile
,讓配置生效
- 執行命令:
- 查看版本
- 執行命令:
hadoop version
- 執行命令:
- 配置
-
編輯Hadoop環境配置文件
- 進入配置目錄
- 執行命令:
cd $HADOOP_HOME/etc/hadoop
- 執行命令:
- 編輯配置文件
-
執行命令:
vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk-11.0.28 export HADOOP_HOME=/usr/local/hadoop-3.4.1 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
-
- 讓配置生效
- 執行命令:
source hadoop-env.sh
- 執行命令:
- 進入配置目錄
-
編輯Hadoop核心配置文件
-
執行命令:
vim core-site.xml
<configuration><!--指定HDFS的老大--><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><!--指定Hadoop運行時文件臨時存放目錄--><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-3.4.1/tmp</value></property> </configuration>
-
-
編輯HDFS配置文件
-
執行命令:
vim hdfs-site.xml
<configuration><!--設置名稱節點目錄--><property><name>dfs.namenode.dir</name><value>/usr/local/hadoop-3.4.1/tmp/namenode</value></property><!--設置數據節點目錄--><property><name>dfs.datanode.dir</name><value>/usr/local/hadoop-3.4.1/tmp/datanode</value></property><!--設置輔助名稱節點--><property><name>dfs.namenode.secondary.http-address</name><value>master:50090</value></property><!--設置HDFS的Web訪問端口--> <property><name>dfs.namenode.http-address</name><value>0.0.0.0:9870</value></property><!--設置副本數量,默認是3--><property><name>dfs.replication</name><value>3</value></property><!--設置HDFS訪問權限檢查,false表示關閉--><property><name>dfs.permissions.enabled</name><value>false</value></property> </configuration>
-
-
編輯MapReduce配置文件
-
執行命令:
vim mapred-site.xml
<configuration><!-- 配置MR資源調度管理器YARN --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 設置MapReduce Application Master的環境變量 --><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.4.1</value></property><!-- 設置Map任務的環境變量 --><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.4.1</value></property><!-- 設置Reduce任務的環境變量 --><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.4.1</value></property> </configuration>
-
-
編輯YARN配置文件
-
執行命令:
vim yarn-site.xml
<configuration><!--配置資源管理器的主機名--><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><!--配置節點管理器的附加服務--><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!--關閉虛擬內存檢測--><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property> </configuration>
-
-
編輯數據節點文件
- 執行命令:
vim workers
- 三臺虛擬機上都有數據節點(DataNode)
- 執行命令:
3.2 從主節點分發到從節點
- 從master節點分發到slave1節點
-
分發JDK
- 執行命令:
scp -r $JAVA_HOME root@slave1:$JAVA_HOME
- 在slave1節點上查看拷貝的JDK目錄
- 執行命令:
-
分發Hadoop
-
執行命令:
scp -r $HADOOP_HOME root@slave1:$HADOOP_HOME
-
在slave1節點上查看拷貝的hadoop目錄
-
-
分發環境配置文件
- 執行命令:
scp /etc/profile root@slave1:/etc/profile
- 執行命令:
-
刷新環境配置文件
- 在slave1節點上執行命令:
source /etc/profile
- 在slave1節點上執行命令:
-
查看jdk和hadoop版本
-
在slave1節點上執行命令:
java -version
-
在slave1節點上執行命令:
hadoop version
-
-
分發映射文件
- 執行命令:
scp /etc/hosts root@slave1:/etc/hosts
- 執行命令:
-
- 從master節點分發到slave2節點
-
分發JDK
- 執行命令:
scp -r $JAVA_HOME root@slave2:$JAVA_HOME
- 在slave2節點上查看拷貝的JDK目錄
- 執行命令:
-
分發Hadoop
-
執行命令:
scp -r $HADOOP_HOME root@slave2:$HADOOP_HOME
-
在slave2節點上查看拷貝的hadoop目錄
-
-
分發環境配置文件
- 執行命令:
scp /etc/profile root@slave2:/etc/profile
- 執行命令:
-
刷新環境配置文件
- 在slave2節點上執行命令:
source /etc/profile
- 在slave2節點上執行命令:
-
查看jdk和hadoop版本
-
在slave2節點上執行命令:
java -version
-
在slave2節點上執行命令:
hadoop version
-
-
分發映射文件
- 執行命令:
scp /etc/hosts root@slave2:/etc/hosts
- 執行命令:
-
3.3 格式化名稱節點
- 執行命令:
hdfs namenode -format
- 格式化成功信息:
2025-09-05 04:56:23,324 INFO common.Storage: Storage directory /usr/local/hadoop-3.4.1/tmp/dfs/name has been successfully formatted.
3.4 啟動Hadoop集群
-
啟動服務
- 執行命令:
start-all.sh
- 執行命令:
-
查看進程
- 執行命令:jps
- 執行命令:jps
-
簡單說明
start-dfs.sh
- NameNode
- SecondaryNameNode
- DataNode
start-yarn.sh
- ResourceManager
- NodeManager
3.5 使用Hadoop WebUI
-
查看HDFS集群狀態
-
端口號說明
- hadoop2.x的端口號是50070,hadoop3.x的端口號是9870
-
用主機名訪問
- 訪問
http://master:9870
- 主節點狀態:
active
- 訪問
-
用IP地址訪問
-
使用master主機的IP地址來訪問,查看本機映射文件
-
訪問
http://192.168.219.83:9870
-
-
查看數據節點
- 單擊綠色導航欄上的【Datanodes】選項卡
- 單擊綠色導航欄上的【Datanodes】選項卡
-
-
查看YARN集群狀態
- 在瀏覽器里查看
http://master:8088
- 目前沒有運行過的MR應用,因此表格里沒有任何數據
- 在瀏覽器里查看
3.6 運行MR應用:詞頻統計
-
在master虛擬機上準備數據文件
- 執行命令:
vim test.txt
- 執行命令:
-
文件上傳到HDFS指定目錄
-
創建HDFS目錄
- 執行命令:
hdfs dfs -mkdir -p /wordcount/input
- 執行命令:
-
上傳文件到HDFS
- 執行命令:
hdfs dfs -put test.txt /wordcount/input
- 執行命令:
-
查看上傳的文件
-
執行命令:
hdfs dfs -ls /wordcount/input
,查看文件信息
-
利用Hadoop WebUI查看
-
執行命令:
hdfs dfs -cat /wordcount/input/test.txt
,查看文件內容
-
-
-
運行詞頻統計程序的jar包
-
查看Hadoop自帶示例jar包
- 執行命令:
cd $HADOOP_HOME/share/hadoop/mapreduce
,切換到MR示例目錄
- 執行命令:
ls
,列表顯示目錄信息
- 示例程序jar包:
hadoop-mapreduce-examples-3.4.1.jar
- 執行命令:
-
運行示例jar包里的詞頻統計
- 執行命令:
hadoop jar ./hadoop-mapreduce-examples-3.4.1.jar wordcount /wordcount/input/test.txt /wordcount/output
- 查看作業號:2025-09-05 05:21:34,131 INFO mapreduce.Job: Running job:
job_1757073655981_0001
- 執行命令:
-
查看詞頻統計結果
-
執行命令:
hdfs dfs -ls /wordcount/output
,查看結果文件
-
一個是成功標識文件:
_SUCCESS
,一個結果文件:part-r-00000
-
利用HDFS的WebUI查看結果文件
-
執行命令:
hdfs dfs -cat /wordcount/output/*
,查看結果內容
-
-
-
在YARN集群UI界面查看程序運行狀態
- 在瀏覽器里查看
http://master:8088
,最終狀態是SUCCEEDED
- 在瀏覽器里查看
3.7 關閉Hadoop集群
- 關閉Hadoop集群
-
執行命令:
stop-all.sh
-
注意:也可以分開執行
stop-dfs.sh
:關閉HDFS服務stop-yarn.sh
:關閉YARN服務
-