目录
[三、集群启动 只需在hadoop01上操作](#三、集群启动 只需在hadoop01上操作)
[编辑 2、启动集群](#编辑 2、启动集群)
[编辑 3、查看](#编辑 3、查看)
[编辑 4、关闭集群](#编辑 4、关闭集群)
[编辑 2、解决方法](#编辑 2、解决方法)
一、环境准备
1、准备三台服务器
115.120.227.194
123.60.154.232
36.111.173.249
2、给三台主机分别配置主机名
bash
#第一台机器
hostnamectl set-hostname hadoop01
#第二台机器
hostnamectl set-hostname hadoop02
#第三台机器
hostnamectl set-hostname hadoop03
3、给三台服务器配置域名,三台配置一样的
bash
#打开配置文件
vim /etc/hosts
#文件中添加以下内容
115.120.227.194 hadoop01
123.60.154.232 hadoop02
36.111.173.249 hadoop03
#保存文件
:wq!
4、关闭防火墙
sudo systemctl stop firewalld
5、创建用户和用户组,三台配置一样的
bash
#创建hadoop用户组
groupadd hadoop
#创建hadoop用户,并归属于hadoop用户组
useradd -m -g hadoop hadoop
#设置hadoop用户密码
passwd hadoop
6、创建安装目录
bash
mkdir csn/data
cd csn
chown -R hadoop:hadoop data
#后续所有操作均使用hadoop用户
su - hadoop
7、设置免密登录,三台机器都要执行下面的步骤
bash
cd /home/hadoop/.ssh
ssh-keygen -t rsa
#输入3次回车
#拷贝当前机器ssh公钥信息至另外两台虚拟机
ssh-copy-id hadoop01 #hadoop01需要拷贝至自己机器,不然hdfs-start.sh报错
ssh-copy-id hadoop02
ssh-copy-id hadoop03
8、三台机器安装jdk
bash
# 上传jdk安装包并解压
tar -zxvf jdk-8u161-linux-x64.tar.gz
#配置环境变量
vi ~/.bashrc
#添加以下内容
export JAVA_HOME=/csn/data/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
#生效
source ~/.bashrc
二、hadoop安装
1、环境配置
bash
#1、上传安装包并解压 hadoop-3.3.5.tar.gz
tar -zxvf hadoop-3.3.5.tar.gz
#2、配置集群地址
cd /csn/data/hadoop-3.3.5/etc/hadoop
vi workers
#添加以下内容
hadoop01
hadoop02
hadoop03
#保存文件
#3 vi hadoop-env.sh
export JAVA_HOME=/csn/data/jdk1.8.0_161
export HADOOP_HOME=/csn/data/hadoop-3.3.5
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
2、配置hadoop配置文件
XML
#文件 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为"你想要进行删除操作的用户名" -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
</configuration>
#hdfs-site.xml文件
<configuration>
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/csn/data/nn</value>
</property>
<property>
<name>dfs.namenode.hosts</name>
<value>hadoop01,hadoop02,hadoop03</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/csn/data/dn</value>
</property>
</configuration>
#yarn-site.xml文件
<configuration>
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop01:19888/jobhistory/logs</value>
<description>历史服务器路径</description>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>hadoop01:8089</value>
<description>代理服务器主机和端口</description>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
<description>开始日志聚合</description>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
<description>程序日志HDFS的存储路径</description>
</property>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
<description>ResoucesManager的所在节点</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
<description>选择公平调度器</description>
</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.nodemanager.local-dirs</name>
<value>/csn/data/nm-local</value>
<description>NodeManager中间数据本地存储路径</description>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/csn/data/nm-log</value>
<description>NodeManager数据日志本地存储路径</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>为Mapreduce程序开启Shuffle服务</description>
</property>
<!-- 设置yarn历史日志保存时间 7天 -->
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>302400</value>
<description>Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.</description>
</property>
</configuration>
#mapred-site.xml 文件
<configuration>
<!-- 设置MR程序默认运行模式,yarn集群模式,local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程序历史服务地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<!-- MR程序历史服务web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
<!-- yarn环境变量 -->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- map环境变量 -->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- reduce环境变量 -->
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
</configuration>
3、配置环境变量
bash
vi ~/.bashrc
export HADOOP_HOME=/csn/data/hadoop-3.3.5
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
source ~/.bashrc
4、创建存储路径
#创建NameNode文件目录(只需在hadoop01上创建)
mkdir -p /csn/data/nn
#创建DataNode文件目录(3台均需创建)
mkdir -p /csn/data/dn
三、集群启动 只需在hadoop01上操作
1、初始化集群
hadoop namenode -format
2、启动集群
#启动hdfs集群
#启动yarn集群
3、查看
4、关闭集群
#一键关闭hdfs集群
#一键关闭yarn集群
四、安装问题
1、启动的时候,namenode启动失败
2、解决方法
将hadoop01中的hosts配置,hadoop01的ip修改为内网地址。之前是公网地址