当前位置:   article > 正文

CentOS7搭建Hadoop集群(V3.3.4)

centos7搭建hadoop集群


本次安装Hadoop版本为3.3.4
安装规划(3台机器)

node01 :192.168.117.20     NameNode DataNode
node02 :192.168.117.21     DataNode
node03 :192.168.117.22     DataNode SecondaryNameNode
  • 1
  • 2
  • 3

一、准备工作

1、配置hostname

hostname分别为node01,node02,node03

# 三台机器分别执行
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

2、hosts映射

# 三台机器均要执行
vim /etc/hosts
192.168.117.20 node01
192.168.117.21 node02
192.168.117.22 node03
  • 1
  • 2
  • 3
  • 4
  • 5

3、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
  • 1
  • 2

4、同步时间

yum install ntpdate
ntpdate ntp5.aliyun.com
  • 1
  • 2

在这里插入图片描述

5、关闭selinux

vim /etc/selinux/config
修改为 SELINUX=disabled
  • 1
  • 2

在这里插入图片描述

6、配置ssh免密登陆

# 三台机器均执行一下命令
ssh-keygen -t rsa
# 将每台机器的公钥拷贝给每台机器
ssh-copy-id node01
ssh-copy-id node02
ssh-copy-id node03
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

测试
在这里插入图片描述

7、重启

reboot
  • 1

二、安装所需环境

1、jdk安装

# 三台机器均执行
cd /etc/profile.d
vim jdk.sh
# 写入内容
export JAVA_HOME=/opt/button/jdk
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
# 使配置生效
source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

验证

java -version
  • 1

在这里插入图片描述

2、hadoop安装

下载安装包
配置环境变量

# 三台机器均执行
vim /etc/profile.d/hadoop.sh
# 写入内容
export HADOOP_HOME=/opt/button/hadoop/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 使配置生效
source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

验证

hadoop version
  • 1

在这里插入图片描述
创建hadoop数据目录:

mkdir /opt/button/hadoop/data
cd /opt/button/hadoop
chmod -R 777 ./data/
  • 1
  • 2
  • 3

三、修改配置

配置位于hadoop解压目录etc/hadoop目录下,三台机器配置保持一致
在这里插入图片描述

hadoop-env.sh

vim hadoop-env.sh
# jdk修改为自己的路径
export JAVA_HOME=/opt/button/jdk
  • 1
  • 2
  • 3

在这里插入图片描述

注:相关配置具体说明可以查看官网

官网地址
在这里插入图片描述

core-site.xml

<!-- 指定HADOOP所使用的文件系统schema,NameNode的地址 -->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://node01:9000</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/button/hadoop/data</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
	<name>hadoop.http.staticuser.user</name>
	<value>root</value>
</property> 
<!-- 文件系统垃圾桶保存时间 -->
<property>
	<name>fs.trash.interval</name>
	<value>1440</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

hdfs-site.xml

<!-- HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
<!-- nn web端访问地址-->
<property>
    <name>dfs.namenode.http-address</name>
    <value>node01:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>node03:9868</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

mapred-site.xml

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>node01:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>node01:19888</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

yarn-site.xml

<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<!-- ResourceManager的地址 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node01</value>
</property>
<!-- 环境变量的继承 -->
<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>
<!--yarn单个容器允许分配的最大最小内存 -->
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
</property>
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>4096</value>
 </property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<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.application.classpath</name>
     <value>org.apache.hadoop.mapreduce.v2.app.MRAppMaster</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://node01:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

workers

vim workers
# 写入如下内容
node01
node02
node03
  • 1
  • 2
  • 3
  • 4
  • 5

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

四、初始化并启动

1、初始化

如果第一次启动集群需格式化NameNode,主节点操作(format首次初始化执行一次即可,后续如果执行除了会造成数据丢失,还会导致hdfs集群主从角色互不识别的问题,三思呀!!!)

hdfs namenode –format
  • 1

如果该命令格式化无效,可以试试如下命令

hadoop namenode -format
  • 1

格式化成功的样子如下所示即可
在这里插入图片描述

注:如果不是第一次,需要先执行stop-all.sh,然后删除data与logs中的文件再执行初始化命令,此操作不建议执行,可能会遇到很多问题。

2、启动

在node01节点上的sbin目录找到start-all.sh并执行即可
在这里插入图片描述
执行如下操作解决此问题

vim /etc/profile.d/my_env.sh
# 添加如下内容
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
# 使配置生效
source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

重新执行start-all.sh
在这里插入图片描述
查看启动的服务
在这里插入图片描述

3、相关说明

  • 这里执行start-all.sh会启动所有服务,如果只想启动自己所需要的服务,可以执行对应的脚本即可。
    比如启动hdfs可以执行start-dfs.sh即可。

在这里插入图片描述

  • 如果只想操作某个角色的进程,可以使用如下命令
# HDFS 
hdfs --daemon start namenode|datanode|secondarynamenode
hdfs --daemon stop namenode|datanode|secondarynamenode
# YARN
yarn --daemon start resourcemanager|nodemanager
yarn --daemon stop resourcemanager|nodemanager
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 如果启动过程没有那么顺利,我们可以通过查看日志来排查问题。当执行启动脚本时,会自动在hadoop目录下帮我们创建logs文件夹,我们可以在logs文件夹下查询对用的日志文件。
    在这里插入图片描述

4、Web页面

HDFS集群Web UI默认端口9870,ip则为namenode的IP地址
http://192.168.117.20:9870/
在这里插入图片描述
注:在windows上使用web ui上传文件时,由于没法识别node01,node02,node03,所以上传文件会失败,只需要在windows的hosts文件加上对应的解析就可以正常操作了

# C:\Windows\System32\drivers\etc
192.168.117.20 node01
192.168.117.21 node02
192.168.117.22 node03
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

Yarn集群WEB Ui默认端口8088,ip则为resourcemanager的IP地址
http://192.168.117.20:8088/
在这里插入图片描述

五、测试hdfs

hadoop fs -mkdir /hfile
hadoop fs -put input.txt /hfile
hadoop fs -ls /hfile
  • 1
  • 2
  • 3

在这里插入图片描述

六、Springboot整合Hdfs

Springboot整合hdfs-spring-boot-starter实现基本操作
Springboot整合hdfs-client实现基本操作

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/651049
推荐阅读
相关标签
  

闽ICP备14008679号