[大数据]Hadoop集群搭建

85 阅读3分钟

准备三台虚拟机(hadoop01, hadoop02, hadoop03),虚拟机配置要求,单台虚拟机:内存4G,硬盘50G。要求三台机器可以免密登陆 三台机器的规划

hadoop01hadoop02hadoop03
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerResourceManager、NodeManager NodeManager

所有虚拟机操作

  1. 安装必要环境
sudo yum install -y epel-release
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
  1. 修改主机名称
sudo hostnamectl --static set-hostname hadoop01
  1. 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
  1. 创建用户
sudo useradd fangxi
sudo passwd fangxi
  1. 重启
reboot
  1. 配置fangxi用户具有root权限
vi sudo
# 修改/etc/sudoers文件,找到下面一行(91行),在root下面添加一行,如下所示
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
fangxi   ALL=(ALL)     ALL
  1. 创建操作文件夹,我在 /opt下创建的
sudo mkdir module
sudo mkdir software
  1. 修改module、software文件夹的所有者cd
sudo chown fangxi:fangxi /opt/module /opt/software

至此单台虚拟机完成,可以创建快照克隆了。

操作hadoop02机器

  1. 安装jdk 下载地址:https://story-has-you.oss-cn-shanghai.aliyuncs.com/jdk-8u212-linux-x64.tar.gz
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
# 环境变量
sudo vim /etc/profile.d/my_env.sh
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile.d/my_env.sh
  1. 安装hadoop 下载地址: https://story-has-you.oss-cn-shanghai.aliyuncs.com/hadoop-3.1.3.tar.gz
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module
# 环境变量
sudo vim /etc/profile.d/my_env.sh
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

source /etc/profile.d/my_env.sh
  1. 配置免密登录,三台机器都执行
ssh-keygen -t rsa

ssh-copy-id 10.211.55.39
ssh-copy-id 10.211.55.40
ssh-copy-id 10.211.55.41
  1. 创建一个同步的脚本,以便以后在集群间共享文件 vim xsync
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in 10.211.55.39 10.211.55.40 10.211.55.41
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done
# 修改脚本 xsync 具有执行权限
chmod +x xsync
# 将脚本移动到/bin中,以便全局调用
sudo mv xsync /bin/
# 测试
xsync /bin/xsync
  1. 在集群之前拷贝jdk和hadoop
xsync jdk1.8.0_212/
xsync hadoop-3.1.3/
  1. 拷贝之后,需要在其他机器上执行
source /etc/profile.d/my_env.sh

至此,三台机器已经全部操作完毕

操作Hadoop01机器配置

配置hadoop,进入 /opt/module/hadoop-3.1.3/etc/hadoop

  1. 配置 core-site.xml
    <!-- HDFS地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://10.211.55.40:8020</value>
    </property>
    <property>
        <name>hadoop.data.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <property>
        <name>hadoop.proxyuser.fangxi.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.fangxi.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>fangxi</value>
    </property>
  1. 配置hdfs-site.xml
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file://${hadoop.data.dir}/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file://${hadoop.data.dir}/data</value>
    </property>
        <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>file://${hadoop.data.dir}/namesecondary</value>
    </property>
        <property>
        <name>dfs.client.datanode-restart.timeout</name>
        <value>30</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>10.211.55.41:9868</value>
    </property>
  1. 配置yarn-site.xml
	<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>10.211.55.41</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
  1. 配置mapred-site.xml
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  1. 配置workers,workers配置所有的从机
10.211.55.39
10.211.55.40
10.211.55.41
  1. 同步到其他机器
xsync hadoop/

启动集群

在hadoop01上执行

  1. 先格式化namenode
hdfs namenode -format
  1. 启动集群
start-dfs.sh

在hadoop03上执行, ResourceManager机器上 3. 启动YARN

start-yarn.sh

为了查看程序的历史运行情况,需要配置一下历史服务器(放在hadoop02)。具体配置步骤如下

  1. 配置mapred-site.xml
<!-- 历史服务器端地址 地址可以任意指定 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>10.211.55.40:10020</value>
    </property>
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>10.211.55.40:19888</value>
    </property>

配置日志的聚集,放在hadoop02

  1. 配置yarn-site.xml
	<property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log.server.url</name>
        <value>http://10.211.55.40:19888/jobhistory/logs</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>

最后全部分发配置

xsync hadoop/

在hadoop02上启动历史服务器

 mapred --daemon start historyserver

启动成功之后,访问:http://10.211.55.40:9870/dfshealth.html#tab-overview,访问:http://10.211.55.41:8088/cluster