Hadoop运行的三种模式
单机模式:只有一个JVM进程数,只运行在一台机器上(作测试用);
伪分布模式:有多个JVM进程数,运行在同一台机器上;
分布式(完全分布式)模式:多个JVM进程数,运行在三台或三台以上的机器上。
说明:
以下进入Hadoop集群的搭建,从单机模式到完全分布式,都是在root用户下进行,hadoop的主目录(安装路径)为/opt/hadoop-2.7.3,在配置hadoop文件时需注意文件的路径。如果在普通用户下,要注意权限、环境变量等,记得使用sudo命令。
一、Hadoop单机模式的搭建
1、创建用户
useradd hadoop
passwd hadoop (直接输入两次密码即可)
注意:我都是用root用户操作,故这一步可以不用切换到hadoop用户。
2、网络配置、修改主机名、配置网络映射
网络配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0
需要配置IP地址、子网掩码、网关、DNS域名解析服务器
vi /etc/sysconfig/network-scripts/ifcfg-eth0
注意:CentOS7和8里面,网络配置文件为:/etc/sysconfig/network-scripts/ifcfg-ens33
主机名配置文件 /etc/sysconfig/network,修改HOSTNAME=主机名
vi /etc/sysconfig/network
将HOSTNAME=localhost.localdomain修改为HOSTNAME=BigData01
注意:CentOS7或8,主机名配置文件为:/etc/hostname,直接删除以前的,添加主机名
配置网络映射 /etc/hosts
vi /etc/hosts
在最后一行添加 ip地址 主机名 如:182.168.182.66 BigData01
重启网络服务:
service network restart
3、安装ssh服务
查看是否安装ssh
rpm -qa | grep ssh
apt install rpm
如果有openssh-clients、openssh-server,则不需要安装
如果没有,则需要安装,安装命令如下:
yum install -y openssh-clients openssh-server
apt install openssh-server
apt install openssh-client
启动ssh服务
service sshd start
start:开启、restart:重启、stop:关闭、status:状态
<!--
1. 安装SSH,配置SSH无密码登录
sudo apt-get install openssh-server
因为 ssh 默认禁止 root 用户访问,需要修改 sshd_config 文件中的 PermitRootLogin 数据为 yes,再重启sshd服务 ,重启命令:systemctl restart sshd.service
vi /etc/ssh/sshd_config
找到:
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
修改为:
PermitRootLogin yes
进入 ~/.ssh/ 目录,若不存在,需要执行一次 ssh localhost
cd ~/.ssh/
按四下回车
ssh-keygen -t rsa
授权
cat ./id_rsa.pub >> ./authorized_keys
使命令登陆本机:
ssh localhost 输入 yes
然后按提示输入主机密码,exit可退出当前主机
下一次连接就不用输入密码了
-->
4、防火墙的管理
service iptables start # 临时关闭防火墙
chkconfig iptables off # 永久关闭防火墙
start:开启、restart:重启、stop:关闭、status:状态
如果找不到iptables,可以执行:
yum install -y iptables # 在线安装、需要联网
注意: 如果上述命令不可用的情况,可使用以下命令执行关闭防火墙:
systemctl stop firewalld # 停止防火墙
systemctl mask firewalld # 重新启动防火墙
<!--
sudo ufw status: 查看防火墙状态,inactive是关闭状态,active是开启状态
sudo ufw enable:开启防火墙
sudo ufw default deny:启动默认防御,作用:关闭所有外部对本机的访问(本机访问外部正常)
sudo ufw disable:关闭防火墙
sudo ufw allow|deny [service]:禁用防火墙
-->
5、安装jdk
1 使用XShell 6或者secureCRT远程登录
2 上传JDK到/opt目录下,Windows-->Linux
3 查看Linux是否安装java jdk
rpm -qa | grep java
如果查询有其他java版本,则需要卸载
rpm -e --nodeps 包名
4 解压上传的jdk,解压到/opt目录下
tar -zxvf /opt/jdk-8u161-linux-x64.tar.gz -C /opt/
5 配置环境变量
vi /etc/profile
在这个文件最后添加如下两行:
export JAVA_HOME=/opt/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
6 使这个配置文件生效
source /etc/profile
7 验证
java -version
<!--
安装 OpenJDK 17
sudo apt update
sudo apt install openjdk-17-jre-headless # version 17.0.3+7-0ubuntu0.20.04.1
JAVA_HOME 环境变量
首先使用update-alternatives找到 Java 安装路径:
sudo update-alternatives --config java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
Java 安装路径,打开/etc/environment文件:
/** sudo nano /etc/environment
sudo vim /etc/environment
在文件的末尾,添加下面的行:
JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64/bin/java"
想要让修改在当前 shell 生效,你可以登出系统,再登入系统,或者运行下面的命令:
source /etc/environment
验证 JAVA_HOME 环境变量被正确设置:
echo $JAVA_HOME
配置环境变量
vi /etc/profile
在这个文件最后添加如下两行:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
使这个配置文件生效
source /etc/profile
验证
java -version
-->
6、安装hadoop
1 上传hadoop安装包到Linux下的/opt目录
2 解压安装包到/opt目录
tar -zxvf /opt/hadoop-2.7.3.tar.gz -C /opt/
3 配置环境变量
vi /etc/profile
在文件最后添加如下两行
export HADOOP_HOME=/opt/hadoop-2.7.3
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
这个是在Java的基础上配置的,故配置文件内有三行,如图:
使配置文件生效
source /etc/profile
4 验证
hadoop version
<!--
1、上传或下载hadoop-3.3.3.tar.gz
至目录 /usr/local/
官网下载:hadoop3.1.3
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz
2、解压
tar -zxvf hadoop-3.3.3.tar.gz
3、重命名
mv hadoop-3.3.3 hadoop
4、修改文件权限
sudo chown -R root /usr/local/hadoop
ls -l
cat /etc/group
5、进入hadoop目录
cd /usr/local/hadoop
6、验证hadoop版本
./bin/hadoop version
7、配置env文件 修改JDK路径
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
添加:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
配置环境变量
vi /etc/profile
在文件最后添加如下三行
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
使这个配置文件生效
source /etc/profile
验证
hadoop version
-->
7、验证hadoop版本
/usr/local/hadoop
./bin/hadoop version
8、配置env文件 修改JDK路径
cat /usr/local/hadoop/etc/hadoop/hadoop-env.sh
more /usr/local/hadoop/etc/hadoop/hadoop-env.sh
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
vi /usr/local/hadoop/etc/hadoop/mapred-env.sh
vi /usr/local/hadoop/etc/hadoop/yarn-env.sh
添加:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
Esc :wq 保存并退出
9、修改核心组件文件
vi /usr/local/hadoop/etc/hadoop/core-site.xml
配置里面添加:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
10、修改文件系统文件
vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml
配置里面添加:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:50700</value>
</property>
</configuration>
11、修改文件yarn文件
vi /usr/local/hadoop/etc/hadoop/yarn-site.xml
配置里面添加:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>ubuntu:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ubuntu</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>ubuntu:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>ubuntu:8030</value>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>ubuntu:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>ubuntu:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>ubuntu:8088</value>
</property>
</configuration>
12、修改文件mapreduce文件
vi /usr/local/hadoop/etc/hadoop/mapred-site.xml
配置里面添加:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
13、配置完成,执行 NameNode 的格式化
进入目录cd /usr/local/hadoop
格式化命令./bin/hdfs namenode -format
14、root用户启动hadoop需要的配置
在start-dfs.sh,stop-dfs.sh 两个文件顶部添加以下参数
vi /usr/local/hadoop/sbin/start-dfs.sh
vi /usr/local/hadoop/sbin/stop-dfs.sh
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh,stop-yarn.sh两个文件顶部添加以下参数
vi /usr/local/hadoop/sbin/start-yarn.sh
vi /usr/local/hadoop/sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
15、开启 NameNode 和 DataNode 守护进程
./sbin/start-dfs.sh
16、查看进程
安装插件:sudo apt install openjdk-17-jdk-headless
查看进程:jps
17、关机注意
关机前一定要关闭hadoop,不然下回启动会报错,需要重新格式化,数据就丢失了
关闭命令./sbin/stop-dfs.sh
下次启动 hadoop 时,不用NameNode 的初始化,
只需要运行 ./sbin/start-dfs.sh 就可以!