為什么要搭建單機(jī)環(huán)境的Hadoop?
- 以最小化的成本學(xué)習(xí)和測試Hadoop;
- 搭建基于Hadoop的上層應(yīng)用,比如單機(jī)Spark環(huán)境需要先擁有單機(jī)的Hadoop;
如果需要搭建分布式集群環(huán)境的Hadoop環(huán)境,請參考另外一篇:Hadoop3.x集群安裝教程 - 簡書 (jianshu.com)
一、準(zhǔn)備工作
首先從官網(wǎng)下載好Linux的JDK和Hadoop,Apache的軟件可以從國內(nèi)鏡像下載,比較快。
然后在阿里云上購買一臺(tái)1C2G Linux CentOS7.5 X64系統(tǒng)的云服務(wù)器(172.23.24.28),然后在其上安裝好JDK,假設(shè)存放和解壓目錄都在/root/soft目錄下。
#進(jìn)入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
#驗(yàn)證
[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配置
假設(shè)我們Hadoop的壓縮包也是在/root/soft目錄下,執(zhí)行Hadoop的配置工作如下:
#進(jìn)入目錄
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
#設(shè)置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中的配置:
<!-- 設(shè)置默認(rèn)使用的文件系統(tǒng) Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系統(tǒng) -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://172.23.24.28:8020</value>
</property>
<!-- 設(shè)置Hadoop本地保存數(shù)據(jù)路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/data/hadoop</value>
</property>
<!-- 設(shè)置HDFS web UI用戶身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 用戶代理設(shè)置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系統(tǒng)垃圾桶保存時(shí)間 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
然后修改hdfs-site.xml中的內(nèi)容:
<!-- 設(shè)置SecondNameNode進(jìn)程運(yùn)行機(jī)器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>172.23.24.28:9868</value>
</property>
然后再修改mapred-site.xml配置文件:
<!-- 設(shè)置MR程序默認(rèn)運(yùn)行模式: yarn集群模式 local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程序歷史服務(wù)地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>172.23.24.28:10020</value>
</property>
<!-- MR程序歷史服務(wù)器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:
<!-- 設(shè)置YARN集群主角色運(yùn)行機(jī)器位置 -->
<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>
<!-- 是否將對容器實(shí)施物理內(nèi)存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否將對容器實(shí)施虛擬內(nèi)存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 開啟日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 設(shè)置yarn歷史服務(wù)器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://172.23.24.28:19888/jobhistory/logs</value>
</property>
<!-- 歷史日志保存的時(shí)間 7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
然后再修改workers配置文件:
172.23.24.28
最后一步,我們需要開通到本機(jī)的ssh免密連接服務(wù):
# 生成公鑰密鑰,全部回車下一步即可
ssh-keygen -t rsa
ssh-keygen -t dsa
ssh-copy-id 172.23.24.28
# 輸入登錄密碼即可
# 然后可以ssh自己試試是否為免密登錄了
三、啟動(dòng)Hadoop
首次啟動(dòng)Hadoop集群的時(shí)候,我們需要進(jìn)行Namenode格式化:
hdfs namenode -format
然后就可以一鍵啟動(dòng)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集群的角色都啟動(dòng)起來了,然后我們試驗(yàn)一下示例的單詞計(jì)數(shù):
cd /root/soft/hadoop-3.3.4/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-3.3.4.jar pi 2 4
最后執(zhí)行成功出來計(jì)算結(jié)果就OK了,總體來說搭建過程和集群的搭建比較類似,不再贅述。