Loading

Hadoop安装配置

1.虚拟机环境准备

安装三台虚拟机

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld.service

创建操作用户

useradd hduser
passwd hduser

# 编辑文件
vim /etc/sudoers

添加 hduser ALL=(ALL) NOPASSWD:ALL

要放到%wheel这行下面

%wheel  ALL=(ALL)       ALL
hduser ALL=(ALL) NOPASSWD:ALL

修改主机名称

# 三台主机分别 hadoop1 hadoop2 hadoop3
vim /etc/hostname

安装JDK1.8

在/opt目录下创建文件夹,并修改所属主和所属组

# 在/opt目录下创建module、software文件夹
[root@hadoop1 ~]# mkdir /opt/module
[root@hadoop1 ~]# mkdir /opt/software

# 修改module、software文件夹的所有者和所属组均为hduser用户
[root@hadoop1 ~]# chown hduser:hduser /opt/module
[root@hadoop1 ~]# chown hduser:hduser /opt/software

# 查看module、software文件夹的所有者和所属组
[root@hadoop1 opt]# ll
总用量 0
drwxr-xr-x. 4 hduser hduser 46 2月   2 21:48 module
drwxr-xr-x. 2 hduser hduser 33 2月   2 21:31 software

分别配置 Linux 克隆机主机名称映射 hosts 文件,打开/etc/hosts

vim /etc/hosts

如下了内容

192.168.2.111 hadoop1
192.168.2.112 hadoop2
192.168.2.113 hadoop3

2.无密钥配置

切换用户

su hduser
# 在hadoop1中生成公钥私钥(然后敲(三个回车)
ssh-keygen -t rsa

# 在hadoop1中将公钥拷贝到要免密登录的目标机器上
# 注意自己也需要分发,如当前是 hadoop1 也需要 分发 hadoop1
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3

# 查看是否免密设置成功,三台机器分别执行,如下图为设置成功
cat /home/mitchell/.ssh/authorized_keys

注意:
还需要在 hadoop1 上采用 root 账号,配置一下无密登录到 hadoop1、hadoop2、 hadoop3 服务器上;
还需要在 hadoop1 上采用 hduser 账号配置一下无密登录到 hadoop1、hadoop2、 hadoop3 服务器上。
还需要在 hadoop2 上采用 hduser 账号配置一下无密登录到 hadoop1、hadoop2、 hadoop3 服务器上。
还需要在 hadoop3 上采用 hduser 账号配置一下无密登录到 hadoop1、hadoop2、 hadoop3 服务器上。

1.进入hadoop安装包目录 并解压到/opt/module/

tar -zxvf hadoop-3.3.4.tar.gz -C /opt/module/

配置环境变量

# HADOOP
export HADOOP_HOME=/opt/module/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
vim 

3.Hadoop相关配置

3.0 集群规划
hadoop1:NameNode、DataNode、 NodeManager
hadoop2:DataNode、 ResourceManager、NodeManager
hadoop3:SecondaryNameNode、DataNode、 NodeManager

注意:
NameNode和SecondaryNameNode不要安装在同一台服务器
ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上

3.1 core 配置

cd /opt/module/hadoop-3.3.4/etc/hadoop/
vim core-site.xml 
<configuration>
        <!-- 指定 NameNode 的内部通讯地址,这里推荐使用 8020 端口 -->
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop1:8020</value>
    </property>

    <!-- 指定数据储存目录,默认是在 /tmp 路径 -->
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-3.3.4/data</value>
    </property>

    <!-- 指定 hdfs 网页登入的静态用户 -->
    <property>
            <name>hadoop.http.staticuser.user</name>
            <value>hduser</value>
    </property>
</configuration>

3.2 Hdfs配置

cd /opt/module/hadoop-3.3.4/etc/hadoop/
vim hdfs-site.xml
<configuration>

        <!-- 指定 NameNode 的 WEB 访问地址 -->
        <property>
                <name>dfs.namenode.http-address</name>
                <value>hadoop1:9870</value>
        </property>

        <!-- 2NN WEB 访问地址 -->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop3:9868</value>
        </property>

</configuration>

3.3 yarn配置

cd /opt/module/hadoop-3.3.4/etc/hadoop/
vim yarn-site.xml
<configuration>

    <!-- 指定 MR 走的 shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定 ResourceManger 的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop2</value>
    </property>

    <!-- 指定 类路径 -->
    <property>
        <name>yarn.application.classpath</name>
        <value>/opt/module/hadoop-3.3.4/etc/hadoop:/opt/module/hadoop-3.3.4/share/hadoop/common/lib/*:/opt/module/hadoop-3.3.4/share/hadoop/common/*:/opt/module/hadoop-3.3.4/share/hadoop/hdfs:/opt/module/hadoop-3.3.4/share/hadoop/hdfs/lib/*:/opt/module/hadoop-3.3.4/share/hadoop/hdfs/*:/opt/module/hadoop-3.3.4/share/hadoop/mapreduce/*:/opt/module/hadoop-3.3.4/share/hadoop/yarn:/opt/module/hadoop-3.3.4/share/hadoop/yarn/lib/*:/opt/module/hadoop-3.3.4/share/hadoop/yarn/*</value>
    </property>

    <!-- 开启日志聚集功能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>

    <!-- 日志聚集服务地址,注入到历史服务器 -->
    <property>
        <name>yarn.log.server.url</name>
        <value>http://hadoop1:19888/jobhistory/logs</value>
    </property>

    <!-- 日志的保留天数(单位秒) -->
    <property>
        <name>yarn.log-aggregation-seconds</name>
        <value>604800</value>
    </property>

</configuration>

3.4 mapred 配置

cd /opt/module/hadoop-3.3.4/etc/hadoop/
vim mapred-site.xml
<configuration>

    <!-- 指定 MR 程序运行在 yarn 上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <!-- 历史服务器内部地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop1:10020</value>
    </property>

    <!-- 历史服务器 WEB 地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop1:19888</value>
    </property>

</configuration>

3.5 worker 配置

vim workers

# 加入以下内容
hadoop1
hadoop2
hadoop3

4.群起集群

如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode(注意:格式
化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找 不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式
化。)

# 【hadoop1】初始化,只需要执行一次,后续可以直接启动
hdfs namenode -format

# 【hadoop1】启动 和 关闭 hdfs
start-dfs.sh
stop-dfs.sh
 
# 【hadoop2】启动 和 关闭 yarn
start-yarn.sh
stop-yarn.sh

# 【hadoop1】启动 和关闭 历史服务器
mapred --daemon start historyserver
mapred --daemon stop historyserver

2.2.5集群崩溃处理方法

rm -rf data/ logs/
hdfs namenode -format
sbin/start-dfs.sh
posted @ 2023-02-04 14:15  在贝加尔湖畔  阅读(112)  评论(0编辑  收藏  举报