最新hadoop安裝教程及hadoop的命令使用(親測可用)
01 引言
最近安裝hadoop-2.7.7 版本的時候遇到了很多坑,本文來詳細講解如何安裝和解決遇到的問題。
02 hadoop 安裝
2.1 下載與安裝
Step1: 下載
百度網(wǎng)盤下載
鏈接: https://pan.baidu.com/s/1ydPDP3xL0iL6sKYxdiq2ew 提取碼: nnpf
Step2: 上傳并解壓
cd /data tar -zxvf hadoop-2.7.7.tar.gz
2.2 hadoop配置
Step1: 修改hadoop安裝目錄/etc/hadoop下的hadoop-env.sh的文件內(nèi)容
[root@server11 hadoop]# vi hadoop-env.sh # 指定JAVA_HOME export JAVA_HOME=/usr/lib/jvm/TencentKona-8.0.1-242
Step2: 修改hadoop安裝目錄/etc/hadoop下的core-site.xml的文件內(nèi)容
[root@server19 hadoop]# vi core-site.xml
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://服務器的真實ip:9002</value>
</property>
<!-- 指定hadoop運行時產(chǎn)生文件的存儲路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>注:這里fs.defaultFS的value最好是寫本機的靜態(tài)IP。當然寫本機主機名,再配置hosts是最好的,如果用localhost,然后在windows用java操作hdfs的時候,會連接不上主機。
Step3: 修改hadoop安裝目錄/etc/hadoop下的hdfs-site.xml的文件內(nèi)容
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/hadoop/hdfs/nn</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>/data/hadoop/hdfs/snn</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>/data/hadoop/hdfs/snn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/hdfs/dn</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/node</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.http.address</name>
<value>服務器的真實ip:9000</value>
</property>
<property>
<name>ipc.maximum.data.length</name>
<value>134217728</value>
</property>
</configuration>
*Step4: 修改hadoop安裝目錄/etc/hadoop下的yarn-site.xml的文件內(nèi)容
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
/data/hadoop-2.7.7/etc/*,
/data/hadoop-2.7.7/etc/hadoop/*,
/data/hadoop-2.7.7/lib/*,
/data/hadoop-2.7.7/share/hadoop/common/*,
/data/hadoop-2.7.7/share/hadoop/common/lib/*,
/data/hadoop-2.7.7/share/hadoop/mapreduce/*,
/data/hadoop-2.7.7/share/hadoop/mapreduce/lib/*,
/data/hadoop-2.7.7/share/hadoop/hdfs/*,
/data/hadoop-2.7.7/share/hadoop/hdfs/lib/*,
/data/hadoop-2.7.7/share/hadoop/yarn/*,
/data/hadoop-2.7.7/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
2.3 免登陸配置
線上環(huán)境已配置,無需配置
#到 root 目錄下: cd /root #執(zhí)行生成密鑰命令: ssh-keygen -t rsa #然后三個回車 #然后復制公鑰追加到第一臺節(jié)點的公鑰文件中: ssh-copy-id -i /root/.ssh/id_rsa.pub root@master01 #選擇 yes #輸入登錄第一臺節(jié)點的密碼(操作完成該節(jié)點公鑰復制到第一臺節(jié)點中)
2.4 配置環(huán)境變量
vi /etc/profile ### 配置內(nèi)容如下: export JAVA_HOME=/usr/lib/jvm/TencentKona-8.0.1-242 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export HADOOP_HOME=/data/hadoop-2.7.7 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_CLASSPATH=`hadoop classpath` export HADOOP_CONF_DIR=/data/hadoop-2.7.7/etc/hadoop ### 生效配置 source /etc/profile
注意:配置HADOOP_CLASSPATH!
2.5 配置域名
可能會配置到,根據(jù)提示錯誤配置就好了
vi /etc/hosts 127.0.0.1 localhost.localdomain localhost 127.0.0.1 localhost4.localdomain4 localhost4 127.0.0.1 VM-xx-centos gp-master ::1 VM-xx-centos VM-xxx-centos ::1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 服務器的真實ip VM-xxx-centos localhost.localdomain gp-master
2.6 啟動
進入hadoop安裝目錄/sbin,執(zhí)行start-all.sh文件:
./start-all.sh
使用jps命令驗證是否已經(jīng)啟動成功(這些都啟動了才算成功:ResourceManager、DataNode、SecondaryNameNode、NodeManager、TaskManagerRunner、YarnTaskExecutorRunner、NameNode):
jps

瀏覽器打開:http://服務器地址:50070/,可以看到hadoop環(huán)境搭建好了:

03 相關(guān)命令
3.1 yarn相關(guān)命令
## 正在運行的任務 yarn application -list ## kill掉yarn正在運行的任務 yarn application -kill application_1654588814418_0003 ## 查找yarn已經(jīng)完成的任務列表 yarn application -appStates finished -list ## 查找yarn所有任務列表 yarn application -appStates ALL -list ## 查看容器日志 curl http://127.0.0.1:8042/node/containerlogs/container_1654588814418_0003_01_000001/root/jobmanager.out/?start=0 ## 查看yarn內(nèi)存使用情況 curl http://127.0.0.1:8042/cluster
3.2 hdfs相關(guān)命令
# 因為在 HDFS 上沒有為當前用戶創(chuàng)建主目錄,所以要先創(chuàng)建目錄 $ hadoop fs -mkdir -p /user/root # 目錄只能一級級創(chuàng)建 ,不能一下子創(chuàng)建2個 $ hadoop fs -mkdir ./flink # 上傳 $ hadoop fs -put /資源路徑/相關(guān)資源 ./flink # 下載 $ hadoop fs -get ./flink # 查看 $ hadoop fs -ls ./flink # 刪除整個文件夾 $ hadoop fs -rm -rf flink # 此處為逐級刪除 $ hadoop fs -rm ./flink/資源 # 備注:上面的 `./bin/hadoop fs`等同于`./bin/hdfs dfs`
04 一次填完所有的坑
1. 程序訪問hdfs失敗,提示“Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message”
解決方案:使用命令hdfs getconf -confKey fs.default.name獲取正確的端口號并配置到程序
2. 首次安裝hadoop,使用hdfs命令時,會提示“‘.’: No such file or directory”
解決方案: 因為在 hdfs 上沒有為當前用戶創(chuàng)建主目錄,所以要先創(chuàng)建目錄$ hadoop fs -mkdir -p /user/root
3. 首次安裝hadoop,使用hdfs命令時,可能會提示“‘There are 0 datanode(s) running and no node(s) are excluded in this operation.”
解決方案:可能是格式化兩次hadoop,導致沒有datanode。首先stop-all.sh停掉所有的服務,然后找到hadoop指定的data目錄(線上是:/data/hadoop)刪除,接著從新執(zhí)行一下 hadoop namenode -format,最后使用start-all.sh 重啟一下hadoop
4. 使用hdfs命令,提示“Caused by: org.apache.hadoop.ipc.RemoteException: Cannot create directory”
解決方案:是因為安全模式?jīng)]有自動關(guān)閉,使用命令關(guān)閉“hdfs dfsadmin -safemode leave”,然后刪除出錯的block塊,命令:“hdfs fsck / -delete”。
5. 啟動hadoop時,可能會提示second node connection refuesd,即訪問被拒絕
解決方案: 修改hadoop安裝目錄/etc/hadoop下的hdfs-site.xml的文件內(nèi)容
<property> <name>dfs.http.address</name> <value>11.41.140.96:9002</value> </property> <property> <name>dfs.secondary.http.address</name> <value>11.41.140.96:9002</value> </property>
6.部署的時候可能會失敗,提示 Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message,指的是端口號配置錯了,查詢端口號的命令:
解決方案:修改查詢端口號并修改
hdfs getconf -confKey fs.default.name
7.hadoop的日志在哪個目錄:
在:/data/hadoop-2.7.7/logs 05 Yarn相關(guān)配置
本文順帶講下yarn相關(guān)的配置(在/etc/hadoop/yarn-site.xml配置),可以直接跳過。
| 配置 | 描述 |
|---|---|
yarn.nodemanager.resource.memory-mb | 表示該節(jié)點上YARN可使用的物理內(nèi)存總量,默認是8192(MB),注意,如果你的節(jié)點內(nèi)存資源不夠8GB,則需要調(diào)減小這個值,而YARN不會智能的探測節(jié)點的物理內(nèi)存總量。 |
yarn.nodemanager.vmem-pmem-ratio | 任務每使用1MB物理內(nèi)存,最多可使用虛擬內(nèi)存量,默認是2.1。 |
yarn.nodemanager.pmem-check-enabled | 是否啟動一個線程檢查每個任務正使用的物理內(nèi)存量,如果任務超出分配值,則直接將其殺掉,默認是true。 |
yarn.nodemanager.vmem-check-enabled | 是否啟動一個線程檢查每個任務正使用的虛擬內(nèi)存量,如果任務超出分配值,則直接將其殺掉,默認是true。 |
yarn.scheduler.minimum-allocation-mb | 單個任務可申請的最少物理內(nèi)存量,默認是1024(MB),如果一個任務申請的物理內(nèi)存量少于該值,則該對應的值改為這個數(shù)。 |
yarn.scheduler.maximum-allocation-mb | 單個任務可申請的最多物理內(nèi)存量,默認是8192(MB)。 |
06 文末
本文主要講解了如何安裝hadoop、使用hadoop的命令及遇到的問題解決,希望能幫助到大家,謝謝大家的閱讀,本文完!
相關(guān)文章
基于SpringBoot實現(xiàn)HTTP請求簽名驗證機制
在分布式系統(tǒng)交互中,API接口的安全性至關(guān)重要,本文將深入解析基于Spring Boot實現(xiàn)的HTTP請求簽名驗證機制,感興趣的小伙伴可以跟隨小編一起學習一下2025-04-04
Mybatis中特殊SQL的執(zhí)行的實現(xiàn)示例
本文主要介紹了Mybatis中特殊SQL的執(zhí)行的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07
java.util.Collections類—emptyList()方法的使用
這篇文章主要介紹了java.util.Collections類—emptyList()方法的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11

