CentOS7安装Hadoop集群


写在前面

  1. hadoop集群需要配置主机互信,配置方法见
  2. hadoop不应该以root用户运行,会报错,但是有解决方案,应该指定一个非root账户来运行,在core-site.xml中体现

软件下载

这里附上hadoop-3.1.3.tar.gz百度云下载地址,其它版本自行下载

解压缩

tar xzvf hadoop-3.1.3.tar.gz -C /opt/module

软件安装在哪里凭个人喜好

配置Hadoop环境变量

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 PAHT=$PATH:$HADOOP_HOME/sbin

刷新环境变量

source /etc/profile

验证

hadoop会出来一堆命令,则安装成功

修改Hadoop配置

配置项均在/opt/module/hadoop-3.1.3/etc/hadoop下,均在下列文件中的configuration节点中

  1. 修改core-site.xml
    
    
        fs.defaultFS
        hdfs://hadoop102:8020
    

    
    
        hadoop.tmp.dir
        /opt/module/hadoop-3.1.3/data
    

    
    
        hadoop.http.staticuser.user
        hadoop
    
    
    
        hadoop.proxyuser.hadoop.hosts
        *
    
    
    
        hadoop.proxyuser.hadoop.groups
        *
    
    
    
        hadoop.proxyuser.hadoop.users
        *
    
  1. 修改hdfs-site.xml
   
    
        dfs.namenode.http-address
        hadoop102:9870
    
   
    
        dfs.namenode.secondary.http-address
        hadoop104:9868
    
  1. 修改yarn-site.xml
    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    
    
        yarn.resourcemanager.hostname
        hadoop103
    

    
    
        yarn.nodemanager.env-whitelist 
	JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
    

    
    
        yarn.scheduler.minimum-allocation-mb
        512
    
    
        yarn.scheduler.maximum-allocation-mb
        4096
    

    
    
        yarn.nodemanager.resource.memory-mb
        4096
    

    
    
        yarn.nodemanager.pmem-check-enabled
        false
    
    
        yarn.nodemanager.vmem-check-enabled
        false
    
   
    
        yarn.log-aggregation-enable
        true
    
   
    
        yarn.log.server.url
        http://hadoop102:19888/jobhistory/logs
    
    
    
        yarn.log-aggregation.retain-seconds
        604800
    
  1. 修改mapred-site.xml

    
        mapreduce.framework.name
        yarn
    

    
        mapreduce.jobhistory.address
        hadoop102:10020
    

    
        mapreduce.jobhistory.webapp.address
        hadoop102:19888
    
  1. 配置workers文件
hadoop102
hadoop103
hadoop104

分发到集群的其它节点

xsync hadoop-3.1.3
xsync /etc/profile.d/my_env.sh
source /etc/profile

分发脚本见

hadoop群起脚本

#!/bin/bash
if [ $# -lt 1 ]
then
   echo "No Args Input.."
   exit ;
fi
case $1 in
"start")
        echo "=========启动hadoop集群==========="

        echo "---------启动hdfs----------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo "----------启动yarn----------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo "----------启动historyserver----------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo "=========关闭hadoop集群==========="

        echo "----------关闭historyserver----------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo "----------关闭yarn------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo "-----------关闭hdfs------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
        echo "Input Args Error..."
;;
esac

启动集群

  1. 如果是第一次启动,需要先格式化NameNode(在hadoop102节点)

注意:格式化NameNode,会产生新的集群ID,导致NameNode和DataNode的集群ID不一致,集群找不到以往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化
格式化命令:hdfs namenode -format

  1. 启动hadoop集群
    myhadoop.sh start

查看运行状态

jpsall

脚本见

结果正常如下,为433的架构

相关页面

hdfs页面:http://hadoop102:9870
yarn页面:http://hadoop103:8088
历史服务器:http://hadoop102:19888