为什么要搭建单机环境的Hadoop?
- 以最小化的成本学习和测试Hadoop;
- 搭建基于Hadoop的上层应用,比如单机Spark环境需要先拥有单机的Hadoop;
如果需要搭建分布式集群环境的Hadoop环境,请参考另外一篇:Hadoop3.x集群安装教程 - (jianshu.com)
一、准备工作
首先从官网下载好Linux的JDK和Hadoop,Apache的软件可以从国内镜像下载,比较快。
然后在阿里云上购买一台1C2G Linux CentOS7.5 X64系统的云服务器(172.23.24.28),然后在其上安装好JDK,假设存放和解压目录都在/root/soft
目录下。
#进入JDK所在目录
cd /root/soft
#解压
tar -zxvf jdk-8u65-linux-x64.tar.gz
#配置环境变量
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
目录下,执行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环境变量
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
中的配置:
fs.defaultFS
hdfs://172.23.24.28:8020
hadoop.tmp.dir
/root/data/hadoop
hadoop.http.staticuser.user
root
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*
fs.trash.interval
1440
然后修改hdfs-site.xml
中的内容:
dfs.namenode.secondary.http-address
172.23.24.28:9868
然后再修改mapred-site.xml
配置文件:
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
172.23.24.28:10020
mapreduce.jobhistory.webapp.address
172.23.24.28:19888
yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.map.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.reduce.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
然后再修改yarn-site.xml
:
yarn.resourcemanager.hostname
172.23.24.28
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-check-enabled
false
yarn.log-aggregation-enable
true
yarn.log.server.url
http://172.23.24.28:19888/jobhistory/logs
yarn.log-aggregation.retain-seconds
604800
然后再修改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
我们发现HDFS集群和YARN集群的角色都启动起来了,然后我们试验一下示例的单词计数:
cd /root/soft/hadoop-3.3.4/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-3.3.4.jar pi 2 4
最后执行成功出来计算结果就OK了,总体来说搭建过程和集群的搭建比较类似,不再赘述。