hadoop集群搭建

1.首先配置Linux集群

1.1首先关闭防火墙并且禁止开机启用防火墙

shell 复制代码
systemctl stop firewalld && systemctl disable firewalld

查看防火墙状态

shell 复制代码
firewall-cmd --state  

1.2关闭selinux

shell 复制代码
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && /usr/sbin/setenforce 0

记得重启配置生效

复制代码
reboot

查看se记得重启linux状态

shell 复制代码
sestatus

1.3各节点之间主机名互相解析分别修改3台主机名分别为node1、node2和node3,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。

设置主机名称 修改最后的一个hostname

shell 复制代码
hostnamectl set-hostname hostname

在这里我以高大帅的机器为例:

shell 复制代码
此次机器集群为				  42.51.78.160

​						   42.51.78.161

​						   42.51.78.162

​						   42.51.78.163
  • 或者使用如下命令操作修改主机名称:
shell 复制代码
vi /etc/hostname   #删除里面其他没有用的信息添加 我们的节点名称 node1

重启网络服务:

shell 复制代码
systemctl restart network.service

输入命令检测是否修改成功(修改为node1则成功):

shell 复制代码
hostname

其他两台机器改一下我们的hostname就行了 node2 node3(重复上面的操作)

1.4配置3台主机的主机表,在/etc/hosts中加入

复制代码
vim  /etc/hosts  #往后面添加如下数据节点信息 不要修改里面的已有信息
shell 复制代码
42.51.78.160 master
42.51.78.161 node1
42.51.78.162 node2
42.51.78.163 node3

其余的两台机器都是如此操作

1.5检测是否配置成功

shell 复制代码
ping node1 -c 3   # 只ping 3次就会停止,否则要按Ctrl+c中断ping命令 修改里面的节点名称查看是否ping通

1.6SSH无密码登录节点

以master为例,我们执行如下命令生成密匙:

shell 复制代码
#执行这条命令一直按回车即可:
ssh-keygen -t rsa
#master、node1、node2、node3中都执行下面这四条命令 需要输入各个机器对应的密码
ssh-copy-id -i master
ssh-copy-id -i node1
ssh-copy-id -i node2
ssh-copy-id -i node3
  • 其余的三台机器都执行1.6操作

1.7测试节点免密登陆

shell 复制代码
[root@node1 ~]# ssh node2
Last failed login: Sun Aug 16 12:45:43 CST 2020 from 106.13.215.17 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Sun Aug 16 12:44:35 2020 from node1

2.Hadoop安装及配置

2.1首先得有Java环境(最好是手动安装,不要yum安装)

下载安装包 jdk-8u141-linux-x64.tar.gz

2.1.1解压javajdk
shell 复制代码
tar -zxvf jdk-8u141-linux-x64.tar.gz
2.1.2配置全局变量
shell 复制代码
vim /etc/profile

复制以下三行到文件中,按esc退出编辑模式,输入:wq保存退出(这里的JAVA_HOME以自己实际的目录为准)

shell 复制代码
export JAVA_HOME=/root/apps/jdk1.8.0_141
export PATH=./$PATH:$JAVA_HOME/bin
2.1.3全局变量立即生效
shell 复制代码
source /etc/profile
2.1.4查看安装jdk是否成功
shell 复制代码
java -version
shell 复制代码
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

其他的机器自行远程拷贝

shell 复制代码
scp -r /root/apps/jdk1.8.0_141 node1:/root/apps

scp -r /root/apps/jdk1.8.0_141 node2:/root/apps

scp -r /root/apps/jdk1.8.0_141 node3:/root/apps

拷贝环境配置文件

shell 复制代码
scp -r /etc/profile node1:/etc

scp -r /etc/profile node2:/etc

scp -r /etc/profile node3:/etc

测试每个jdk环境

2.2安装Hadoop

2.2.1下载Hadoop安装包

http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

2.2.2上传Hadoop

在根目录下创建app目录

shell 复制代码
mkdir apps

使用工具上传文件到这个目录下面(我使用的是xftp)

2.2.3配置Hadoop

解压我们的安装包

shell 复制代码
tar -zxvf hadoop-3.2.1.tar.gz

配置我们的hadoop环境

修改hadoop-env.sh文件

shell 复制代码
vim apps/hadoop-3.2.1/etc/hadoop/hadoop-env.sh

添加信息

shell 复制代码
export JAVA_HOME=/root/apps/jdk1.8.0_141
export HADOOP_LOG_DIR=/root/data/hadoop_repo/logs/hadoop

检测我们的hadoop环境是否有问题

shell 复制代码
[root@master apps]# ./hadoop-3.2.1/bin/hadoop version
Hadoop 3.2.1
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842
Compiled by rohithsharmaks on 2019-09-10T15:56Z
Compiled with protoc 2.5.0
From source with checksum 776eaf9eee9c0ffc370bcbc1888737
This command was run using /root/apps/hadoop-3.2.1/share/hadoop/common/hadoop-common-3.2.1.jar

有的可能会报错,需要修改一下我们的jdk配置(这个错误只存在于我们的yum自动安装的openjdk)

shell 复制代码
ERROR: JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el6_9.x86_64 does not exist.
复制代码
vi /etc/profile   #把JAVA_HOME直接指定为我们的/usr
shell 复制代码
export JAVA_HOME=/usr
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

全局变量立即生效

shell 复制代码
source /etc/profile

检查jdk是否错误

shell 复制代码
java -version
2.2.3.1配置core-site.xml

注意fs.defaultFS属性中的主机名需要和你配置的主机名保持一致

shell 复制代码
cd /root/apps/hadoop-3.2.1
vim ./etc/hadoop/core-site.xml
#在core-site.xml 添加上我们的配置信息
xml 复制代码
<configuration>
     <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
     </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/data/hadoop_repo</value>
    </property>
</configuration>
2.2.3.2同样的,修改配置文件 hdfs-site.xml
shell 复制代码
vim ./etc/hadoop/hdfs-site.xml   #添加如下内容
xml 复制代码
<configuration>
    <!-- 副本数设置为3 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!-- 指定名称结点缓存数据的路径  -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/root/name</value>
    </property>
    <!-- 指定数据结点缓存数据的路径  -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/root/data</value>
    </property>
    <!-- 指定 hadoop 辅助名称节点的地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node1:50090</value>
    </property>
</configuration>
2.2.3.3修改mapred-site.xml
shell 复制代码
vim ./etc/hadoop/mapred-site.xml
xml 复制代码
<configuration>
    <!-- 指定以Yarn方式运行 -->
    <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>
</configuration>
2.2.3.4修改yarn-site.xml
复制代码
vim ./etc/hadoop/yarn-site.xml

<configuration>
    <!-- Reducer获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定启动YARN的ResourceManager的主机地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
</configuration>
2.2.3.5修改works
复制代码
vim ./etc/hadoop/workers

删除localhost添加如下内容

复制代码
master
node1
node2
node3
2.2.3.6修改启动脚本

修改start-dfs.shstop-dfs.sh这两个脚本文件在文件中前面都增加如下内容:

复制代码
[root@master hadoop-3.2.1]# vim ./sbin/start-dfs.sh 
[root@master hadoop-3.2.1]# vim ./sbin/stop-dfs.sh
shell 复制代码
HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

修改start-yarn.shstop-yarn.sh这两个文件在文件前面增加人如下内容:

复制代码
[root@master hadoop-3.2.1]# vim ./sbin/stop-yarn.sh 
[root@master hadoop-3.2.1]# vim ./sbin/start-yarn.sh 
shell 复制代码
YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root
拷贝我们配置好的文件到其他的主机下面
shell 复制代码
scp -r /root/apps/hadoop-3.2.1 node1:/root/apps
scp -r /root/apps/hadoop-3.2.1 node2:/root/apps
scp -r /root/apps/hadoop-3.2.1 node3:/root/apps
2.2.4配置完成后,执行 NameNode 的格式化:
shell 复制代码
./bin/hdfs namenode -format    #这个是在hadoop的安装目录下执行

启动成功的话,我们的root目录下会创建我们的hdpdata目录

并且显示

复制代码
2020-08-21 11:07:20,195 INFO common.Storage: Storage directory /root/name has been successfully formatted.

使用命令

复制代码
ll /root
2.2.4.1接下来启动hdfs集群
复制代码
./sbin/start-dfs.sh

显示如下:

复制代码
[root@master hadoop-3.2.1]# ./sbin/start-dfs.sh
Starting namenodes on [master]
Last login: Fri Aug 21 09:57:22 CST 2020 from 223.70.160.3 on pts/0
Last failed login: Fri Aug 21 11:08:27 CST 2020 from 112.17.39.78 on ssh:notty
There were 87 failed login attempts since the last successful login.
Starting datanodes
Last login: Fri Aug 21 11:09:04 CST 2020 on pts/0
node2: WARNING: /root/data/hadoop_repo/logs/hadoop does not exist. Creating.
node3: WARNING: /root/data/hadoop_repo/logs/hadoop does not exist. Creating.
node1: WARNING: /root/data/hadoop_repo/logs/hadoop does not exist. Creating.
Starting secondary namenodes [node1]
Last login: Fri Aug 21 11:09:07 CST 2020 on pts/0

如果使用hadoop 2.x 我们需要访问 50070端口

现在们使用hadoop 3.x 我们需要访问 9870端口

以我自己现在使用的为例

复制代码
#这个是hdfs
42.51.78.160:9870
#这个集群节点
42.51.78.160:8088

后面 可能启动后无法访问**42.51.78.160:8088 ** 系统缓存原因

我们需要先关闭然后重新启动集群节点

复制代码
./sbin/stop-all.sh
./sbin/start-dfs.sh
相关推荐
安科瑞刘鸿鹏172 小时前
企业配电系统中开关柜“可视化运行管理”的实现路径
大数据·运维·网络·物联网
jkyy20142 小时前
线上线下一体化,AI慢病管理突破药品零售时空限制
大数据·人工智能·健康医疗
Dxy12393102163 小时前
Elasticsearch 8.13.4 关键词如何高亮显示
大数据·elasticsearch
LJ97951113 小时前
重塑媒体关系:你的品牌需要一个智能发布引擎
大数据
李迟3 小时前
2025年12月个人工作生活总结
大数据·elasticsearch·生活
小北方城市网3 小时前
第 10 课:Python 全体系实战整合与职业进阶指南(完结篇)
大数据·开发语言·数据库·python
licongmingli3 小时前
vue2 基于虚拟dom的下拉选择框,保证大数据不卡顿,仿antd功能和样式
大数据·前端·javascript·vue.js·anti-design-vue
ELI_He9994 小时前
SeaTunnel 编译
大数据·mysql·elasticsearch·database·flume
IT_xiao小巫4 小时前
2025年终总结
大数据·人工智能