Hadoop安装配置
1.虚拟机环境准备
安装三台虚拟机
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld.service
创建操作用户
useradd hduser
passwd hduser
# 编辑文件
vim /etc/sudoers
添加 hduser ALL=(ALL) NOPASSWD:ALL
要放到%wheel这行下面
%wheel ALL=(ALL) ALL
hduser ALL=(ALL) NOPASSWD:ALL
修改主机名称
# 三台主机分别 hadoop1 hadoop2 hadoop3
vim /etc/hostname
安装JDK1.8
在/opt目录下创建文件夹,并修改所属主和所属组
# 在/opt目录下创建module、software文件夹
[root@hadoop1 ~]# mkdir /opt/module
[root@hadoop1 ~]# mkdir /opt/software
# 修改module、software文件夹的所有者和所属组均为hduser用户
[root@hadoop1 ~]# chown hduser:hduser /opt/module
[root@hadoop1 ~]# chown hduser:hduser /opt/software
# 查看module、software文件夹的所有者和所属组
[root@hadoop1 opt]# ll
总用量 0
drwxr-xr-x. 4 hduser hduser 46 2月 2 21:48 module
drwxr-xr-x. 2 hduser hduser 33 2月 2 21:31 software
分别配置 Linux 克隆机主机名称映射 hosts 文件,打开/etc/hosts
vim /etc/hosts
如下了内容
192.168.2.111 hadoop1
192.168.2.112 hadoop2
192.168.2.113 hadoop3
2.无密钥配置
切换用户
su hduser
# 在hadoop1中生成公钥私钥(然后敲(三个回车)
ssh-keygen -t rsa
# 在hadoop1中将公钥拷贝到要免密登录的目标机器上
# 注意自己也需要分发,如当前是 hadoop1 也需要 分发 hadoop1
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
# 查看是否免密设置成功,三台机器分别执行,如下图为设置成功
cat /home/mitchell/.ssh/authorized_keys
注意
:
还需要在 hadoop1 上采用 root 账号,配置一下无密登录到 hadoop1、hadoop2、 hadoop3 服务器上;
还需要在 hadoop1 上采用 hduser 账号配置一下无密登录到 hadoop1、hadoop2、 hadoop3 服务器上。
还需要在 hadoop2 上采用 hduser 账号配置一下无密登录到 hadoop1、hadoop2、 hadoop3 服务器上。
还需要在 hadoop3 上采用 hduser 账号配置一下无密登录到 hadoop1、hadoop2、 hadoop3 服务器上。
1.进入hadoop安装包目录 并解压到/opt/module/
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/module/
配置环境变量
# HADOOP
export HADOOP_HOME=/opt/module/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
vim
3.Hadoop相关配置
3.0 集群规划
hadoop1:NameNode、DataNode、 NodeManager
hadoop2:DataNode、 ResourceManager、NodeManager
hadoop3:SecondaryNameNode、DataNode、 NodeManager
注意:
NameNode和SecondaryNameNode不要安装在同一台服务器
ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上
3.1 core 配置
cd /opt/module/hadoop-3.3.4/etc/hadoop/
vim core-site.xml
<configuration>
<!-- 指定 NameNode 的内部通讯地址,这里推荐使用 8020 端口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8020</value>
</property>
<!-- 指定数据储存目录,默认是在 /tmp 路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.3.4/data</value>
</property>
<!-- 指定 hdfs 网页登入的静态用户 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hduser</value>
</property>
</configuration>
3.2 Hdfs配置
cd /opt/module/hadoop-3.3.4/etc/hadoop/
vim hdfs-site.xml
<configuration>
<!-- 指定 NameNode 的 WEB 访问地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:9870</value>
</property>
<!-- 2NN WEB 访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:9868</value>
</property>
</configuration>
3.3 yarn配置
cd /opt/module/hadoop-3.3.4/etc/hadoop/
vim yarn-site.xml
<configuration>
<!-- 指定 MR 走的 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManger 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
<!-- 指定 类路径 -->
<property>
<name>yarn.application.classpath</name>
<value>/opt/module/hadoop-3.3.4/etc/hadoop:/opt/module/hadoop-3.3.4/share/hadoop/common/lib/*:/opt/module/hadoop-3.3.4/share/hadoop/common/*:/opt/module/hadoop-3.3.4/share/hadoop/hdfs:/opt/module/hadoop-3.3.4/share/hadoop/hdfs/lib/*:/opt/module/hadoop-3.3.4/share/hadoop/hdfs/*:/opt/module/hadoop-3.3.4/share/hadoop/mapreduce/*:/opt/module/hadoop-3.3.4/share/hadoop/yarn:/opt/module/hadoop-3.3.4/share/hadoop/yarn/lib/*:/opt/module/hadoop-3.3.4/share/hadoop/yarn/*</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志聚集服务地址,注入到历史服务器 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop1:19888/jobhistory/logs</value>
</property>
<!-- 日志的保留天数(单位秒) -->
<property>
<name>yarn.log-aggregation-seconds</name>
<value>604800</value>
</property>
</configuration>
3.4 mapred 配置
cd /opt/module/hadoop-3.3.4/etc/hadoop/
vim mapred-site.xml
<configuration>
<!-- 指定 MR 程序运行在 yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器内部地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<!-- 历史服务器 WEB 地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
</configuration>
3.5 worker 配置
vim workers
# 加入以下内容
hadoop1
hadoop2
hadoop3
4.群起集群
如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode(注意:格式
化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找 不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式
化。)
# 【hadoop1】初始化,只需要执行一次,后续可以直接启动
hdfs namenode -format
# 【hadoop1】启动 和 关闭 hdfs
start-dfs.sh
stop-dfs.sh
# 【hadoop2】启动 和 关闭 yarn
start-yarn.sh
stop-yarn.sh
# 【hadoop1】启动 和关闭 历史服务器
mapred --daemon start historyserver
mapred --daemon stop historyserver
2.2.5集群崩溃处理方法
rm -rf data/ logs/
hdfs namenode -format
sbin/start-dfs.sh