Centos7安装Hadoop

下载

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/

解压


tar -zxvf hadoop-3.3.1.tar.gz -C /opt/software/

配置 jdk和 hadoop HOME

切换root用户之后,在 /etc/profile.d/ 目录下,创建一个文件: touch my_env.sh,编辑写入内容:


# JAVA_HOME

export JAVA_HOME=/opt/software/jdk1.8.0_311

export PATH=$PATH:$JAVA_HOME/bin

# Hadoop

export HADOOP_HOME=/opt/software/hadoop-3.3.1

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

克隆hadoop102,hadoop103,hadoop104主机

克隆三台主机,ip分别是:192.168.80.102, 192.168.80.103, 192.168.80.104,记得修改主机名,本地域名解析配置,网络ip配置

/etc/hostname

/etc/sysconfig/network-scripts/ifcfg-ens33

/etc/hosts


# vim /etc/hosts

192.168.80.102 hadoop102

192.168.80.103 hadoop103

192.168.80.104 hadoop104

# vim /etc/hostname

创建快捷同步文件脚本

可以先看一下 path 环境变量的值:echo $PATH,可以看到系统会自动读取 /home/xiaohua/bin 目录下的内容,因此我们把这个脚本文件直接创建在 /home/xiaohua/bin 目录下,这样就不需要手动添加环境变量了。

先进入到 /home/ 目录下,手动创建 bin 目录,编辑脚本:vim xsync


#!/bin/bash

# 1. 判断参数个数

if [ $# -lt 1 ]

then

        echo Not Enough Arguement!

        exit;

fi

# 2. 遍历集群所有机器

for host in hadoop102 hadoop103 hadoop104

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

免密登录别的主机

在每台主机上执行:ssh-keygen -t rsa,三次回车即可。

然后在102主机上执行命令:ssh-copy-id hadoop103,ssh-copy-id hadoop104

其它主机也进行类似操作即可。

之后在102上尝试 ssh hadoop103, ssh hadoop104,看能否登录成功。

同步hadoop程序到另外两台主机

集群配置

core-site.xml配置


        <!--指定NameNode的地址,8020是hadoop集群内部通信的端口,实际公司项目中一般会配置为9000,9080端口-->

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://hadoop102:8020</value>

        </property>

        <!--指定hadoop数据的存储目录-->

        <property>

                <name>hadoop.tmp.dir</name>

                <value>/opt/software/hadoop-3.3.1/data</value>

        </property>

hdfs-site.xml配置


    <!--nn web端访问地址-->

    <property>

        <name>dfs:namenode.http-address</name>

        <value>hadoop102:9870</value>

    </property>

    <!--2nn web端访问地址-->

    <property>

        <name>dfs:namenode.secondary.http-address</name>

        <value>hadoop104:9868</value>

    </property>

mapred-site.xml配置


<!--指定 MapReduce 程序运行在 Yarn 上-->

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

yarn-site.xml配置


    <!--指定MR走shuffle-->

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce-shuffle</value>

</property>

    <!--指定 ResourceManager 的地址-->

<property>

    <name>yarn.resourcemanager.hostname</name>

    <value>hadoop103</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>

配置works

整个集群上有几台节点(主机),就配置几个


# vim works

hadoop102

hadoop103

hadoop104

注意:别有任何空格,多余的行,然后再分发该文件到其他主机节点。

初始化

在你的namenode节点上,此处就是102主机上之命令:

hdfs namenode -format

同步102主机的配置文件到103,104

在102主机上,进入目录:cd /opt/software/hadoop-3.3.1/etc/,执行命令:xsync hadoop/ 即可。

... 文章参考:https://www.cnblogs.com/zhi-leaf/p/11496877.html

编辑

评论 0

还没有评论,来说两句吧。

发表评论