Hadoop集群搭建
一,简单介绍
HADOOP集群具体来说包含三个模块:HDFS集群,YARN集群(两者逻辑上分离,但物理上常在一起)和Mapreduce
HDFS集群:
负责海量数据的存储,集群中的角色主要有 NameNode / DataNode
YARN集群:
负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager
Mapreduce:
它其实是一个分布式运算程序的编程框架,Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上;
二,虚拟机环境准备
虚拟机和linux环境安装可参考博客:https://blog.csdn.net/weixin_45997612/article/details/115321231
1 准备4台CentOS 7系统的虚拟机,每台内存至少为2G(正式环境中根据实际情况确定内存大小)
1.1 先将虚拟机网络编辑器的网络模式选为NAT
1.2 关闭防火墙(CentOS7采用新的firewalld,CentOS6及以前版本采用iptables,不过firewalld底层仍然调用的是iptable)
#查看防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld.service
#关闭防火墙开机启动
systemctl disable firewalld.service
1.3 修改主机名和ip映射(4台机器都要改)
#修改主机名
vi /etc/hostname
将默认的主机名localhost.localdomain 分别改为hadoop1,hadoop2,hadoop3,hadoop4
#修改ip与主机名映射
vi /etc/hosts
添加映射:把*替换为自己虚拟机的ip即可
192.168.**.*** hadoop1
192.168.**.*** hadoop2
192.168.**.*** hadoop3
192.168.**.*** hadoop4
1.4 重启虚拟机
reboot
2 配置免密登录
#生成ssh免登陆密钥
ssh-keygen
输入命令后回车,然后会有等待输入密码之类的,直接回车,一共4次回车
#在本机操作将免密密钥复制到四台机器,包括本机
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
#验证是否登录成功
ssh hadoop2
显示Last login: Thu Aug 13 10:28:07 2020 from 192.168.**.* 表示登录成功
#退出登录
exit
三,安装包
所需安装包:(jdk-8u161-linux-x64.tar.gz与hadoop-2.9.2.tar.gz,也可自己在官网下载)
链接:https://pan.baidu.com/s/1gWx6yQoWrKA3pfFeAY_pSQ
提取码:0r0p
四,安装与配置
1,创建文件夹,用来存放安装包(4台机器都需创建)
#创建目录/home/hadoop
mkdir /home/hadoop
# 然后分别创建 app hadoop java文件夹
mkdir /home/hadoop/app mkdir /home/hadoop/hadoop mkdir /home/hadoop/java
#文件夹含义
app:存放上传的软件
java:存放jdk
hadoop:hadoop安装目录
目录结构如下:
2, 安装JDK(4台机器都需安装)
2.1 将jdk-8u161-linux-x64.tar.gz上传到 /home/hadoop/app
2.2 解压jdk
#进入app目录
cd /home/hadoop/app
#解压
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /home/hadoop/java
2.3 将java添加到环境变量中
vim /etc/profile
#在文件最后添加
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
#刷新配置
source /etc/profile
3, hadoop1机器上安装hadoop,并配置
3.1 解压
#进入app目录
cd /home/hadoop/app
#将hadoop-2.9.2.tar.gz解压到 hadoop文件夹
tar -zxvf hadoop-2.9.2.tar.gz -C /home/hadoop/hadoop
3.2 配置slaves文件
slaves就是指定DataNode启动在哪台机器上
它会陆续启动其他三个机器上的datanode,出现等待时,直接输入登录密码即可
vi /home/hadoop/hadoop/hadoop-2.9.2/etc/hadoop下的slaves文件中localhost 改为
hadoop2
hadoop3
hadoop4
3.3 配置hadoop(在/home/hadoop/hadoop/hadoop-2.9.2/etc/hadoop目录下)
第一个:hadoop-env.sh
vim hadoop-env.sh
#第27行
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
第二个:core-site.xml
<configuration>
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/hadoop-2.9.2/tmp</value>
</property>
<!-- 设置Hadoop的代理用户 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
第三个:hdfs-site.xml
<configuration>
<!-- 指定HDFS副本的数量,默认为3个 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定第一个namenode地址和访问端口 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:50070</value>
</property>
<!-- 指定第二个namenode地址和访问端口 -->
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop1:50090</value>
</property>
</configuration>
第四个: 将mapred-site.xml.template重命名为mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
编辑mapred-site.xml
<configuration>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
第五个:yarn-site.xml
<configuration>
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.4 将hadoop添加到环境变量
vi /etc/proflie
#在文件末尾加入以下内容
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.9.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#刷新配置
source /etc/profile
4,远程复制(将配置好的hadoop复制到其他3台机器)
scp -r /home/hadoop/hadoop root@hadoop2:/home/hadoop
scp -r /home/hadoop/hadoop root@hadoop3:/home/hadoop
scp -r /home/hadoop/hadoop root@hadoop4:/home/hadoop
目录结构:
五,启动
在hadoop1上操作:
5.1 格式化namenode
hdfs namenode -format (或者hadoop namenode -format)
5.2 启动hadoop
#先启动HDFS
sbin/start-dfs.sh
#再启动YARN
sbin/start-yarn.sh
5.3 验证是否启动成功
#使用jps命令验证,有以下进程表示启动成功
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
5.4 查看图形化界面
#在win10上配置ip映射(c:/windows/system32/drivers/etc)
192.168.**.*** hadoop1
192.168.**.*** hadoop2
192.168.**.*** hadoop3
192.168.**.*** hadoop4
#然后浏览器访问
http://hadoop1:50070 (HDFS管理界面)
http://hadoop1:8088 (MR管理界面)