Post List Widget

header ads

Centos7安装Hadoop




# 下载


[https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/](https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/)


# 解压

```shell

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

```


# 配置 jdk和 hadoop HOME

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

```shell

# 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


```shell

# 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`


```shell

#!/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配置

```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配置

```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配置

```xml

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

    <property>

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

        <value>yarn</value>

    </property>

```


### yarn-site.xml配置

```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

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

```shell

# 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


Post a Comment

0 Comments