hadood centos7集群搭建

文章目录

hadood centos7集群搭建

系统环境:CentOS-7-x86_64-DVD-2009.iso
hadoop版本:hadoop-3.1.3
jdk:1.8

1 模板虚拟机环境准备

1.1 安装epel-release

相当于一个软件仓库

 yum install -y epel-release 

1.2 linux 安装的是最小系统则安装一下插件

# net-tool:工具包集合,包含ifconfig等命令 
yum install -y net-tools
# vim:编辑器
yum install -y vim 

1.3 关闭防火墙,关闭防火墙开机自启

# 关闭防火墙
systemctl stop firewalld
# 关闭防火墙开机自启
systemctl disable firewalld.service 

1.4 创建一个用户develop

# 创建用户
useradd develop
# 设置develop用户的密码
passwd develop
...设置密码操作

1.5 配置develop用户具有root权限,方便后期加sudo执行root权限的命令

  • 修改文件
# 系统用户权限配置文件
vim /etc/sudoers
  • 编辑
## Allow root to run any commands anywhere 
root ALL=(ALL) ALL 
## Allows people in group wheel to run all commands 
%wheel ALL=(ALL) ALL 
## 添加配置
develop ALL=(ALL) NOPASSWD:ALL

注意:develop 这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了develop 具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以develop 要放到%wheel这行下面。

1.6 在/opt目录下创建文件夹,并修改所属主和所属组

[root@hadoop100 opt]# mkdir module
[root@hadoop100 opt]# mkdir software
[root@hadoop100 opt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 98 00:33 module
drwxr-xr-x. 2 root root 6 98 00:33 software
[root@hadoop100 opt]# chown develop:develop /opt/module       
[root@hadoop100 opt]# chown develop:develop /opt/software/
[root@hadoop100 opt]# ll
总用量 0
drwxr-xr-x. 2 develop develop 6 98 00:33 module
drwxr-xr-x. 2 develop develop 6 98 00:33 software

1.7 卸载虚拟机自带的JDK

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 
  • rpm -qa:查询所安装的所有rpm软件包
  • grep -i:忽略大小写
  • xargs -n1:表示每次只传递一个参数
  • rpm -e –nodeps:强制卸载软件

1.8 重启虚拟机

reboot

2 克隆虚拟机

2.1 克隆

克隆三台hadoop,分别修改静态ip以及服务器名称,如下:
192.168.11.100 hadoop100
192.168.11.200 hadoop200
192.168.11.201 hadoop201

3 hadoop100-安装jdk

3.1 下载

jdk:官网下载
在这里插入图片描述

3.2 上传解压环境变量配置

  1. 上传解压
# 1.上传至指定目录
# 2.解压
[develop@hadoop100 software]$ tar -zxvf jdk-8u301-linux-x64.tar.gz -C /opt/module/
[develop@hadoop100 module]$ ls
jdk1.8.0_301  jdk-8u301-linux-x64.tar.gz
  1. 配置环境变量
# 1. 在/etc/proile.d/目录下创建my_jdk.sh,并编辑
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_301
export PATH=$PATH:$JAVA_HOME/bin
# 2. 重新加载
source /etc/profile
# 3. java -version 验证是否生效
[develop@hadoop100 jdk1.8.0_301]$ java -version
java version "1.8.0_301"

4 hadoop100-安装hadoop

4.1 下载

下载

在这里插入图片描述

4.2 上传解压环境变量配置

  1. 上传解压
#1. 上传至指定目录
#2. 解压
[develop@hadoop100 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
[develop@hadoop100 module]$ ls
hadoop-3.1.3  jdk1.8.0_301
  1. 环境变量配置
# 1. 在/etc/proile.d/目录下创建my_hadoop_evn.sh,并编辑
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# 2. 重新加载
source /etc/profile
# 3. 查看是否生效
[develop@hadoop100 /]$ hadoop
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class

  OPTIONS is none or any of:
  ...

5 本地workCount执行测试

# 1. 创建目录
mkdir mkInput
# 2. 在mkInput目录下创建work.txt文件,并输入单词
[develop@hadoop100 hadoop-3.1.3]$ cd mkInput/
[develop@hadoop100 mkInput]$ ll
总用量 4
-rw-rw-r--. 1 develop develop 49 99 00:54 work.txt
[develop@hadoop100 mkInput]$ more work.txt 
xiaoxiao
kaka
kafka
java kafka
develop xiaoxiaio
# 3. 使用官网提供的jar执,确保输出文件夹不存在mkOutput
[develop@hadoop100 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount mkInput mkOutput
...
2021-09-09 01:03:28,767 INFO mapred.LocalJobRunner: Finishing task: attempt_local399259649_0001_r_000000_0
2021-09-09 01:03:28,767 INFO mapred.LocalJobRunner: reduce task executor complete.
2021-09-09 01:03:29,228 INFO mapreduce.Job: Job job_local399259649_0001 running in uber mode : false
2021-09-09 01:03:29,229 INFO mapreduce.Job:  map 100% reduce 100%
2021-09-09 01:03:29,230 INFO mapreduce.Job: Job job_local399259649_0001 completed successfully
...
# 4. 查看mkOutput下的结果文件
[develop@hadoop100 hadoop-3.1.3]$ cd mkOutput/
[develop@hadoop100 mkOutput]$ ll
总用量 4
-rw-r--r--. 1 develop develop 55 99 01:03 part-r-00000
-rw-r--r--. 1 develop develop  0 99 01:03 _SUCCESS

6 集群服务器免密访问配置

https://blog.csdn.net/qq_27242695/article/details/120236642

7 hadoop 集群配置(重点)

7.1 集群部署规划

hadoop100hadoop200hadoop300
hdfsNameNode,DataNodeDataNodeSecondaryNameNode ,DataNode
yarnNodeManagerResourceManager ,NodeManagerNodeManager

注意

  1. NameNode和SecondaryNameNode不要安装在同一台服务器
  2. ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
  3. 集群搭建最好至少三台服务器

7.2 配置文件说明

  1. 默认配置文件
    在这里插入图片描述

  2. 自定义配文件
    core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

7.3 集群自定义配置

  1. 配置文件目录在hadoop解压路径
  2. hadoop100,hadoop200,hadoop300分別做一下文件配置(只需要配置一台,使用xsync同步到其他服务器)
# 例
/opt/module/hadoop-3.1.3/etc/hadoop
7.3.1 core-site.xml
  1. hadoop100 配置NameNode
  2. 配置hdf文件存储路径
  3. 配置静态操作用户(后续网页才有权限操作)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
 <!-- 指定NameNode的地址 -->  
 <property>  
   <name>fs.defaultFS</name>  
   <value>hdfs://hadoop100:8020</value>  
 </property>   

 <!-- 指定hadoop数据的存储目录 -->  
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/module/hadoop-3.1.3/data</value>  
 </property>   

 <!-- 配置HDFS网页登录使用的静态用户为develop -->
 <property>
   <name>hadoop.http.staticuser.user</name>
   <value>develop</value>
 </property> 
</configuration>
7.3.2 hdfs-site.xml
  1. hadoop300配置SecondaryNameNode
  2. 配置hdfs网页端访问地址: hadoop300:9870
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

 <!-- (SecondaryNameNode)2nn web端访问地址-->  
 <property>  
   <name>dfs.namenode.secondary.http-address</name>  
   <value>hadoop300:9868</value>  
 </property>

 <!-- (NameNode)nn web端访问地址-->  
 <property>  
    <name>dfs.namenode.http-address</name>  
        <value>hadoop100:9870</value>  
 </property>  

</configuration>
7.3.3 yarn-site.xml
  1. hadoop200配置ResourceManager
  2. 设置mapperReduce协议(mapreduce_shuffle)官方推荐
  3. 配置一些环境变量,解决3.1.3版本小bug
<?xml version="1.0"?>
<configuration>

<!-- Site specific YARN configuration properties -->

  <!-- 指定ResourceManager的地址-->  
  <property>  
    <name>yarn.resourcemanager.hostname</name>
        <value>hadoop200</value>  
  </property>
  
    <!-- 指定MR走shuffle 官网推荐 -->  
  <property>  
    <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value>  
  </property> 
  
  <!-- 环境变量的继承,解决3.1.3一些小bug --> 
  <property>  
    <name>yarn.nodemanager.env-whitelist</name>  
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>  
  </property> 
  
</configuration>
7.3.4 mapred-site.xml
  1. 配置指定MapReduce程序运行在Yarn上
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
 
  <!-- 指定MapReduce程序运行在Yarn上 -->  
  <property>  
    <name>mapreduce.framework.name</name>  
        <value>yarn</value>  
  </property>

</configuration>
7.3.5 works集群配置

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

[develop@hadoop100 hadoop]$ vim workers 
hadoop100
hadoop200
hadoop300
7.3.6 启动集群
7.3.6.1 集群第一次启动需要格式化
  1. 如果集群是第一次启动,需要在配置NameNode(博主:hadoop100)节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

  2. NameNode 格式换指令

hdfs namenode -format
7.3.6.1 启动HDFS
# hadoop 解压路径/opt/module/hadoop-3.1.3
[develop@hadoop100 hadoop-3.1.3]$ sbin/start-dfs.sh
7.3.6.2 启动yarn
# hadoop 解压路径/opt/module/hadoop-3.1.3
[develop@hadoop100 hadoop-3.1.3]$ sbin/start-yarn.sh
7.3.6.3 查看网页
  1. Web端查看HDFS的NameNode:http://hadoop100:9870
    在这里插入图片描述

  2. Web端查看YARN的ResourceManager :http://hadoop200:8088
    在这里插入图片描述

7.4 集群基本操作

7.4.1 基本指令
# 上传文件到hdfgs
hadoop fs -mkdir 文件全路径
# 文件上传
hadoop fs -put 上传文件路径 上传至服务器路径
# 文件下载
hadoop fs -get hdf服务器文件路径 本地服务器路径
7.4.2 dataNode 单节点启动
[develop@hadoop300 current]$ hdfs --daemon start datanode

7.5 配置历史job服务器

7.5.1 mapred-site.xml 配置
 <!-- 历史服务器端地址,配置hadoop100 --> 
 <property>  
   <name>mapreduce.jobhistory.address</name>  
   <value>hadoop100:10020</value> 
 </property>  
 <!-- 历史服务器web端地址 --> 
 <property>  
   <name>mapreduce.jobhistory.webapp.address</name>  
   <value>hadoop100:19888</value> 
 </property> 
7.5.2 xsync 分发

分发到hadoop200,hadoop300

7.5.3 启动/关闭历史服务器
# 在hadoop100 服务器上启动
[develop@hadoop100 hadoop]$  mapred --daemon start historyserver
# 关闭
[develop@hadoop100 hadoop]$  mapred --daemon stop historyserver
7.5.4 查看历史服务器

http://hadoop100:19888/jobhistory
在这里插入图片描述

7.6 配置日志的聚集

  1. 日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
  2. 日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
  3. 注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。
7.6.1 yarn-site.xml 配置
  <!-- 开启日志聚集功能 --> 
  <property>  
    <name>yarn.log-aggregation-enable</name>  
	<value>true</value> 
  </property> 
  <!-- 设置日志聚集服务器地址 hadoop100 --> 
  <property>  
    <name>yarn.log.server.url</name>  
	<value>http://hadoop100:19888/jobhistory/logs</value> 
  </property> 
  <!-- 设置日志保留时间为7天 --> 
  <property>  
    <name>yarn.log-aggregation.retain-seconds</name>  
	<value>604800</value> 
  </property>
7.6.2 xsync分发

分发给hadoop200,hadoop300

7.6.3 重启
  • 关闭流程
  1. historyserver
  2. yarn
  3. hdfs
  • 重启流程
  1. hdfs
  2. yarn
  3. historyserver
7.6.4 访问

http://hadoop100:19888/jobhistory
在这里插入图片描述

8 集群启动与停止(重点)

当生产存在好几十台服务器,需要使用脚本进行集群的启动与停止

8.1 准备

每台服务器需要配置ssh免密登录
https://blog.csdn.net/qq_27242695/article/details/120236642

8.2 编写Hadoop集群常用脚本:myhadoop.sh

Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh

  1. 在用户bin目录下创建myhadoop.sh
[develop@hadoop100 bin]$ cd /home/develop/bin/
[develop@hadoop100 bin]$ vim myhadoop.sh
  1. 编写脚本
#!/bin/bash  
if [ $# -lt 1 ]; then  
  echo "No Args Input..."  
  exit ; 
fi  
case $1 in 
"start")  
  echo " =================== 启动 hadoop集群 ==================="   
  echo " --------------- 启动 hdfs ---------------"  
  ssh hadoop100 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"  
  echo " --------------- 启动 yarn ---------------"
  ssh hadoop200 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"  
  echo " --------------- 启动 historyserver ---------------"  
  ssh hadoop100 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver" 
;; 
"stop")  
  echo " =================== 关闭 hadoop集群 ==================="   
  echo " --------------- 关闭 historyserver ---------------"  
  ssh hadoop100 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"  
  echo " --------------- 关闭 yarn ---------------"  
  ssh hadoop200 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"  
  echo " --------------- 关闭 hdfs ---------------"  
  ssh hadoop100 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh" 
;; 
*)  
echo "Input Args Error..." 
;; 
esac  
  1. myhadoop.sh 设为可执行脚本
[develop@hadoop100 bin]$ chmod +x myhadoop.sh
  1. 启停
# 启动
myhadoop.sh start

# 关闭
myhadoop.sh stop

8.3 查看三台服务器Java进程脚本:jpsall.sh

#!/bin/bash  
for host in hadoop100 hadoop200 hadoop300
do
  echo =============== $host ===============  
  ssh $host jps
done

在这里插入图片描述

9. 其他参数设置

9.1 CheckPoint时间设置 (hdfs-default.xml)

  1. 通常情况下,SecondaryNameNode每隔一小时执行一次
<property>  
  <name>dfs.namenode.checkpoint.period</name>  
  <!-- 单位s -->
  <value>3600s</value> 
</property> 
  1. 一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次
<property>
  <name>dfs.namenode.checkpoint.txns</name>  
  <value>1000000</value> 
  <description>操作动作次数</description> 
</property>  

<property>  
  <name>dfs.namenode.checkpoint.check.period</name>  
  <value>60s</value> 
  <description> 1分钟检查一次操作次数</description> 
</property>

9.2 dataNode 掉线时限参数设置

  1. 原理图

在这里插入图片描述

  1. hdfs-site.xml 配置文件
<property>  
  <name>dfs.namenode.heartbeat.recheck-interval</name>  
  <!--单位为毫秒-->
  <value>300000</value> 
</property>  

<property>  
  <name>dfs.heartbeat.interval</name> 
  <!--单位为秒--> 
  <value>3</value> 
</property> 

10 相关端口说明

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值