简介:通过本篇博客,你可以搭建起一个具有3个虚拟机结点:node1、node2和node3的hadoop集群,当然包括yarn的配置,这并不复杂,实测可用。在此基础上,可以搭建hive以及impala,不需要为兼容性担心。不过本篇博客不涉及hive和impala。
希望本篇文章对您有用!
相关软件链接:https://pan.baidu.com/s/1y_dCAACBdbSEPztiQrLHVA?pwd=h00i
提取码:h00i
一、材料准备
1、操作系统:CentOs7
版本如下
CentOS-7-x86_64-DVD-1810.iso
2、Hadoop
hadoop-3.3.4.tar.gz
3、JDK
jdk-8u361-linux-x64.tar.gz
二、基本环境
1、安装虚拟机
step1:使用VM自动安装即可
初始用户建议命名为hadoop
安装完成后进入桌面如图所示⬇⬇⬇
step2:根据step1中安装的虚拟机完全克隆三台虚拟机,名称分别为node1,node2和node3
调整node1配置为:2核4线程;4GB内存;20G硬盘
node2和node3配置为:1核2线程;2GB内存;20G硬盘
2、虚拟机基本环境配置
在安装hadoop之前,需要做ip映射、ssh免密登录等操作
切换为root
su root
(1)修改主机名
三台主机分别执行
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
(2)静态IP
需要修改或添加:BOOTPROTO、IPADDR、NETMASK、DNS1、GATEWAY。有的教程只让修改前两项可能导致无法联网。不妨碍安装hadoop。
图示为node1修改后内容
vim /etc/sysconfig/network-scripts/ifcfg-ens33
node2:192.168.88.101
node3:192.168.88.102
重启网卡,三台主机都要做
systemctl restart network
(3)配置主机名映射
三台主机都要做。
vim /etc/hosts
添加
192.168.88.100 node1
192.168.88.101 node2
192.168.88.102 node3
(4)免密登录
每台机器先执行,一直回车即可
ssh-keygen -t rsa -b 4096
然后每台机器都需要执行
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
同理为hadoop用户配置免密登录
(6)关闭防火墙
三台都要做
systemctl stop firewalld
systemctl disable firewalld
(7)关闭SELinux
三台都要做
vim /etc/sysconfig/selinux
'''
修改SELINUX=disabled
'''
重启虚拟机
三、安装JDK
jdk上传可以使用scp也可以使用xftp,上传位置任意,建议放到/tmp
scp jdk-8u361-linux-x64.tar.gz root@192.168.88.100:/tmp
切换root用户
(1)安装
/export/server文件夹存放安装的软件
mkdir -p /export/server
进入server
cd /export/server
解压JDK
tar -zxvf /tmp/jdk-8u361-linux-x64.tar.gz -C /export/server
创建jdk软链接(相当于快捷方式)
ln -s /export/server/jdk1.8.0_361 /export/server/jdk
(2)配置环境变量
vim /etc/profile
追加以下内容
export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin
使环境变量生效
source /etc/profile
配置java执行程序软链接
rm -f /usr/bin/java
ln -s /export/server/jdk/bin/java /usr/bin/java
验证,如图所示即为成功
java -version
剩余结点重复同样操作配置JDK
四、安装Hadoop3.3.4
用root用户
(1)将hadoop文件放到虚拟机中
scp hadoop-3.3.4.tar.gz root@192.168.88.100:/tmp
解压。除了需要写配置文件,流程基本和安装JDK一样
tar -zxvf /tmp/hadoop-3.0.0.tar.gz -C /export/server/
创建软链接
ln -s hadoop-3.3.4/ hadoop
(2)修改配置文件
1)配置workers
vim /export/server/hadoop/etc/hadoop/workers
让hadoop知道集群有哪几个结点。
node1
node2
node3
2)配置hadoop-env.sh文件
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
3)配置core-site.xml文件
vim /export/server/hadoop/etc/hadoop/core-site.xml
写入以下内容
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!-- 整合hive 配置hadoop时可以先不用加-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
4)配置hdfs-site.xml文件
vim /export/server/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/nn</value>
</property>
<property>
<name>dfs.namenode.hosts</name>
<value>node1,node2,node3</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dn</value>
</property>
</configuration>
(3)创建数据目录
node1节点
mkdir -p /data/nn
mkdir /data/dn
node2和node3节点
mkdir -p /data/dn
(4)将node1关于hadoop的配置发送到node2和node3
PS:建议只发送修改的配置文件🤔,否则发送时间会有点长😣…
scp -r hadoop-3.3.4 node2:/export/server
scp -r hadoop-3.3.4 node3:/export/server
在node2和node3中分别创建关于hadoop的软链接
ln -s /export/server/hadoop-3.3.4 /export/server/hadoop-3.3.4
(5)配置hadoop环境变量
vim /etc/profile
追加,这样可以直接在shell调用hadoop的命令
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(6)授权hadoop用户
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export
(7)格式化namenode
😡😡注意用hadoop用户、注意用hadoop用户😡😡
hadoop namenode -format
(8)启动集群
直接执行
start-dfs.sh
停止集群用下面的命令
stop-dfs.sh
浏览器输入一下地址,可以进入hdfs的webUI
192.168.88.100:9870
(9)mapreduce和yarn配置
以下文件都在/export/server/hadoop/etc/hadoop目录下,用vim编辑即可
①mapred-env.sh
export JAVA_HOME=/export/server/jdk
# 设置历史服务器进程为1000MB
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
# 设置日志级别为INFO
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
②mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/data/mr-history/tmp</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/data/mr-history/done</value>
</property>
</configuration>
③yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定YARN的主角色(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/nm-local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/data/nm-log</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>node1:8089</value>
</property>
</configuration>
④yarn-env.sh
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
分发修改后的配置文件
scp mapred-env.sh mapred-site.xml yarn-env.sh yarn-site.xml node2:/export/server/hadoop/etc/hadoop
scp mapred-env.sh mapred-site.xml yarn-env.sh yarn-site.xml node3:/export/server/hadoop/etc/hadoop
此时启动hadoop集群后,再输入
start-yarn.sh
即可穷的那个yarn,浏览器输入
192.168.88.100:8088
即可进入yarn的webUI。如果你给集群提交了一个任务,你可以在这里看到它。