Hadoop分为本地模式、伪分布式、和完全分布式模式,本地模式指在一台服务器上配置Hadoop,伪分布式还是一台服务器但是多进程运行,完全分布式在不同服务器上运行,由于学习阶段没有足够多的服务器可供使用,所以采用通过vmware虚拟机搭建Hadoop完全分布式。
安装JDK
官网下载jdk1.8:https://www.oracle.com/java/technologies/javase-downloads.html (有点慢)
可以下载华为镜像:https://repo.huaweicloud.com/java/jdk/8u192-b12/
#解压
tar -zxvf jdk-8u231-linux-x64.tar.gz -C /opt/module
配置环境变量
vim /etc/profile
#在profile添加内容:
$JAVA_HOME=/opt/module/jdk1.8.0_192
$PATH=$PATH:$JAVA_HOME/bin
#更新
source /etc/profile
测试jdk安装是否成功 java -version
安装Hadoop
官网下载:https://hadoop.apache.org/releases.html
#解压
tar -zxvf hadoop-2.7.7.tar.gz -C /opt/module
配置环境变量
vim /etc/profile #增加内容 export HADOOP_HOME=/opt/module/hadoop-2.7.7 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
#更新
source /etc/profile
测试Hadoop是否安装成功 hadoop version
准备虚拟机
克隆三台虚拟机,关闭防火墙、配置网络保证三台虚拟机之间网络的通畅性。由于NameNode和SecondaryNameNode所需要的内存是1:1的关系所以不能同时放在一个服务器上会降低机器性能(当然也是出于数据可靠性方面的考虑,SecondaeyNameNode能在NameNode出现故障时候恢复一部分数据剩下部分未更新的编辑日志不能更新外是可以代替NameNode工作的),同样ResourceManager不能和NN、2NN在同一个服务器,所以至少需要一台服务器。
Hadoop-101 | hadoop-102 | hadoop-103 | |
HDFS | NameNode DataNode |
DataNode |
SecondaryNameNode DataNode |
YARN | NodeManager |
ResourceManager NodeManager |
NodeManager |
配置集群
集群的配置在可以在hadoop-101一台服务器上配置,通过xsync分发到集群其他服务器
1)核心配置文件
配置NameNode地址时如果没有配置hosts文件可以写IP地址,记住端口号9000
cd /opt/module/hadoop-2.7.7/
vim etc/hadoop/core-site.xml
#增加内容
<!--指定HDFS的NameNode地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-101:9000</value>'
</property>
<!--配置文件存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.7/data/tmp</value>
</property>
2) HDFS配置文件
vim hadoop-env.sh
#加入jdk环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_231
vim etc/hadoop/hdfs-site.xml
#增加新配置信息
<!--hdfs的副本数,默认为3时可以不写-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop的SecondaryNameNode-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop-103:50090</value>
</property>
3)YARN配置
vim etc/hadoop/yarn-env.sh
#加入jdk环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_231
vim etc/hadoop/yarn-site.xml
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定Yarn的ResorceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-102</value>
</property>
4)MapReduce配置文件
vim mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_231
#加入jdk环境变量
vim etc/hadoop/mapred-site.xml
<!--指定mr在yarn上运行 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
简单的完全分布式已经配置完成,可以通过sbin/start-dfs.sh启动测试!