最新hadoop安裝教程及hadoop的命令使用(親測(cè)可用)
01 引言
最近安裝hadoop-2.7.7 版本的時(shí)候遇到了很多坑,本文來(lái)詳細(xì)講解如何安裝和解決遇到的問(wèn)題。
02 hadoop 安裝
2.1 下載與安裝
Step1: 下載
百度網(wǎng)盤(pán)下載
鏈接: 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://服務(wù)器的真實(shí)ip:9002</value>
</property>
<!-- 指定hadoop運(yùn)行時(shí)產(chǎn)生文件的存儲(chǔ)路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>注:這里fs.defaultFS的value最好是寫(xiě)本機(jī)的靜態(tài)IP。當(dāng)然寫(xiě)本機(jī)主機(jī)名,再配置hosts是最好的,如果用localhost,然后在windows用java操作hdfs的時(shí)候,會(huì)連接不上主機(jī)。
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>服務(wù)器的真實(shí)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)境已配置,無(wú)需配置
#到 root 目錄下: cd /root #執(zhí)行生成密鑰命令: ssh-keygen -t rsa #然后三個(gè)回車(chē) #然后復(fù)制公鑰追加到第一臺(tái)節(jié)點(diǎn)的公鑰文件中: ssh-copy-id -i /root/.ssh/id_rsa.pub root@master01 #選擇 yes #輸入登錄第一臺(tái)節(jié)點(diǎn)的密碼(操作完成該節(jié)點(diǎn)公鑰復(fù)制到第一臺(tái)節(jié)點(diǎn)中)
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 配置域名
可能會(huì)配置到,根據(jù)提示錯(cuò)誤配置就好了
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 服務(wù)器的真實(shí)ip VM-xxx-centos localhost.localdomain gp-master
2.6 啟動(dòng)
進(jìn)入hadoop安裝目錄/sbin,執(zhí)行start-all.sh文件:
./start-all.sh
使用jps命令驗(yàn)證是否已經(jīng)啟動(dòng)成功(這些都啟動(dòng)了才算成功:ResourceManager、DataNode、SecondaryNameNode、NodeManager、TaskManagerRunner、YarnTaskExecutorRunner、NameNode):
jps

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

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

