写给大忙人看Hadoop完全分布式集群搭建

简介: Hadoop一般有三种运行模式,分别是

Hadoop的运行模式

Hadoop一般有三种运行模式,分别是:

  • 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统。,用于开发和调试。
  • 伪分布式模式(Pseudo Distrubuted Mode),使用的是分布式文件系统,守护进程运行在本机机器,模拟一个小规模的集群,在一台主机模拟多主机,适合模拟集群学习。
  • 完全分布式集群模式(Full Distributed Mode),Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。

这里介绍的就是如何搭建一个Hadoop完全分布式集群。

安装环境介绍

准备了四个服务器,IP为192.168.0.236、192.168.0.237、192.168.0.238、192.168.0.239,其中192.168.0.236作为主节点,其他3个作为从节点。具体版本信息如下:

  • CentOS 7.4
  • JDK 8
  • Hadoop 2.10.0

准备安装环境

设置主机名

在各个服务器上修改对应的主机名:

#在192.168.0.236上执行:
hostnamectl set-hostname onemore-hadoop-master

#在192.168.0.237上执行:
hostnamectl set-hostname onemore-hadoop-slave1

#在192.168.0.238上执行:
hostnamectl set-hostname onemore-hadoop-slave2

#在192.168.0.239上执行:
hostnamectl set-hostname onemore-hadoop-slave3

关闭SELINUX

编辑/etc/selinux/config文件:

vi /etc/selinux/config

SELINUX=enforcing

修改为:

SELINUX=disabled

重启服务器

reboot

设置hosts

cat >> /etc/hosts <<EOF

192.168.0.236 onemore-hadoop-master
192.168.0.237 onemore-hadoop-slave1
192.168.0.238 onemore-hadoop-slave2
192.168.0.239 onemore-hadoop-slave3
EOF

关闭防火墙

停止防火墙

systemctl stop firewalld.service

禁止防火墙开机启动

systemctl disable firewalld.service

设置免密登录

分布式集群搭建需要主节点能够免密登录至各个从节点上。因此,需要在主节点上生成公钥,把将主节点的公钥在从节点中加入授权。

  1. 在192.168.0.236上生成公钥。
ssh-keygen -t rsa
  1. 在192.168.0.236上,把公钥发送到各个从节点
scp ~/.ssh/id_rsa.pub 192.168.0.237:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.238:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.239:~/.ssh

这时还不是免密登录登录的,需要输入用户名和密码。

  1. 将公钥追加到各个从节点的授权里。

在每个从节点执行一下命令:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

安装JDK

参见之前的《详解在Linux系统中安装JDK》,这里就不再赘述了。

Hadoop环境配置

主节点配置

下载Hadoop

从北京理工大学的镜像上下载Hadoop:

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

创建文件夹

mkdir /usr/local/hadoop

解压

tar -xzvf  hadoop-2.10.0.tar.gz -C /usr/local/hadoop
配置环境变量

追加Hadoop的环境变量到/etc/profile文件中

cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin 
EOF

使环境变量生效

source /etc/profile
修改配置文件

修改core-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml

修改其内容为:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://onemore-hadoop-master:9000</value>
    </property>
</configuration>

修改hdfs-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml

修改其内容为:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/usr/local/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/usr/local/hadoop/hdfs/data</value>
    </property>
</configuration>

复制mapred-site.xml.template为mapred-site.xml

cp /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml

再修改mapred-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml

修改其内容为:

<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
   <property>
      <name>mapred.job.tracker</name>
      <value>http://onemore-hadoop-master:9001</value>
  </property>
</configuration>

修改yarn-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml

修改其内容为:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>onemore-hadoop-master</value>
    </property>
</configuration>

新建masters配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters

新增内容为:

onemore-hadoop-master

配置slaves文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves

修改其内容为:

onemore-hadoop-slave1
onemore-hadoop-slave2
onemore-hadoop-slave3

从节点配置

下面以onemore-hadoop-slave1从节点为例进行叙述,您需参照以下步骤完成onemore-hadoop-slave2和onemore-hadoop-slave3从节点的配置。

下载Hadoop

还是从北京理工大学的镜像上下载Hadoop(如果下载速度慢,可以在主节点上发送到从节点):

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

创建文件夹

mkdir /usr/local/hadoop

解压

tar -xzvf  hadoop-2.10.0.tar.gz -C /usr/local/hadoop
配置环境变量

追加Hadoop的环境变量到/etc/profile文件中

cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin 
EOF

使环境变量生效

source /etc/profile
修改配置文件

删除slaves文件

rm -rfv /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves

在主节点上把5个配置文件发送到从节点上

scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/

启动Hadoop集群

格式化namenode

第一次启动服务前需要执行词操作,以后就不需要执行了。

hadoop namenode -format

启动hadoop

/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh

访问http://onemore-hadoop-master:50070/,就可以查看Hadoop集群的相关信息了,如图:

常用命令

查看Hadoop集群的状态

hadoop dfsadmin -report

重启Hadoop

/usr/local/hadoop/hadoop-2.10.0/sbin/stop-all.sh
/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh

启动dfs服务

/usr/local/hadoop/hadoop-2.10.0/sbin/start-dfs.sh

常见错误

Error: JAVA_HOME is not set and could not be found.

这个错误大概意思是没有找到JDK的环境变量,可以修改hadoop-env.sh。

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh

增加JDK的环境变量,比如:

export JAVA_HOME=/usr/local/java/jdk1.8.0_231

因为是在主节点上修改的,还需要发送到各个从节点:

scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave2:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave3:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
相关文章
|
3月前
|
分布式计算 Ubuntu Hadoop
百度搜索:蓝易云【Ubuntu搭建全分布式Hadoop】
请注意,以上只是概述,并不包含详细的步骤和指令。搭建全分布式Hadoop是一个复杂的过程,需要对Hadoop的架构和配置有深入的理解,并熟悉Linux系统管理。建议在搭建全分布式Hadoop之前,先学习相关知识并查阅官方文档和教程,以确保正确搭建和配置Hadoop集群。
27 0
|
13天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
1天前
|
存储 分布式计算 Hadoop
基于Hadoop分布式数据库HBase1.0部署及使用
基于Hadoop分布式数据库HBase1.0部署及使用
|
7天前
|
分布式计算 负载均衡 Hadoop
Hadoop集群节点添加
Hadoop集群节点添加
|
11天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
39 9
|
12天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)
【4月更文挑战第4天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)
22 4
|
15天前
|
存储 分布式计算 Hadoop
【Hadoop】Hadoop的三种集群模式
【4月更文挑战第9天】【Hadoop】Hadoop的三种集群模式
|
16天前
|
分布式计算 Hadoop Java
centos 部署Hadoop-3.0-高性能集群(一)安装
centos 部署Hadoop-3.0-高性能集群(一)安装
16 0
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop集群基本测试
Hadoop集群基本测试
26 0
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop分布式
基于Java的分布式计算平台,旨在处理海量数据。【2月更文挑战第19天】
25 2

相关实验场景

更多