莫问天涯路几重,轻衫侧帽且从容。这篇文章主要讲述写给大忙人看Hadoop完全分布式集群搭建相关的知识,希望能为你提供帮助。
Hadoop的运行模式
Hadoop一般有三种运行模式,分别是:
- 单机模式(StandaloneMode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统。,用于开发和调试。
- 伪分布式模式(Pseudo Distrubuted Mode),使用的是分布式文件系统,守护进程运行在本机机器,模拟一个小规模的集群,在一台主机模拟多主机,适合模拟集群学习。
- 完全分布式集群模式(Full Distributed Mode),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 <
<
EOF192.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
设置免密登录分布式集群搭建需要主节点能够免密登录至各个从节点上。因此,需要在主节点上生成公钥,把将主节点的公钥在从节点中加入授权。
- 在192.168.0.236上生成公钥。
ssh-keygen -t rsa
- 在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
这时还不是免密登录登录的,需要输入用户名和密码。
- 将公钥追加到各个从节点的授权里。
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 -xzvfhadoop-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 -xzvfhadoop-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
【写给大忙人看Hadoop完全分布式集群搭建】因为是在主节点上修改的,还需要发送到各个从节点:
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/
推荐阅读
- Linux之uniq命令
- 基于Hadoop的产品大数据分布式存储优化
- 如何使用 .NET Core 安全地加/解密文件#yyds干货盘点#
- 基于RK3399OpenHarmony富设备软件音频解码方案
- QT读取剪切板内容-实现复制粘贴文本和图片
- DVC - 数据版本控制入门详解
- 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化
- #yyds干货盘点# Map - LinkedHashSet&Map源码解析
- 一文了解 Python 中的对象析构函数(__del__)