最新hadoop安裝教程及hadoop的命令使用(親測可用)
01 引言
最近安裝hadoop-2.7.7
版本的時(shí)候遇到了很多坑,本文來詳細(xì)講解如何安裝和解決遇到的問題。
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://服務(wù)器的真實(shí)ip:9002</value> </property> <!-- 指定hadoop運(yùn)行時(shí)產(chǎn)生文件的存儲路徑 --> <property> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> </configuration>
注:這里fs.defaultFS
的value
最好是寫本機(jī)的靜態(tài)IP。當(dāng)然寫本機(jī)主機(jī)名,再配置hosts
是最好的,如果用localhost
,然后在windows
用java
操作hdfs
的時(shí)候,會連接不上主機(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)境已配置,無需配置
#到 root 目錄下: cd /root #執(zhí)行生成密鑰命令: ssh-keygen -t rsa #然后三個(gè)回車 #然后復(fù)制公鑰追加到第一臺節(jié)點(diǎn)的公鑰文件中: ssh-copy-id -i /root/.ssh/id_rsa.pub root@master01 #選擇 yes #輸入登錄第一臺節(jié)點(diǎn)的密碼(操作完成該節(jié)點(diǎn)公鑰復(fù)制到第一臺節(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 配置域名
可能會配置到,根據(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 啟動
進(jìn)入hadoop
安裝目錄/sbin
,執(zhí)行start-all.sh
文件:
./start-all.sh
使用jps
命令驗(yàn)證是否已經(jīng)啟動成功(這些都啟動了才算成功:ResourceManager、DataNode、SecondaryNameNode、NodeManager、TaskManagerRunner、YarnTaskExecutorRunner、NameNode
):
jps
瀏覽器打開: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 上沒有為當(dāng)前用戶創(chuàng)建主目錄,所以要先創(chuàng)建目錄 $ hadoop fs -mkdir -p /user/root # 目錄只能一級級創(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 # 此處為逐級刪除 $ 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命令時(shí),會提示“‘.’: No such file or directory”
解決方案: 因?yàn)樵?hdfs 上沒有為當(dāng)前用戶創(chuàng)建主目錄,所以要先創(chuàng)建目錄$ hadoop fs -mkdir -p /user/root
3. 首次安裝hadoop,使用hdfs命令時(shí),可能會提示“‘There are 0 datanode(s) running and no node(s) are excluded in this operation.”
解決方案:可能是格式化兩次hadoop,導(dǎo)致沒有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)]有自動關(guān)閉,使用命令關(guān)閉“hdfs dfsadmin -safemode leave
”,然后刪除出錯(cuò)的block塊,命令:“hdfs fsck / -delete
”。
5. 啟動hadoop時(shí),可能會提示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.部署的時(shí)候可能會失敗,提示 Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message,指的是端口號配置錯(cuò)了,查詢端口號的命令:
解決方案:修改查詢端口號并修改
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
配置),可以直接跳過。
配置 | 描述 |
---|---|
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不會智能的探測節(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 | 是否啟動一個(gè)線程檢查每個(gè)任務(wù)正使用的物理內(nèi)存量,如果任務(wù)超出分配值,則直接將其殺掉,默認(rèn)是true。 |
yarn.nodemanager.vmem-check-enabled | 是否啟動一個(gè)線程檢查每個(gè)任務(wù)正使用的虛擬內(nèi)存量,如果任務(wù)超出分配值,則直接將其殺掉,默認(rèn)是true。 |
yarn.scheduler.minimum-allocation-mb | 單個(gè)任務(wù)可申請的最少物理內(nèi)存量,默認(rèn)是1024(MB),如果一個(gè)任務(wù)申請的物理內(nèi)存量少于該值,則該對應(yīng)的值改為這個(gè)數(shù)。 |
yarn.scheduler.maximum-allocation-mb | 單個(gè)任務(wù)可申請的最多物理內(nèi)存量,默認(rèn)是8192(MB)。 |
06 文末
本文主要講解了如何安裝hadoop、使用hadoop的命令及遇到的問題解決,希望能幫助到大家,謝謝大家的閱讀,本文完!
相關(guān)文章
spring boot配置多個(gè)請求服務(wù)代理的完整步驟
這篇文章主要給大家介紹了關(guān)于spring boot配置多個(gè)請求服務(wù)代理的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11SpringBoot集成Jpa對數(shù)據(jù)進(jìn)行排序、分頁、條件查詢和過濾操作
這篇文章主要介紹了SpringBoot集成Jpa對數(shù)據(jù)進(jìn)行排序、分頁、條件查詢和過濾操作,主要使用Jpa連接數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行排序、分頁、條件查詢和過濾操作,需要的朋友可以參考下2023-05-05Mybatis超級強(qiáng)大的動態(tài)SQL語句大全
MyBatis的動態(tài)SQL是基于OGNL表達(dá)式的,它可以幫助我們方便的在SQL語句中實(shí)現(xiàn)某些邏輯,下面這篇文章主要給大家介紹了關(guān)于Mybatis超級強(qiáng)大的動態(tài)SQL語句的相關(guān)資料,需要的朋友可以參考下2022-05-05Java通過接口實(shí)現(xiàn)匿名類的實(shí)例代碼
這篇文章介紹了Java通過接口實(shí)現(xiàn)匿名類的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10Java數(shù)據(jù)結(jié)構(gòu)之棧的詳解
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之棧簡單操作的相關(guān)資料,需要的朋友可以參考下,希望能夠給你帶來幫助2021-09-09Eclipse遠(yuǎn)程debug的步驟與注意事項(xiàng)
今天小編就為大家分享一篇關(guān)于Eclipse遠(yuǎn)程debug的步驟與注意事項(xiàng),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03springboot2.x默認(rèn)使用的代理是cglib代理操作
這篇文章主要介紹了springboot2.x默認(rèn)使用的代理是cglib代理操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08