為什么要搭建單機環(huán)境的Hadoop钝诚?
- 以最小化的成本學習和測試Hadoop;
- 搭建基于Hadoop的上層應用汤求,比如單機Spark環(huán)境需要先擁有單機的Hadoop旭绒;
如果需要搭建分布式集群環(huán)境的Hadoop環(huán)境,請參考另外一篇:Hadoop3.x集群安裝教程 - 簡書 (jianshu.com)
一京痢、準備工作
首先從官網(wǎng)下載好Linux的JDK和Hadoop奶甘,Apache的軟件可以從國內鏡像下載,比較快历造。
然后在阿里云上購買一臺1C2G Linux CentOS7.5 X64系統(tǒng)的云服務器(172.23.24.28)甩十,然后在其上安裝好JDK船庇,假設存放和解壓目錄都在/root/soft
目錄下吭产。
#進入JDK所在目錄
cd /root/soft
#解壓
tar -zxvf jdk-8u65-linux-x64.tar.gz
#配置環(huán)境變量
vim /etc/profile
export JAVA_HOME=/root/soft/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
#驗證
[root@iZuf6gmsvearrd5uc3emkyZ soft]# java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
二侣监、Hadoop配置
假設我們Hadoop的壓縮包也是在/root/soft
目錄下,執(zhí)行Hadoop的配置工作如下:
#進入目錄
cd /root/soft
#解壓
tar -zxvf hadoop-3.3.4.tar.gz
#修改hadoop配置文件hadoop-env.sh
cd /root/soft/hadoop-3.3.4/etc/hadoop
vim hadoop-env.sh
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
#改成你自己的JAVA_HOME地址
export JAVA_HOME=/root/soft/jdk1.8.0_241
#設置HADOOP環(huán)境變量
vim /etc/profile
export HADOOP_HOME=/root/soft/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
然后修改core-site.xml
中的配置:
<!-- 設置默認使用的文件系統(tǒng) Hadoop支持file臣淤、HDFS橄霉、GFS、ali|Amazon云等文件系統(tǒng) -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://172.23.24.28:8020</value>
</property>
<!-- 設置Hadoop本地保存數(shù)據(jù)路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/data/hadoop</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>
<!-- 文件系統(tǒng)垃圾桶保存時間 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
然后修改hdfs-site.xml
中的內容:
<!-- 設置SecondNameNode進程運行機器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>172.23.24.28: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>172.23.24.28:10020</value>
</property>
<!-- MR程序歷史服務器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>172.23.24.28: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>172.23.24.28</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>http://172.23.24.28:19888/jobhistory/logs</value>
</property>
<!-- 歷史日志保存的時間 7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
然后再修改workers
配置文件:
172.23.24.28
最后一步姓蜂,我們需要開通到本機的ssh免密連接服務:
# 生成公鑰密鑰,全部回車下一步即可
ssh-keygen -t rsa
ssh-keygen -t dsa
ssh-copy-id 172.23.24.28
# 輸入登錄密碼即可
# 然后可以ssh自己試試是否為免密登錄了
三医吊、啟動Hadoop
首次啟動Hadoop集群的時候钱慢,我們需要進行Namenode格式化:
hdfs namenode -format
然后就可以一鍵啟動HDFS和YARN了:
[root@node1 ~]# start-all.sh
Starting namenodes on [node1]
Last login: Fri Mar 10 13:33:24 CST 2023 from 172.23.24.28 on pts/2
Starting datanodes
Last login: Fri Mar 10 13:37:42 CST 2023 on pts/0
Starting secondary namenodes [node1]
Last login: Fri Mar 10 13:37:44 CST 2023 on pts/0
Starting resourcemanager
Last login: Fri Mar 10 13:37:53 CST 2023 on pts/0
Starting nodemanagers
Last login: Fri Mar 10 13:38:12 CST 2023 on pts/0
我們發(fā)現(xiàn)HDFS集群和YARN集群的角色都啟動起來了,然后我們試驗一下示例的單詞計數(shù):
cd /root/soft/hadoop-3.3.4/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-3.3.4.jar pi 2 4
最后執(zhí)行成功出來計算結果就OK了卿堂,總體來說搭建過程和集群的搭建比較類似束莫,不再贅述。