1. 基础环境准备
集群整体规划
三台服务器:
192.168.2.153
192.168.2.154
192.168.2.155
给三台服务器都添加hosts解析
192.168.2.153 centos-hadoop1
192.168.2.154 centos-hadoop2
192.168.2.155 centos-hadoop3
三台服务器都设置ssh免密登录,形成互免
[root@centos-hadoop1 mysoft]# ssh-keygen -t rsa -b 4096
执行如下命令,将公钥追加到远程服务器
[root@centos-hadoop1 mysoft]# ssh-copy-id centos-hadoop1
[root@centos-hadoop1 mysoft]# ssh-copy-id centos-hadoop2
[root@centos-hadoop1 mysoft]# ssh-copy-id centos-hadoop3
2. JDK部署
三台服务器都要安装jdk
[root@centos-hadoop1 mysoft]# tar -xf jdk-8u251-linux-x64.tar.gz -C /usr/local/
[root@centos-hadoop1 mysoft]# cat /etc/profile
……
export JAVA_HOME=/usr/local/jdk1.8.0_251
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
[root@centos-hadoop1 mysoft]# source /etc/profile
[root@centos-hadoop1 local]# java
用法: java [-options] class [args…]
(执行类)
或 java [-options] -jar jarfile [args…]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 "server" VM
默认 VM 是 server,
因为您是在服务器类计算机上运行。
-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 : 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>
设置系统属性
-verbose:[class|gc|jni]
启用详细输出
-version 输出产品版本并退出
……
3. Hadoop安装
在Hadoop官网下载包
在centos-hadoop1解压Hadoop包
[root@centos-hadoop1 mysoft]# tar -xf hadoop-3.3.6.tar.gz -C /usr/local/
[root@centos-hadoop1 local]# cd hadoop-3.3.6/
[root@centos-hadoop1 hadoop-3.3.6]# ll
总用量 88
drwxr-xr-x. 2 1000 1000 203 6月 18 17:08 bin
drwxr-xr-x. 3 1000 1000 20 6月 18 16:24 etc
drwxr-xr-x. 2 1000 1000 106 6月 18 17:08 include
drwxr-xr-x. 3 1000 1000 20 6月 18 17:08 lib
drwxr-xr-x. 4 1000 1000 288 6月 18 17:08 libexec
-rw-rw-r–. 1 1000 1000 24276 6月 14 08:16 LICENSE-binary
drwxr-xr-x. 2 1000 1000 4096 6月 18 17:08 licenses-binary
-rw-rw-r–. 1 1000 1000 15217 6月 10 07:41 LICENSE.txt
-rw-rw-r–. 1 1000 1000 29473 6月 10 07:41 NOTICE-binary
-rw-rw-r–. 1 1000 1000 1541 6月 10 07:33 NOTICE.txt
-rw-rw-r–. 1 1000 1000 175 6月 10 07:33 README.txt
drwxr-xr-x. 3 1000 1000 4096 6月 18 16:24 sbin
drwxr-xr-x. 4 1000 1000 31 6月 18 17:37 share
[root@centos-hadoop1 hadoop]# mkdir -p /data/hadoop/
[root@centos-hadoop1 hadoop]# chmod 777 /data/hadoop/
[root@centos-hadoop1 hadoop]# mkdir /data/hadoop/logs
3.1 修改配置文件
(1)配置workers文件
[root@centos-hadoop1 hadoop-3.3.6]# cd etc/hadoop/
[root@centos-hadoop1 hadoop]# cat workers
centos-hadoop1
centos-hadoop2
centos-hadoop3
表示集群有三个从节点
(2)配置hadoop-env.sh文件
[root@centos-hadoop1 hadoop]# cat hadoop-env.sh
……
export JAVA_HOME=/usr/local/jdk1.8.0_251
export HADOOP_HOME=/usr/local/hadoop-3.3.6
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_LOG_DIR=/data/hadoop/logs
(3)配置core-site.xml文件
#添加如下内容
<configuration>
<!--用于设置Hadoop的文件系统,由URI指定-->
<property>
<name>fs.defaultFS</name>
<!--用于指定NameNode地址在centos-hadoop1机器上-->
<value>hdfs://centos-hadoop1:9000</value>
</property>
<!—用于配置IO操作文件缓冲区大小 -->
<property>
<name> io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
(4)配置hdfs-site.xml文件
#添加如下内容
<configuration>
<property>
<!-- 指定HDFS的数量,不能超过DataNode节点数量 -->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<!-- NameNode web端访问地址 -->
<name>dfs.namenode.http-address</name>
<value>centos-hadoop1:9870</value>
</property>
<property>
<!-- secondary NameNode 所在主机的IP和端口 -->
<name>dfs.namenode.secondary.http-address</name>
<value>centos-hadoop3:50090</value>
</property>
<property>
<!-- hdfs文件系统默认创建文件权限设置 -->
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>
<property>
<!-- NameNode元数据的存储位置 -->
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/namenode</value>
</property>
<property>
<!-- NameNode运行哪些节点的DataNode连接 -->
<name>dfs.namenode.hosts</name>
<value>centos-hadoop1,centos-hadoop2,centos-hadoop3</value>
</property>
<property>
<!-- hdfs默认大小256MB -->
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<!-- NameNode处理的开发线程数 -->
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<!-- 从节点DataNode的数据存储目录 -->
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/datanode</value>
</property>
</configuration>
(5)配置mapred-site.xml文件
#添加如下内容
<configuration>
<!-- 指定MapReduce运行时的框架,这里指定在YARN上,默认在local -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(6)配置yarn-site.xml文件
#添加如下内容
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定YARN集群的管理者(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>centos-hadoop2</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(7)启停文件修改
配置sbin目录下的start-dfs.sh,stop-dfs.sh,添加启动用户
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
配置sbin目录下的start-yarn.sh,stop-yarn.sh,添加启动用户
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
(8)分发Hadoop文件
[root@centos-hadoop1 ~]# cd /usr/local/
[root@centos-hadoop1 local]# scp -r hadoop-3.3.6/* centos-hadoop2:/usr/local/hadoop-3.3.6/
[root@centos-hadoop1 local]# scp -r hadoop-3.3.6/* centos-hadoop3:/usr/local/hadoop-3.3.6/
3.2 配置环境变量
三台服务器都需要配置
[root@centos-hadoop1 ~]# cat /etc/profile
……
export HADOOP_HOME=/usr/local/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[root@centos-hadoop1 ~]# source /etc/profile
查看是否配置成功
[root@centos-hadoop1 ~]# hadoop version
Hadoop 3.3.6
Source code repository https://github.com/apache/hadoop.git -r 1be78238728da9266a4f88195058f08fd012bf9c
Compiled by ubuntu on 2023-06-18T08:22Z
Compiled on platform linux-x86_64
Compiled with protoc 3.7.1
From source with checksum 5652179ad55f76cb287d9c633bb53bbd
This command was run using /usr/local/hadoop-3.3.6/share/hadoop/common/hadoop-common-3.3.6.jar
3.3 在主节点格式化文件系统
[root@centos-hadoop1 hadoop-3.3.6]# hdfs namenode -format
……
INFO common.Storage: Storage directory /data/hadoop/namenode has been successfully formatted.
……
当看到如上信息,表示successfully formatted 格式化成功
4. Hadoop集群测试
启动集群,在节点上依次启动HDFS服务
[root@centos-hadoop1 sbin]# ./start-dfs.sh
[root@centos-hadoop2 sbin]# ./start-dfs.sh
[root@centos-hadoop3 sbin]# ./start-dfs.sh
使用jps命令查看进程
[root@centos-hadoop1 sbin]# jps
11159 NodeManager
11256 Jps
8745 NameNode
9097 DataNode
[root@centos-hadoop2 sbin]# jps
11252 Jps
8776 DataNode
10776 ResourceManager
10911 NodeManager
[root@centos-hadoop3 sbin]# jps
10932 NodeManager
8789 DataNode
11034 Jps
9069 SecondaryNameNode
5. 验证Hadoop是否配置成功
在浏览器中输入 http://192.168.2.153:9870,如下:
点击”Live Nodes”,如下:
出现如图所示,那么,Hadoop集群安装部署完成!