参考文章:
http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/
https://www.cnblogs.com/ocean-sky/p/8397778.html
1、Hadoop简介
Hadoop是一个又Apache基金会所开发的分布式系统基础架构。
主要解决海量数据的存储和分析计算问题。
Google的三篇论文:
GFS ==> HDFS
Map-Reduce ==> MR
BigTable ==> HBase
Hadoop的组成部分
Hadoop1.x | Hadoop2.x |
---|---|
MapReduce(计算+资源调度) | MapReduce(计算) |
Yarn(资源调度) | |
HDFS(数据存储) | HDFS(数据存储) |
Common(辅助工具) | Hadoop1.x |
HDFS架构
1、Name Node
2、Data Node
3、Secondary Name Node
Yarn架构
1、Resource Manager
2、Node Manager
3、Application Master
4、Container
2、环境准备
搭建平台使用 Windows 10 + VMware + Ubuntu 20
依赖软件使用 JDK 1.8 + Hadoop 2.9.2
2.1、虚拟机的安装
2.1.1、虚拟机的3种网络配置模式
(1)桥接模式,虚拟机可以和局域网的其他主机通信,但是可能会造成IP冲突。
(2)NAT(网络地址转换),局域网其他主机不能与虚拟机通信,但是虚拟机可以通过本主机的IP代理,访问外网。
(3)仅主机模式。虚拟机与主机将成为独立的一个网络。
2.1.2、Ubuntu的安装
虚拟机的安装非常简单,基本是傻瓜式安装,需要注意的是网络的配置。如果网络配置出问题,那么将影响虚拟机与外网、内网之间的通信。
了解虚拟机的3种网络配置模式之后,选择较为方便的NAT模式安装,如此便可以省去IP地址的配置。
打开电脑上的网络配置,找到当前虚拟机使用的网络。
找到IPv4,修改IP地址和网关。
我习惯将IP的最后一位改为2,网关的最后一位改为1。
打开VMware --> 编辑 --> 虚拟网络编辑器。
保证IP地址的前缀与刚才设置的网络适配器的IP前缀相同。即VMware网络适配器的IP地址需要与虚拟机的IP地址在同一网段。
设置网关,使其与网络适配器的相同。
配置成功后,理应可以通信了。譬如ping一下百度。
Note:新安装Ubuntu的root用户是没有密码的,需要输入命令:
sudo passwd root
输入密码后设置成功。
2.1.3、远程连接
虚拟机的远程连接需要打开sshd服务(有可能安装Ubuntu之后,就已经完善了)。
sudo apt-get install openssh-server #安装sshd
service --status-all #查看以经启动的服务
sudo ps -e |grep ssh #查看ssh是否启动
2.1.4、JDK和Hadoop的安装
JDK和Hadoop的安装包可自行到官网下载。
uname -a #查看Linux主机信息,依此下载适配的jdk、Hadoop
下载完后上传到虚拟机上(可以拖拽上传)。
创建两个文件夹。
sudo mkdir /opt/software #存放压缩包
sudo mkdir /opt/module #存放解压文件
将JDK和Hadoop压缩包移动至 /opt/software (便于管理)。
之后执行如下步骤。
#软件安装
tar -zxvf jdk-8u271-linux-x64.tar.gz -C /opt/module/ #解压到文件夹
tar -zxvf hadoop-2.9.2.tar.gz -C /opt/module/
sudo apt-get install vim
sudo vim /etc/profile #编辑配置文件
在/etc/profile文件末尾添加:
#配置java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_271
export PATH=$PATH:$JAVA_HOME/bin
#配置Hadoop环境变量
export HADOOP_HOME=/opt/module/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile #重新运行配置文件,使其生效
#测试
java -version
hadoop
2.2、单节点Hadoop的配置启动
2.2.1、修改主机名
sudo vim /etc/hostname
#将主机名称修改为ubuntu
reboot #修改完主机名之后需要重启,才会生效
2.2.2、添加主机IP映射
sudo vim /etc/hosts
#在文件中添加映射
192.168.83.28 ubuntu
添加完映射之后,就可以通过主机名访问了。
2.2.3、添加Hadoop的其他所需的环境变量
#继续添加环境变量
sudo vim /etc/profile
#在文件末尾加入:
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
#HADOOP VARIABLES END
#修改完后
source /etc/profile
修改hadoop运行环境文件hadoop-env.sh
cd /opt/module/hadoop-2.9.2 #先进入Hadoop安装目录
sudo vim etc/hadoop/hadoop-env.sh
找到export JAVA_HOME那一行,将其修改为你的JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_271
#可查看JAVA_HOME
echo $JAVA_HOME
修改hadoop安装目录的权限,为了之后的有些操作会在该目录下进行的一些文件操作能够正常运行
sudo chown -R zg:zg /opt/module/hadoop-2.9.2 #-R可以递归修改所有者,将该目录以及该目录下的所有都修改
添加配置
sudo vim etc/hadoop/core-site.xml
在configuration标签中添加如下配置
<!--指定Hadoop运行时产生的文件的存储目录-->
<!--这个目录不需要自己创建,格式化的时候会自动创建-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.9.2/data/tmp</value>
</property>
<!--指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<!--之前以经做好主机映射了,这里可以直接写ubuntu-->
<value>hdfs://ubuntu:9000</value>
</property>
vim etc/hadoop/hdfs-site.xml
<!--HDFS的副本数,因为伪分布式是单节点,副本数改为1-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
2.2.4、启动HDFS
hadoop namenode –format #格式化namenode,此时会创建/opt/module/hadoop-2.9.2/data/tmp目录,如果权限不够,将不能创建目录,格式化将会失败
sbin/hadoop-daemon.sh start namenode#启动namenode
sbin/hadoop-daemon.sh start datanode#启动datanode
jps#查看启动的服务
#正常启动将会出现如下三个:
8272 DataNode
7904 NameNode
8351 Jps
测试:
(1)在虚拟机浏览器输入:ubuntu:50070
(2)在主机浏览器输入: http://ubuntu:50070/
如果虚拟机有防火墙的话,还需要关闭防火墙
#如果没有namenode,可以重新格式化namenode
cd /opt/module/hadoop-2.9.2/#进入Hadoop安装目录
rm -rf data/ logs/ #一定要删除这两个文件,否则格式化会失败
hadoop namenode –format #格式化namenode
2.2.5、配置并启动YARN
cd /opt/module/hadoop-2.9.2/etc/hadoop
sudo vim yarn-env.sh
修改JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_271
修改yarn-site.xml
sudo vim yarn-site.xml
添加如下配置
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<name>yarn.resourcemanager.hostname</name>
<value>ubuntu</value>
</property>
sudo vim mapred-env.sh
修改JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_271
修改mapred-site.xml
sudo vim mapred-site.xml
添加如下配置
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--配置历史服务器-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>ubuntu:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>ubuntu:19888</value>
</property>
sbin/yarn-daemon.sh start resourcemanager#启动resourcemanager
sbin/yarn-daemon.sh start nodemanager #启动nodemanager
测试:
(1)在虚拟机浏览器输入:ubuntu:8088
(2)在主机浏览器输入:http://ubuntu:8088/